Mercurial > vim
diff src/getchar.c @ 20595:3609e842f822 v8.2.0851
patch 8.2.0851: can't distinguish <M-a> from accented "a" in the GUI
Commit: https://github.com/vim/vim/commit/f4ae6b245a54f11dd967d06b80f30e5abf55fb82
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat May 30 19:52:46 2020 +0200
patch 8.2.0851: can't distinguish <M-a> from accented "a" in the GUI
Problem: Can't distinguish <M-a> from accented "a" in the GUI.
Solution: Use another way to make mapping <C-bslash> work. (closes https://github.com/vim/vim/issues/6163)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 30 May 2020 20:00:03 +0200 |
parents | 5995db0fe84a |
children | fbee68c6aab1 |
line wrap: on
line diff
--- a/src/getchar.c +++ b/src/getchar.c @@ -1593,16 +1593,26 @@ merge_modifyOtherKeys(int c_arg) if (mod_mask & MOD_MASK_CTRL) { if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_')) - { c &= 0x1f; - mod_mask &= ~MOD_MASK_CTRL; - } else if (c == '6') - { // CTRL-6 is equivalent to CTRL-^ c = 0x1e; +#ifdef FEAT_GUI_GTK + // These mappings look arbitrary at the first glance, but in fact + // resemble quite exactly the behaviour of the GTK+ 1.2 GUI on my + // machine. The only difference is BS vs. DEL for CTRL-8 (makes + // more sense and is consistent with usual terminal behaviour). + else if (c == '2') + c = NUL; + else if (c >= '3' && c <= '7') + c = c ^ 0x28; + else if (c == '8') + c = BS; + else if (c == '?') + c = DEL; +#endif + if (c != c_arg) mod_mask &= ~MOD_MASK_CTRL; - } } if ((mod_mask & (MOD_MASK_META | MOD_MASK_ALT)) && c >= 0 && c <= 127)