mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 22:28:24 +02:00
Fix handling of ctrl key in legacy mode
Also change the glfw constants used for the modifiers to match those used in the terminal encoding. Less likely to make mistakes translating that way.
This commit is contained in:
@@ -105,8 +105,8 @@ class TestKeys(BaseTest):
|
||||
ae(enc(ord('`'), mods=shift), '~')
|
||||
ae(enc(ord('`'), mods=alt), "\x1b" + '`')
|
||||
ae(enc(ord('`'), mods=shift | alt), "\x1b" + '~')
|
||||
ae(enc(ord('`'), mods=ctrl), ' ')
|
||||
ae(enc(ord('`'), mods=ctrl | alt), "\x1b" + ' ')
|
||||
ae(enc(ord('`'), mods=ctrl), '`')
|
||||
ae(enc(ord('`'), mods=ctrl | alt), "\x1b" + '`')
|
||||
ae(enc(ord('1')), '1')
|
||||
ae(enc(ord('1'), mods=shift), '!')
|
||||
ae(enc(ord('1'), mods=alt), "\x1b" + '1')
|
||||
@@ -117,44 +117,44 @@ class TestKeys(BaseTest):
|
||||
ae(enc(ord('2'), mods=shift), '@')
|
||||
ae(enc(ord('2'), mods=alt), "\x1b" + '2')
|
||||
ae(enc(ord('2'), mods=shift | alt), "\x1b" + '@')
|
||||
ae(enc(ord('2'), mods=ctrl), '2')
|
||||
ae(enc(ord('2'), mods=ctrl | alt), "\x1b" + '2')
|
||||
ae(enc(ord('2'), mods=ctrl), '\x00')
|
||||
ae(enc(ord('2'), mods=ctrl | alt), "\x1b" + '\x00')
|
||||
ae(enc(ord('3')), '3')
|
||||
ae(enc(ord('3'), mods=shift), '#')
|
||||
ae(enc(ord('3'), mods=alt), "\x1b" + '3')
|
||||
ae(enc(ord('3'), mods=shift | alt), "\x1b" + '#')
|
||||
ae(enc(ord('3'), mods=ctrl), '3')
|
||||
ae(enc(ord('3'), mods=ctrl | alt), "\x1b" + '3')
|
||||
ae(enc(ord('3'), mods=ctrl), '\x1b')
|
||||
ae(enc(ord('3'), mods=ctrl | alt), "\x1b" + '\x1b')
|
||||
ae(enc(ord('4')), '4')
|
||||
ae(enc(ord('4'), mods=shift), '$')
|
||||
ae(enc(ord('4'), mods=alt), "\x1b" + '4')
|
||||
ae(enc(ord('4'), mods=shift | alt), "\x1b" + '$')
|
||||
ae(enc(ord('4'), mods=ctrl), '4')
|
||||
ae(enc(ord('4'), mods=ctrl | alt), "\x1b" + '4')
|
||||
ae(enc(ord('4'), mods=ctrl), '\x1c')
|
||||
ae(enc(ord('4'), mods=ctrl | alt), "\x1b" + '\x1c')
|
||||
ae(enc(ord('5')), '5')
|
||||
ae(enc(ord('5'), mods=shift), '%')
|
||||
ae(enc(ord('5'), mods=alt), "\x1b" + '5')
|
||||
ae(enc(ord('5'), mods=shift | alt), "\x1b" + '%')
|
||||
ae(enc(ord('5'), mods=ctrl), '5')
|
||||
ae(enc(ord('5'), mods=ctrl | alt), "\x1b" + '5')
|
||||
ae(enc(ord('5'), mods=ctrl), '\x1d')
|
||||
ae(enc(ord('5'), mods=ctrl | alt), "\x1b" + '\x1d')
|
||||
ae(enc(ord('6')), '6')
|
||||
ae(enc(ord('6'), mods=shift), '^')
|
||||
ae(enc(ord('6'), mods=alt), "\x1b" + '6')
|
||||
ae(enc(ord('6'), mods=shift | alt), "\x1b" + '^')
|
||||
ae(enc(ord('6'), mods=ctrl), '6')
|
||||
ae(enc(ord('6'), mods=ctrl | alt), "\x1b" + '6')
|
||||
ae(enc(ord('6'), mods=ctrl), '\x1e')
|
||||
ae(enc(ord('6'), mods=ctrl | alt), "\x1b" + '\x1e')
|
||||
ae(enc(ord('7')), '7')
|
||||
ae(enc(ord('7'), mods=shift), '&')
|
||||
ae(enc(ord('7'), mods=alt), "\x1b" + '7')
|
||||
ae(enc(ord('7'), mods=shift | alt), "\x1b" + '&')
|
||||
ae(enc(ord('7'), mods=ctrl), '7')
|
||||
ae(enc(ord('7'), mods=ctrl | alt), "\x1b" + '7')
|
||||
ae(enc(ord('7'), mods=ctrl), '\x1f')
|
||||
ae(enc(ord('7'), mods=ctrl | alt), "\x1b" + '\x1f')
|
||||
ae(enc(ord('8')), '8')
|
||||
ae(enc(ord('8'), mods=shift), '*')
|
||||
ae(enc(ord('8'), mods=alt), "\x1b" + '8')
|
||||
ae(enc(ord('8'), mods=shift | alt), "\x1b" + '*')
|
||||
ae(enc(ord('8'), mods=ctrl), '8')
|
||||
ae(enc(ord('8'), mods=ctrl | alt), "\x1b" + '8')
|
||||
ae(enc(ord('8'), mods=ctrl), '\x7f')
|
||||
ae(enc(ord('8'), mods=ctrl | alt), "\x1b" + '\x7f')
|
||||
ae(enc(ord('9')), '9')
|
||||
ae(enc(ord('9'), mods=shift), '(')
|
||||
ae(enc(ord('9'), mods=alt), "\x1b" + '9')
|
||||
@@ -225,164 +225,164 @@ class TestKeys(BaseTest):
|
||||
ae(enc(ord('/'), mods=shift), '?')
|
||||
ae(enc(ord('/'), mods=alt), "\x1b" + '/')
|
||||
ae(enc(ord('/'), mods=shift | alt), "\x1b" + '?')
|
||||
ae(enc(ord('/'), mods=ctrl), '/')
|
||||
ae(enc(ord('/'), mods=ctrl | alt), "\x1b" + '/')
|
||||
ae(enc(ord('/'), mods=ctrl), '\x1f')
|
||||
ae(enc(ord('/'), mods=ctrl | alt), "\x1b" + '\x1f')
|
||||
ae(enc(ord('a')), 'a')
|
||||
ae(enc(ord('a'), mods=shift), 'A')
|
||||
ae(enc(ord('a'), mods=alt), "\x1b" + 'a')
|
||||
ae(enc(ord('a'), mods=shift | alt), "\x1b" + 'A')
|
||||
ae(enc(ord('a'), mods=ctrl), '!')
|
||||
ae(enc(ord('a'), mods=ctrl | alt), "\x1b" + '!')
|
||||
ae(enc(ord('a'), mods=ctrl), '\x01')
|
||||
ae(enc(ord('a'), mods=ctrl | alt), "\x1b" + '\x01')
|
||||
ae(enc(ord('b')), 'b')
|
||||
ae(enc(ord('b'), mods=shift), 'B')
|
||||
ae(enc(ord('b'), mods=alt), "\x1b" + 'b')
|
||||
ae(enc(ord('b'), mods=shift | alt), "\x1b" + 'B')
|
||||
ae(enc(ord('b'), mods=ctrl), '"')
|
||||
ae(enc(ord('b'), mods=ctrl | alt), "\x1b" + '"')
|
||||
ae(enc(ord('b'), mods=ctrl), '\x02')
|
||||
ae(enc(ord('b'), mods=ctrl | alt), "\x1b" + '\x02')
|
||||
ae(enc(ord('c')), 'c')
|
||||
ae(enc(ord('c'), mods=shift), 'C')
|
||||
ae(enc(ord('c'), mods=alt), "\x1b" + 'c')
|
||||
ae(enc(ord('c'), mods=shift | alt), "\x1b" + 'C')
|
||||
ae(enc(ord('c'), mods=ctrl), '#')
|
||||
ae(enc(ord('c'), mods=ctrl | alt), "\x1b" + '#')
|
||||
ae(enc(ord('c'), mods=ctrl), '\x03')
|
||||
ae(enc(ord('c'), mods=ctrl | alt), "\x1b" + '\x03')
|
||||
ae(enc(ord('d')), 'd')
|
||||
ae(enc(ord('d'), mods=shift), 'D')
|
||||
ae(enc(ord('d'), mods=alt), "\x1b" + 'd')
|
||||
ae(enc(ord('d'), mods=shift | alt), "\x1b" + 'D')
|
||||
ae(enc(ord('d'), mods=ctrl), '$')
|
||||
ae(enc(ord('d'), mods=ctrl | alt), "\x1b" + '$')
|
||||
ae(enc(ord('d'), mods=ctrl), '\x04')
|
||||
ae(enc(ord('d'), mods=ctrl | alt), "\x1b" + '\x04')
|
||||
ae(enc(ord('e')), 'e')
|
||||
ae(enc(ord('e'), mods=shift), 'E')
|
||||
ae(enc(ord('e'), mods=alt), "\x1b" + 'e')
|
||||
ae(enc(ord('e'), mods=shift | alt), "\x1b" + 'E')
|
||||
ae(enc(ord('e'), mods=ctrl), '%')
|
||||
ae(enc(ord('e'), mods=ctrl | alt), "\x1b" + '%')
|
||||
ae(enc(ord('e'), mods=ctrl), '\x05')
|
||||
ae(enc(ord('e'), mods=ctrl | alt), "\x1b" + '\x05')
|
||||
ae(enc(ord('f')), 'f')
|
||||
ae(enc(ord('f'), mods=shift), 'F')
|
||||
ae(enc(ord('f'), mods=alt), "\x1b" + 'f')
|
||||
ae(enc(ord('f'), mods=shift | alt), "\x1b" + 'F')
|
||||
ae(enc(ord('f'), mods=ctrl), '&')
|
||||
ae(enc(ord('f'), mods=ctrl | alt), "\x1b" + '&')
|
||||
ae(enc(ord('f'), mods=ctrl), '\x06')
|
||||
ae(enc(ord('f'), mods=ctrl | alt), "\x1b" + '\x06')
|
||||
ae(enc(ord('g')), 'g')
|
||||
ae(enc(ord('g'), mods=shift), 'G')
|
||||
ae(enc(ord('g'), mods=alt), "\x1b" + 'g')
|
||||
ae(enc(ord('g'), mods=shift | alt), "\x1b" + 'G')
|
||||
ae(enc(ord('g'), mods=ctrl), "'")
|
||||
ae(enc(ord('g'), mods=ctrl | alt), "\x1b" + "'")
|
||||
ae(enc(ord('g'), mods=ctrl), '\x07')
|
||||
ae(enc(ord('g'), mods=ctrl | alt), "\x1b" + '\x07')
|
||||
ae(enc(ord('h')), 'h')
|
||||
ae(enc(ord('h'), mods=shift), 'H')
|
||||
ae(enc(ord('h'), mods=alt), "\x1b" + 'h')
|
||||
ae(enc(ord('h'), mods=shift | alt), "\x1b" + 'H')
|
||||
ae(enc(ord('h'), mods=ctrl), '(')
|
||||
ae(enc(ord('h'), mods=ctrl | alt), "\x1b" + '(')
|
||||
ae(enc(ord('h'), mods=ctrl), '\x08')
|
||||
ae(enc(ord('h'), mods=ctrl | alt), "\x1b" + '\x08')
|
||||
ae(enc(ord('i')), 'i')
|
||||
ae(enc(ord('i'), mods=shift), 'I')
|
||||
ae(enc(ord('i'), mods=alt), "\x1b" + 'i')
|
||||
ae(enc(ord('i'), mods=shift | alt), "\x1b" + 'I')
|
||||
ae(enc(ord('i'), mods=ctrl), ')')
|
||||
ae(enc(ord('i'), mods=ctrl | alt), "\x1b" + ')')
|
||||
ae(enc(ord('i'), mods=ctrl), '\t')
|
||||
ae(enc(ord('i'), mods=ctrl | alt), "\x1b" + '\t')
|
||||
ae(enc(ord('j')), 'j')
|
||||
ae(enc(ord('j'), mods=shift), 'J')
|
||||
ae(enc(ord('j'), mods=alt), "\x1b" + 'j')
|
||||
ae(enc(ord('j'), mods=shift | alt), "\x1b" + 'J')
|
||||
ae(enc(ord('j'), mods=ctrl), '*')
|
||||
ae(enc(ord('j'), mods=ctrl | alt), "\x1b" + '*')
|
||||
ae(enc(ord('j'), mods=ctrl), '\n')
|
||||
ae(enc(ord('j'), mods=ctrl | alt), "\x1b" + '\n')
|
||||
ae(enc(ord('k')), 'k')
|
||||
ae(enc(ord('k'), mods=shift), 'K')
|
||||
ae(enc(ord('k'), mods=alt), "\x1b" + 'k')
|
||||
ae(enc(ord('k'), mods=shift | alt), "\x1b" + 'K')
|
||||
ae(enc(ord('k'), mods=ctrl), '+')
|
||||
ae(enc(ord('k'), mods=ctrl | alt), "\x1b" + '+')
|
||||
ae(enc(ord('k'), mods=ctrl), '\x0b')
|
||||
ae(enc(ord('k'), mods=ctrl | alt), "\x1b" + '\x0b')
|
||||
ae(enc(ord('l')), 'l')
|
||||
ae(enc(ord('l'), mods=shift), 'L')
|
||||
ae(enc(ord('l'), mods=alt), "\x1b" + 'l')
|
||||
ae(enc(ord('l'), mods=shift | alt), "\x1b" + 'L')
|
||||
ae(enc(ord('l'), mods=ctrl), ',')
|
||||
ae(enc(ord('l'), mods=ctrl | alt), "\x1b" + ',')
|
||||
ae(enc(ord('l'), mods=ctrl), '\x0c')
|
||||
ae(enc(ord('l'), mods=ctrl | alt), "\x1b" + '\x0c')
|
||||
ae(enc(ord('m')), 'm')
|
||||
ae(enc(ord('m'), mods=shift), 'M')
|
||||
ae(enc(ord('m'), mods=alt), "\x1b" + 'm')
|
||||
ae(enc(ord('m'), mods=shift | alt), "\x1b" + 'M')
|
||||
ae(enc(ord('m'), mods=ctrl), '-')
|
||||
ae(enc(ord('m'), mods=ctrl | alt), "\x1b" + '-')
|
||||
ae(enc(ord('m'), mods=ctrl), '\r')
|
||||
ae(enc(ord('m'), mods=ctrl | alt), "\x1b" + '\r')
|
||||
ae(enc(ord('n')), 'n')
|
||||
ae(enc(ord('n'), mods=shift), 'N')
|
||||
ae(enc(ord('n'), mods=alt), "\x1b" + 'n')
|
||||
ae(enc(ord('n'), mods=shift | alt), "\x1b" + 'N')
|
||||
ae(enc(ord('n'), mods=ctrl), '.')
|
||||
ae(enc(ord('n'), mods=ctrl | alt), "\x1b" + '.')
|
||||
ae(enc(ord('n'), mods=ctrl), '\x0e')
|
||||
ae(enc(ord('n'), mods=ctrl | alt), "\x1b" + '\x0e')
|
||||
ae(enc(ord('o')), 'o')
|
||||
ae(enc(ord('o'), mods=shift), 'O')
|
||||
ae(enc(ord('o'), mods=alt), "\x1b" + 'o')
|
||||
ae(enc(ord('o'), mods=shift | alt), "\x1b" + 'O')
|
||||
ae(enc(ord('o'), mods=ctrl), '/')
|
||||
ae(enc(ord('o'), mods=ctrl | alt), "\x1b" + '/')
|
||||
ae(enc(ord('o'), mods=ctrl), '\x0f')
|
||||
ae(enc(ord('o'), mods=ctrl | alt), "\x1b" + '\x0f')
|
||||
ae(enc(ord('p')), 'p')
|
||||
ae(enc(ord('p'), mods=shift), 'P')
|
||||
ae(enc(ord('p'), mods=alt), "\x1b" + 'p')
|
||||
ae(enc(ord('p'), mods=shift | alt), "\x1b" + 'P')
|
||||
ae(enc(ord('p'), mods=ctrl), '0')
|
||||
ae(enc(ord('p'), mods=ctrl | alt), "\x1b" + '0')
|
||||
ae(enc(ord('p'), mods=ctrl), '\x10')
|
||||
ae(enc(ord('p'), mods=ctrl | alt), "\x1b" + '\x10')
|
||||
ae(enc(ord('q')), 'q')
|
||||
ae(enc(ord('q'), mods=shift), 'Q')
|
||||
ae(enc(ord('q'), mods=alt), "\x1b" + 'q')
|
||||
ae(enc(ord('q'), mods=shift | alt), "\x1b" + 'Q')
|
||||
ae(enc(ord('q'), mods=ctrl), '1')
|
||||
ae(enc(ord('q'), mods=ctrl | alt), "\x1b" + '1')
|
||||
ae(enc(ord('q'), mods=ctrl), '\x11')
|
||||
ae(enc(ord('q'), mods=ctrl | alt), "\x1b" + '\x11')
|
||||
ae(enc(ord('r')), 'r')
|
||||
ae(enc(ord('r'), mods=shift), 'R')
|
||||
ae(enc(ord('r'), mods=alt), "\x1b" + 'r')
|
||||
ae(enc(ord('r'), mods=shift | alt), "\x1b" + 'R')
|
||||
ae(enc(ord('r'), mods=ctrl), '2')
|
||||
ae(enc(ord('r'), mods=ctrl | alt), "\x1b" + '2')
|
||||
ae(enc(ord('r'), mods=ctrl), '\x12')
|
||||
ae(enc(ord('r'), mods=ctrl | alt), "\x1b" + '\x12')
|
||||
ae(enc(ord('s')), 's')
|
||||
ae(enc(ord('s'), mods=shift), 'S')
|
||||
ae(enc(ord('s'), mods=alt), "\x1b" + 's')
|
||||
ae(enc(ord('s'), mods=shift | alt), "\x1b" + 'S')
|
||||
ae(enc(ord('s'), mods=ctrl), '3')
|
||||
ae(enc(ord('s'), mods=ctrl | alt), "\x1b" + '3')
|
||||
ae(enc(ord('s'), mods=ctrl), '\x13')
|
||||
ae(enc(ord('s'), mods=ctrl | alt), "\x1b" + '\x13')
|
||||
ae(enc(ord('t')), 't')
|
||||
ae(enc(ord('t'), mods=shift), 'T')
|
||||
ae(enc(ord('t'), mods=alt), "\x1b" + 't')
|
||||
ae(enc(ord('t'), mods=shift | alt), "\x1b" + 'T')
|
||||
ae(enc(ord('t'), mods=ctrl), '4')
|
||||
ae(enc(ord('t'), mods=ctrl | alt), "\x1b" + '4')
|
||||
ae(enc(ord('t'), mods=ctrl), '\x14')
|
||||
ae(enc(ord('t'), mods=ctrl | alt), "\x1b" + '\x14')
|
||||
ae(enc(ord('u')), 'u')
|
||||
ae(enc(ord('u'), mods=shift), 'U')
|
||||
ae(enc(ord('u'), mods=alt), "\x1b" + 'u')
|
||||
ae(enc(ord('u'), mods=shift | alt), "\x1b" + 'U')
|
||||
ae(enc(ord('u'), mods=ctrl), '5')
|
||||
ae(enc(ord('u'), mods=ctrl | alt), "\x1b" + '5')
|
||||
ae(enc(ord('u'), mods=ctrl), '\x15')
|
||||
ae(enc(ord('u'), mods=ctrl | alt), "\x1b" + '\x15')
|
||||
ae(enc(ord('v')), 'v')
|
||||
ae(enc(ord('v'), mods=shift), 'V')
|
||||
ae(enc(ord('v'), mods=alt), "\x1b" + 'v')
|
||||
ae(enc(ord('v'), mods=shift | alt), "\x1b" + 'V')
|
||||
ae(enc(ord('v'), mods=ctrl), '6')
|
||||
ae(enc(ord('v'), mods=ctrl | alt), "\x1b" + '6')
|
||||
ae(enc(ord('v'), mods=ctrl), '\x16')
|
||||
ae(enc(ord('v'), mods=ctrl | alt), "\x1b" + '\x16')
|
||||
ae(enc(ord('w')), 'w')
|
||||
ae(enc(ord('w'), mods=shift), 'W')
|
||||
ae(enc(ord('w'), mods=alt), "\x1b" + 'w')
|
||||
ae(enc(ord('w'), mods=shift | alt), "\x1b" + 'W')
|
||||
ae(enc(ord('w'), mods=ctrl), '7')
|
||||
ae(enc(ord('w'), mods=ctrl | alt), "\x1b" + '7')
|
||||
ae(enc(ord('w'), mods=ctrl), '\x17')
|
||||
ae(enc(ord('w'), mods=ctrl | alt), "\x1b" + '\x17')
|
||||
ae(enc(ord('x')), 'x')
|
||||
ae(enc(ord('x'), mods=shift), 'X')
|
||||
ae(enc(ord('x'), mods=alt), "\x1b" + 'x')
|
||||
ae(enc(ord('x'), mods=shift | alt), "\x1b" + 'X')
|
||||
ae(enc(ord('x'), mods=ctrl), '8')
|
||||
ae(enc(ord('x'), mods=ctrl | alt), "\x1b" + '8')
|
||||
ae(enc(ord('x'), mods=ctrl), '\x18')
|
||||
ae(enc(ord('x'), mods=ctrl | alt), "\x1b" + '\x18')
|
||||
ae(enc(ord('y')), 'y')
|
||||
ae(enc(ord('y'), mods=shift), 'Y')
|
||||
ae(enc(ord('y'), mods=alt), "\x1b" + 'y')
|
||||
ae(enc(ord('y'), mods=shift | alt), "\x1b" + 'Y')
|
||||
ae(enc(ord('y'), mods=ctrl), '9')
|
||||
ae(enc(ord('y'), mods=ctrl | alt), "\x1b" + '9')
|
||||
ae(enc(ord('y'), mods=ctrl), '\x19')
|
||||
ae(enc(ord('y'), mods=ctrl | alt), "\x1b" + '\x19')
|
||||
ae(enc(ord('z')), 'z')
|
||||
ae(enc(ord('z'), mods=shift), 'Z')
|
||||
ae(enc(ord('z'), mods=alt), "\x1b" + 'z')
|
||||
ae(enc(ord('z'), mods=shift | alt), "\x1b" + 'Z')
|
||||
ae(enc(ord('z'), mods=ctrl), ':')
|
||||
ae(enc(ord('z'), mods=ctrl | alt), "\x1b" + ':')
|
||||
ae(enc(ord('z'), mods=ctrl), '\x1a')
|
||||
ae(enc(ord('z'), mods=ctrl | alt), "\x1b" + '\x1a')
|
||||
# end legacy letter tests
|
||||
# }}}
|
||||
|
||||
@@ -405,6 +405,7 @@ class TestKeys(BaseTest):
|
||||
ae(dq(defines.GLFW_FKEY_ENTER, mods=shift), csi(shift, 13))
|
||||
ae(dq(defines.GLFW_FKEY_TAB), '\t')
|
||||
ae(dq(defines.GLFW_FKEY_BACKSPACE), '\x7f')
|
||||
ae(dq(defines.GLFW_FKEY_TAB, mods=shift), csi(shift, 9))
|
||||
for mods in (ctrl, alt, ctrl | shift, alt | shift):
|
||||
ae(dq(ord('a'), mods=mods), csi(mods, ord('a')))
|
||||
ae(dq(ord(' '), mods=ctrl), csi(ctrl, ord(' ')))
|
||||
|
||||
Reference in New Issue
Block a user