summaryrefslogtreecommitdiff
path: root/src/terminal.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-10-13 16:43:39 +0200
committerBram Moolenaar <Bram@vim.org>2019-10-13 16:43:39 +0200
commit459fd785e4a8d044147a3f83a5fca8748528aa84 (patch)
tree52c679e08a445bac0f650bff4d8118d6eb190d7b /src/terminal.c
parent171a921b51101c1261040d28a8147c8829b675d3 (diff)
downloadvim-git-459fd785e4a8d044147a3f83a5fca8748528aa84.tar.gz
patch 8.1.2145: cannot map <C-H> when modifyOtherKeys is enabledv8.1.2145
Problem: Cannot map <C-H> when modifyOtherKeys is enabled. Solution: Add the <C-H> mapping twice, both with modifier and as 0x08. Use only the first one when modifyOtherKeys has been detected.
Diffstat (limited to 'src/terminal.c')
-rw-r--r--src/terminal.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/terminal.c b/src/terminal.c
index a992b444d..7b2d43bf2 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -772,7 +772,8 @@ ex_terminal(exarg_T *eap)
p = skiptowhite(cmd);
*p = NUL;
- keys = replace_termcodes(ep + 1, &buf, TRUE, TRUE, TRUE);
+ keys = replace_termcodes(ep + 1, &buf,
+ REPTERM_FROM_PART | REPTERM_DO_LT | REPTERM_SPECIAL, NULL);
opt.jo_set2 |= JO2_EOF_CHARS;
opt.jo_eof_chars = vim_strsave(keys);
vim_free(buf);
@@ -1372,7 +1373,12 @@ term_convert_key(term_T *term, int c, char *buf)
}
// add modifiers for the typed key
- mod |= mod_mask;
+ if (mod_mask & MOD_MASK_SHIFT)
+ mod |= VTERM_MOD_SHIFT;
+ if (mod_mask & MOD_MASK_CTRL)
+ mod |= VTERM_MOD_CTRL;
+ if (mod_mask & (MOD_MASK_ALT | MOD_MASK_META))
+ mod |= VTERM_MOD_ALT;
/*
* Convert special keys to vterm keys: