Mercurial > vim
diff src/libvterm/src/keyboard.c @ 31156:0ecb16d5f86f v9.0.0912
patch 9.0.0912: libvterm with modifyOtherKeys level 2 does not match xterm
Commit: https://github.com/vim/vim/commit/c896adbcdee8b2296433a61c1f009aae9f68a594
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 19 19:02:40 2022 +0000
patch 9.0.0912: libvterm with modifyOtherKeys level 2 does not match xterm
Problem: libvterm with modifyOtherKeys level 2 does not match xterm.
Solution: Adjust key code escape sequences to be the same as what xterm
sends in modifyOtherKeys level 2 mode. Check the value of
no_reduce_keys before using it.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 19 Nov 2022 20:15:03 +0100 |
parents | 82336c3b679d |
children | dcde141f2d1e |
line wrap: on
line diff
--- a/src/libvterm/src/keyboard.c +++ b/src/libvterm/src/keyboard.c @@ -14,7 +14,7 @@ int vterm_is_modify_other_keys(VTerm *vt void vterm_keyboard_unichar(VTerm *vt, uint32_t c, VTermModifier mod) { // VIM: added modifyOtherKeys support - if (vt->state->mode.modify_other_keys && mod != 0) { + if (vterm_is_modify_other_keys(vt) && mod != 0) { vterm_push_output_sprintf_ctrl(vt, C1_CSI, "27;%d;%d~", mod+1, c); return; } @@ -184,7 +184,9 @@ void vterm_keyboard_key(VTerm *vt, VTerm break; case KEYCODE_LITERAL: case_LITERAL: - if(mod & (VTERM_MOD_SHIFT|VTERM_MOD_CTRL)) + if (vterm_is_modify_other_keys(vt) && mod != 0) + vterm_push_output_sprintf_ctrl(vt, C1_CSI, "27;%d;%d~", mod+1, k.literal); + else if(mod & (VTERM_MOD_SHIFT|VTERM_MOD_CTRL)) vterm_push_output_sprintf_ctrl(vt, C1_CSI, "%d;%du", k.literal, mod+1); else vterm_push_output_sprintf(vt, mod & VTERM_MOD_ALT ? ESC_S "%c" : "%c", k.literal);