changeset 31940:03188d05289a v9.0.1302

patch 9.0.1302: on a Belgian keyboard CTRL-] does not work Commit: https://github.com/vim/vim/commit/aab2ead008a66fe873091fa721b2d8d8f4083815 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 11 16:15:50 2023 +0000 patch 9.0.1302: on a Belgian keyboard CTRL-] does not work Problem: On a Belgian keyboard CTRL-] does not work. Solution: Translate CTRL-$ into CTRL-]. (closes https://github.com/vim/vim/issues/11831)
author Bram Moolenaar <Bram@vim.org>
date Sat, 11 Feb 2023 17:30:04 +0100
parents 5c671537304d
children 75ae4ddf0999
files src/gui_x11.c src/misc2.c src/version.c
diffstat 3 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -936,11 +936,11 @@ gui_x11_key_hit_cb(
     }
     else
     {
-	len = mb_char2bytes(key, string);
-
 	// Some keys need adjustment when the Ctrl modifier is used.
 	key = may_adjust_key_for_ctrl(modifiers, key);
 
+	len = mb_char2bytes(key, string);
+
 	// Remove the SHIFT modifier for keys where it's already included,
 	// e.g., '(', '!' and '*'.
 	modifiers = may_remove_shift_modifier(modifiers, key);
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1543,7 +1543,7 @@ find_special_key(
     int
 may_adjust_key_for_ctrl(int modifiers, int key)
 {
-    if (!(modifiers & MOD_MASK_CTRL))
+    if ((modifiers & MOD_MASK_CTRL) == 0)
 	return key;
 
     if (ASCII_ISALPHA(key))
@@ -1559,6 +1559,13 @@ may_adjust_key_for_ctrl(int modifiers, i
 	return '^';
     if (key == '-')
 	return '_';
+
+    // On a Belgian keyboard AltGr $ is ']', on other keyboards '$' can only be
+    // obtained with Shift.  Assume that '$' without shift implies a Belgian
+    // keyboard, where CTRL-$ means CTRL-].
+    if (key == '$' && (modifiers & MOD_MASK_SHIFT) == 0)
+	return ']';
+
     return key;
 }
 
--- 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 */
 /**/
+    1302,
+/**/
     1301,
 /**/
     1300,