changeset 31107:86c628c39931 v9.0.0888

patch 9.0.0888: MS-Windows GUI: CTRL-] does not work on Swiss keyboard Commit: https://github.com/vim/vim/commit/f10952e8c0b94bae58742f147d6779998d189892 Author: Aedin Louis Xavier <mmxael@gmail.com> Date: Wed Nov 16 12:02:28 2022 +0000 patch 9.0.0888: MS-Windows GUI: CTRL-] does not work on Swiss keyboard 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)
author Bram Moolenaar <Bram@vim.org>
date Wed, 16 Nov 2022 13:15:04 +0100
parents 795f63b36d04
children 69fabe8204f8
files src/gui_w32.c src/version.c
diffstat 2 files changed, 18 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -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"
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    888,
+/**/
     887,
 /**/
     886,