emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master e3d9ee5: Allow to use the old key processing code o


From: Eli Zaretskii
Subject: [Emacs-diffs] master e3d9ee5: Allow to use the old key processing code on MS-Windows
Date: Fri, 31 Jul 2015 09:14:46 +0000

branch: master
commit e3d9ee522fce388db67f1f12007660fd3f0ef001
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Allow to use the old key processing code on MS-Windows
    
    * src/w32fns.c (syms_of_w32fns) <w32-use-fallback-wm-chars-method>:
    New variable.
    (w32_wnd_proc): Use it to invoke the old code that processed
    character keys, as fallback, when this variable is non-nil.  Fix
    typos in comments.  (Bug#19994)
---
 src/w32fns.c |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/w32fns.c b/src/w32fns.c
index fecdf7c..34e2720 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2858,7 +2858,7 @@ get_wm_chars (HWND aWnd, int *buf, int buflen, int 
ignore_ctrl, int ctrl,
             || msg.message == WM_UNICHAR))
     {
       /* We extract character payload, but in this call we handle only the
-        characters which comes BEFORE the next keyup/keydown message.  */
+        characters which come BEFORE the next keyup/keydown message.  */
       int dead;
 
       GetMessageW(&msg, aWnd, msg.message, msg.message);
@@ -2962,7 +2962,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, 
UINT wParam,
      The "usual" message pump calls TranslateMessage() for EVERY event.
      Emacs calls TranslateMessage() very selectively (is it needed for doing
      some tricky stuff with Win95???  With newer Windows, selectiveness is,
-     most probably, not needed - and harms a lot).
+     most probably, not needed -- and harms a lot).
 
      So, with the usual message pump, the following call to TranslateMessage()
      is not needed (and is going to be VERY harmful).  With Emacs' message
@@ -3058,7 +3058,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, 
UINT wParam,
 
         Moreover: "traditional" layouts do not define distinct modifier-masks
         for VK_LMENU and VK_RMENU (same for VK_L/RCONTROL).  Instead, they
-        rely on the KLLF_ALTGR bit to make the behaviour of VK_LMENU and
+        rely on the KLLF_ALTGR bit to make the behavior of VK_LMENU and
         VK_RMENU distinct.  As a corollary, for such layouts, the produced
         character is the same for AltGr-* (=rAlt-*) and Ctrl-Alt-* (in any
         combination of handedness).  For description of masks, see
@@ -3153,7 +3153,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, 
UINT wParam,
                      /* In "traditional" layouts, Alt without Ctrl does not
                         change the delivered character.  This detects this
                         situation; it is safe to report this as Alt-something
-                         - as opposed to delivering the reported character
+                         -- as opposed to delivering the reported character
                          without modifiers.  */
                      if (legacy_alt_meta
                          && *b > 0x7f && ('A' <= wParam && wParam <= 'Z'))
@@ -3421,6 +3421,8 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM 
lParam)
       /* Synchronize modifiers with current keystroke.  */
       sync_modifiers ();
       record_keydown (wParam, lParam);
+      if (w32_use_fallback_wm_chars_method)
+       wParam = map_keypad_keys (wParam, (lParam & 0x1000000L) != 0);
 
       windows_translate = 0;
 
@@ -3530,7 +3532,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM 
lParam)
            wParam = VK_NUMLOCK;
          break;
        default:
-         if (w32_unicode_gui)
+         if (w32_unicode_gui && !w32_use_fallback_wm_chars_method)
            {
              /* If this event generates characters or deadkeys, do
                 not interpret it as a "raw combination of modifiers
@@ -3557,7 +3559,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM 
lParam)
 
                 However, the keypress feeders would most probably
                 expect the "standard" message pump, when
-                TranslateMessage() is called on EVERY KeyDown/Keyup
+                TranslateMessage() is called on EVERY KeyDown/KeyUp
                 event.  So they may feed us Down-Ctrl Down-FAKE
                 Char-o and expect us to recognize it as Ctrl-o.
                 Using 0 as the first argument would interfere with
@@ -3566,7 +3568,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM 
lParam)
 #endif
              /* Processing the generated WM_CHAR messages *WHILE* we
                 handle KEYDOWN/UP event is the best choice, since
-                withoug any fuss, we know all 3 of: scancode, virtual
+                without any fuss, we know all 3 of: scancode, virtual
                 keycode, and expansion.  (Additionally, one knows
                 boundaries of expansion of different keypresses.)  */
              res = deliver_wm_chars (1, hwnd, msg, wParam, lParam, 1);
@@ -9147,6 +9149,15 @@ Set this to nil to get the old behavior for repainting; 
this should
 only be necessary if the default setting causes problems.  */);
   w32_strict_painting = 1;
 
+  DEFVAR_BOOL ("w32-use-fallback-wm-chars-method"
+              w32_use_fallback_wm_chars_method,
+              doc: /* Non-nil means use old method of processing character 
keys.
+This is intended only for debugging of the new processing method.
+Default is nil.
+
+This variable has effect only on NT family of systems, not on Windows 9X.  */);
+  w32_use_fallback_wm_chars_method = 0;
+
 #if 0 /* TODO: Port to W32 */
   defsubr (&Sx_change_window_property);
   defsubr (&Sx_delete_window_property);



reply via email to

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