emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r110825: A (hopefully) better fix for


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r110825: A (hopefully) better fix for bug #1280.
Date: Wed, 07 Nov 2012 23:12:25 +0200
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 110825
fixes bug: http://debbugs.gnu.org/1280
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Wed 2012-11-07 23:12:25 +0200
message:
  A (hopefully) better fix for bug #1280.
  
   src/w32fns.c (modifier_set): Don't report modifiers from toggle key,
   such as Scroll Lock, if the respective keys are treated as
   function keys, not as modifiers.  This avoids destroying non-ASCII
   keyboard input when Scroll Lock is toggled ON.
modified:
  src/ChangeLog
  src/w32fns.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-11-07 17:33:14 +0000
+++ b/src/ChangeLog     2012-11-07 21:12:25 +0000
@@ -1,10 +1,9 @@
 2012-11-07  Eli Zaretskii  <address@hidden>
 
-       * w32fns.c (w32_wnd_proc): Don't directly handle key chords
-       including modifiers from toggle key, such as Scroll Lock, if the
-       respective keys are treated as function keys, not as modifiers.
-       This avoids destroying non-ASCII keyboard input when Scroll Lock
-       is toggled ON.  (Bug#1280)
+       * w32fns.c (modifier_set): Don't report modifiers from toggle key,
+       such as Scroll Lock, if the respective keys are treated as
+       function keys, not as modifiers.  This avoids destroying non-ASCII
+       keyboard input when Scroll Lock is toggled ON.  (Bug#1280)
        (modifier_set): Do not omit checking the Num Lock key.
 
 2012-11-07  Dmitry Antipov  <address@hidden>

=== modified file 'src/w32fns.c'
--- a/src/w32fns.c      2012-11-07 17:33:14 +0000
+++ b/src/w32fns.c      2012-11-07 21:12:25 +0000
@@ -2085,8 +2085,28 @@
 static int
 modifier_set (int vkey)
 {
-  if (vkey == VK_CAPITAL || vkey == VK_SCROLL || vkey == VK_NUMLOCK)
-    return (GetKeyState (vkey) & 0x1);
+  if (vkey == VK_CAPITAL)
+    {
+      if (NILP (Vw32_enable_caps_lock))
+       return 0;
+      else
+       return (GetKeyState (vkey) & 0x1);
+    }
+  if (vkey == VK_SCROLL)
+    {
+      if (NILP (Vw32_scroll_lock_modifier))
+       return 0;
+      else
+       return (GetKeyState (vkey) & 0x1);
+    }
+  if (vkey == VK_NUMLOCK)
+    {
+      if (NILP (Vw32_enable_num_lock))
+       return 0;
+      else
+       return (GetKeyState (vkey) & 0x1);
+    }
+
   if (!modifiers_recorded)
     return (GetKeyState (vkey) & 0x8000);
 
@@ -2974,21 +2994,12 @@
            {
              DWORD modifiers = construct_console_modifiers ();
 
-             /* Always let TranslateMessage handle AltGr key chords;
-                for some reason, ToAscii doesn't always process AltGr
-                chords correctly.  */
-             if ((!NILP (Vw32_recognize_altgr)
-                  && modifier_set (VK_LCONTROL) && modifier_set (VK_RMENU))
-                 /* If a toggle key is used as a function key, let
-                    TranslateMessage handle keys pressed while the
-                    toggled key is ON.  This avoids munging non-ASCII
-                    keys, like interpreting them as ASCII keys below,
-                    when, e.g., Scroll Lock is toggled ON.  */
-                 || (NILP (Vw32_scroll_lock_modifier)
-                     && modifier_set (VK_SCROLL))
-                 || (NILP (Vw32_enable_num_lock) && modifier_set (VK_NUMLOCK))
-                 || (NILP (Vw32_enable_caps_lock) && modifier_set 
(VK_CAPITAL)))
+             if (!NILP (Vw32_recognize_altgr)
+                 && modifier_set (VK_LCONTROL) && modifier_set (VK_RMENU))
                {
+                 /* Always let TranslateMessage handle AltGr key chords;
+                    for some reason, ToAscii doesn't always process AltGr
+                    chords correctly.  */
                  windows_translate = 1;
                }
              else if ((modifiers & (~SHIFT_PRESSED & ~CAPSLOCK_ON)) != 0)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]