From: Eli Zaretskii Date: Thu, 8 Nov 2012 17:02:56 +0000 (+0200) Subject: More fixes for bug #12806. X-Git-Tag: emacs-24.3.90~173^2~18^2~165 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=880027430c5580abf612a82273bd49b75b9fb73c;p=emacs.git More fixes for bug #12806. src/w32fns.c (modifier_set): Fix handling of Scroll Lock when the value of w32-scroll-lock-modifier is neither nil nor one of the known key modifiers. --- diff --git a/src/ChangeLog b/src/ChangeLog index 7ddff43d94d..8f2aa41bef0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-11-08 Eli Zaretskii + + * w32fns.c (modifier_set): Fix handling of Scroll Lock when the + value of w32-scroll-lock-modifier is neither nil nor one of the + known key modifiers. (Bug#12806) + 2012-11-08 Dmitry Antipov Shrink struct vectorlike_header to the only size field. diff --git a/src/w32fns.c b/src/w32fns.c index f4f5aad90b4..bb2abfe0807 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -2085,6 +2085,12 @@ sync_modifiers (void) static int modifier_set (int vkey) { + /* Warning: The fact that VK_NUMLOCK is not treated as the other 2 + toggle keys is not an omission! If you want to add it, you will + have to make changes in the default sub-case of the WM_KEYDOWN + switch, because if the NUMLOCK modifier is set, the code there + will directly convert any key that looks like an ASCII letter, + and also downcase those that look like upper-case ASCII. */ if (vkey == VK_CAPITAL) { if (NILP (Vw32_enable_caps_lock)) @@ -2094,7 +2100,15 @@ modifier_set (int vkey) } if (vkey == VK_SCROLL) { - if (NILP (Vw32_scroll_lock_modifier)) + if (NILP (Vw32_scroll_lock_modifier) + /* w32-scroll-lock-modifier can be any non-nil value that is + not one of the modifiers, in which case it shall be ignored. */ + || !( EQ (Vw32_scroll_lock_modifier, Qhyper) + || EQ (Vw32_scroll_lock_modifier, Qsuper) + || EQ (Vw32_scroll_lock_modifier, Qmeta) + || EQ (Vw32_scroll_lock_modifier, Qalt) + || EQ (Vw32_scroll_lock_modifier, Qcontrol) + || EQ (Vw32_scroll_lock_modifier, Qshift))) return 0; else return (GetKeyState (vkey) & 0x1);