]> granicus.if.org Git - vim/commitdiff
patch 9.0.0888: MS-Windows GUI: CTRL-] does not work on Swiss keyboard v9.0.0888
authorAedin Louis Xavier <mmxael@gmail.com>
Wed, 16 Nov 2022 12:02:28 +0000 (12:02 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 16 Nov 2022 12:02:28 +0000 (12:02 +0000)
Problem:    MS-Windows GUI: CTRL-] does not work on Swiss keyboard.
Solution:   Check the key code and don't consider it as a dead key. (Aedin
            Louis Xavier, closes #11556)

src/gui_w32.c
src/version.c

index 9399c930ec51e6adfca9e2fabe32ea4af1e8a18e..6733ac062463ed6ceb5b37f7170a3c1b245e9355 100644 (file)
@@ -2152,16 +2152,25 @@ process_message(void)
 
            if (len <= 0)
            {
-               if (   dead_key == DEAD_KEY_SET_DEFAULT
-                   && (GetKeyState(VK_CONTROL) & 0x8000)
-                   && (   (vk == 221 && scan_code == 26) // AZERTY CTRL+dead_circumflex
-                       || (vk == 220 && scan_code == 41) // QWERTZ CTRL+dead_circumflex
-                      )
-                  )
+               int wm_char = NUL;
+
+               if (dead_key == DEAD_KEY_SET_DEFAULT
+                       && (GetKeyState(VK_CONTROL) & 0x8000))
+               {
+                   if (   // AZERTY CTRL+dead_circumflex
+                          (vk == 221 && scan_code == 26)
+                          // QWERTZ CTRL+dead_circumflex
+                       || (vk == 220 && scan_code == 41))
+                       wm_char = '[';
+                   if (   // QWERTZ CTRL+dead_two-overdots
+                          (vk == 192 && scan_code == 27))
+                       wm_char = ']';
+               }
+               if (wm_char != NUL)
                {
                    // post WM_CHAR='[' - which will be interpreted with CTRL
                    // still hold as ESC
-                   PostMessageW(msg.hwnd, WM_CHAR, '[', msg.lParam);
+                   PostMessageW(msg.hwnd, WM_CHAR, wm_char, msg.lParam);
                    // ask _OnChar() to not touch this state, wait for next key
                    // press and maintain knowledge that we are "poisoned" with
                    // "dead state"
index 08c05f3a516de63bdae281ace49299bb640ae9fd..fcc6719c37cd5527794b5d9661738aae93890a31 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    888,
 /**/
     887,
 /**/