Mercurial > vim
diff src/gui_x11.c @ 20951:64c1b0796c46 v8.2.1027
patch 8.2.1027: GUI: multi-byte characters do not work in a terminal
Commit: https://github.com/vim/vim/commit/820ffa567c5a4bc0d3517c79c91d63d8062c358e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 21 15:09:14 2020 +0200
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 https://github.com/vim/vim/issues/6304)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 21 Jun 2020 15:15:03 +0200 |
parents | a5a24d688e11 |
children | f260c1411833 |
line wrap: on
line diff
--- a/src/gui_x11.c +++ b/src/gui_x11.c @@ -938,7 +938,10 @@ gui_x11_key_hit_cb( if (len == -3) key = TO_SPECIAL(string[1], string[2]); else - key = string[0]; + { + string[len] = NUL; + key = mb_ptr2char(string); + } key = simplify_key(key, &modifiers); if (key == CSI) key = K_CSI; @@ -951,8 +954,7 @@ gui_x11_key_hit_cb( } else { - string[0] = key; - len = 1; + len = mb_char2bytes(key, string); // Remove the SHIFT modifier for keys where it's already included, // e.g., '(', '!' and '*'.