Linux: Handle keyboards with a "+" key

Adds a plus key to glfw so that it can be mapped as a shortcut. Fixes #1224
This commit is contained in:
Kovid Goyal 2018-12-13 09:56:30 +05:30
parent 291a2d6295
commit 3f2489b306
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
7 changed files with 35 additions and 20 deletions

View File

@ -9,6 +9,8 @@ Changelog
- Fix setting background_opacity causing window margins/padding to be slightly
different shade from background (:iss:`1221`)
- Linux: Handle keyboards with a "+" key (:iss:`1224`)
0.13.1 [2018-12-06]
------------------------------

View File

@ -312,6 +312,7 @@ static int translateKey(unsigned int key, GLFWbool apply_keymap)
K(';', SEMICOLON);
K('[', LEFT_BRACKET);
K(']', RIGHT_BRACKET);
K('+', PLUS);
K('`', GRAVE_ACCENT);
K('\\', BACKSLASH);
#undef K
@ -2218,6 +2219,7 @@ GLFWAPI void glfwGetCocoaKeyEquivalent(int glfw_key, int glfw_mods, unsigned sho
K(';', SEMICOLON);
K('[', LEFT_BRACKET);
K(']', RIGHT_BRACKET);
K('+', PLUS);
K('`', GRAVE_ACCENT);
K('\\', BACKSLASH);

1
glfw/glfw3.h vendored
View File

@ -407,6 +407,7 @@ extern "C" {
#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
#define GLFW_KEY_WORLD_1 161 /* non-US #1 */
#define GLFW_KEY_WORLD_2 162 /* non-US #2 */
#define GLFW_KEY_PLUS 163
/* Function keys */
#define GLFW_KEY_ESCAPE 256

1
glfw/xkb_glfw.c vendored
View File

@ -46,6 +46,7 @@
S(bracketleft, LEFT_BRACKET); \
S(backslash, BACKSLASH); \
S(bracketright, RIGHT_BRACKET); \
S(plus, PLUS); \
S(grave, GRAVE_ACCENT); \
S(Escape, ESCAPE); \
S(Return, ENTER); \

1
kitty/glfw-wrapper.h generated
View File

@ -166,6 +166,7 @@
#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
#define GLFW_KEY_WORLD_1 161 /* non-US #1 */
#define GLFW_KEY_WORLD_2 162 /* non-US #2 */
#define GLFW_KEY_PLUS 163 /* non-US #2 */
/* Function keys */
#define GLFW_KEY_ESCAPE 256

View File

@ -1116,6 +1116,7 @@ init_glfw(PyObject *m) {
ADDC(GLFW_KEY_GRAVE_ACCENT);
ADDC(GLFW_KEY_WORLD_1);
ADDC(GLFW_KEY_WORLD_2);
ADDC(GLFW_KEY_PLUS);
// --- Function keys -----------------------------------------------------------
ADDC(GLFW_KEY_ESCAPE);

47
kitty/key_encoding.py generated
View File

@ -127,7 +127,8 @@ ENCODING = {
'WORLD 2': 'x',
'X': 'p',
'Y': 'q',
'Z': 'r'
'Z': 'r',
'PLUS': 'Bi'
}
KEY_MAP = {
32: 'A',
@ -180,6 +181,7 @@ KEY_MAP = {
96: 'v',
161: 'w',
162: 'x',
163: 'Bi',
256: 'y',
257: 'z',
258: '0',
@ -250,10 +252,8 @@ KEY_MAP = {
346: 'Bg',
347: 'Bh'
}
# END_ENCODING }}}
text_keys = string.ascii_uppercase + string.ascii_lowercase + string.digits + '`~!@#$%^&*()_-+=[{]}\\|<,>./?;:\'" '
@ -324,28 +324,35 @@ mod_map = {c: i for i, c in enumerate('ABCDEFGHIJKLMNOP')}
key_rmap = {}
g = globals()
config_key_map = {}
config_mod_map = {'SHIFT': SHIFT, 'ALT': ALT, 'OPTION': ALT, '': ALT, '': SUPER, 'CMD': SUPER, 'SUPER': SUPER, 'CTRL': CTRL, 'CONTROL': CTRL}
config_mod_map = {
'SHIFT': SHIFT,
'ALT': ALT,
'OPTION': ALT,
'': ALT,
'': SUPER,
'CMD': SUPER,
'SUPER': SUPER,
'CTRL': CTRL,
'CONTROL': CTRL
}
for key_name, enc in ENCODING.items():
key_name = key_name.replace(' ', '_')
g[key_name] = config_key_map[key_name] = key_name
key_rmap[enc] = key_name
config_key_map.update({
'`': g['GRAVE_ACCENT'],
'-': g['MINUS'],
'=': g['EQUAL'],
'[': g['LEFT_BRACKET'],
']': g['RIGHT_BRACKET'],
'\\': g['BACKSLASH'],
';': g['SEMICOLON'],
"'": g['APOSTROPHE'],
',': g['COMMA'],
'.': g['PERIOD'],
'/': g['SLASH'],
'ESC': g['ESCAPE'],
'`': g['GRAVE_ACCENT'],
'-': g['MINUS'],
'=': g['EQUAL'],
'[': g['LEFT_BRACKET'],
']': g['RIGHT_BRACKET'],
'\\': g['BACKSLASH'],
';': g['SEMICOLON'],
"'": g['APOSTROPHE'],
',': g['COMMA'],
'.': g['PERIOD'],
'/': g['SLASH'],
'ESC': g['ESCAPE'],
'+': g['PLUS'],
})
enter_key = KeyEvent(PRESS, 0, g['ENTER'])