From 820ffa567c5a4bc0d3517c79c91d63d8062c358e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 21 Jun 2020 15:09:14 +0200 Subject: patch 8.2.1027: GUI: multi-byte characters do not work in a terminal Problem: GUI: multi-byte characters do not work in a terminal. Solution: Do not assume a key is one byte. (closes #6304) --- src/gui_gtk_x11.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/gui_gtk_x11.c') diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index b2770ca47f..40de666313 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -1215,7 +1215,10 @@ key_press_event(GtkWidget *widget UNUSED, if (len == -3) key = TO_SPECIAL(string[1], string[2]); else - key = string[0]; + { + string[len] = NUL; + key = mb_ptr2char(string); + } // Handle modifiers. modifiers = modifiers_gdk2vim(state); @@ -1240,8 +1243,7 @@ key_press_event(GtkWidget *widget UNUSED, // May remove the shift modifier if it's included in the key. modifiers = may_remove_shift_modifier(modifiers, key); - string[0] = key; - len = 1; + len = mb_char2bytes(key, string); } if (modifiers != 0) -- cgit v1.2.3