From 654cd5436309d5dd1afc79c3086e1b3bcc293642 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 19 Jan 2021 09:11:44 +0530 Subject: [PATCH] Add the ISO level 3 and 5 shift keys to functional keys --- docs/keyboard-protocol.rst | 23 ++++++++++--------- gen-key-constants.py | 18 ++++++++------- glfw/glfw3.h | 46 ++++++++++++++++++++------------------ glfw/input.c | 18 ++++++++------- glfw/xkb_glfw.c | 36 ++++++++++++++++------------- kitty/fast_data_types.pyi | 18 ++++++++------- kitty/glfw-wrapper.h | 46 ++++++++++++++++++++------------------ kitty/glfw.c | 36 ++++++++++++++++------------- kitty/key_encoding.c | 2 +- kitty/key_encoding.py | 44 +++++++++++++++++++----------------- 10 files changed, 154 insertions(+), 133 deletions(-) diff --git a/docs/keyboard-protocol.rst b/docs/keyboard-protocol.rst index e10884829..ec96d44f4 100644 --- a/docs/keyboard-protocol.rst +++ b/docs/keyboard-protocol.rst @@ -526,17 +526,18 @@ compatibility reasons. "KP_DOWN", "``57420 u``", "KP_PAGE_UP", "``57421 u``" "KP_PAGE_DOWN", "``57422 u``", "KP_HOME", "``57423 u``" "KP_END", "``57424 u``", "KP_INSERT", "``57425 u``" - "KP_DELETE", "``57426 u``", "LEFT_SHIFT", "``57427 u``" - "LEFT_CONTROL", "``57428 u``", "LEFT_ALT", "``57429 u``" - "LEFT_SUPER", "``57430 u``", "RIGHT_SHIFT", "``57431 u``" - "RIGHT_CONTROL", "``57432 u``", "RIGHT_ALT", "``57433 u``" - "RIGHT_SUPER", "``57434 u``", "MEDIA_PLAY", "``57435 u``" - "MEDIA_PAUSE", "``57436 u``", "MEDIA_PLAY_PAUSE", "``57437 u``" - "MEDIA_REVERSE", "``57438 u``", "MEDIA_STOP", "``57439 u``" - "MEDIA_FAST_FORWARD", "``57440 u``", "MEDIA_REWIND", "``57441 u``" - "MEDIA_TRACK_NEXT", "``57442 u``", "MEDIA_TRACK_PREVIOUS", "``57443 u``" - "MEDIA_RECORD", "``57444 u``", "LOWER_VOLUME", "``57445 u``" - "RAISE_VOLUME", "``57446 u``", "MUTE_VOLUME", "``57447 u``" + "KP_DELETE", "``57426 u``", "MEDIA_PLAY", "``57427 u``" + "MEDIA_PAUSE", "``57428 u``", "MEDIA_PLAY_PAUSE", "``57429 u``" + "MEDIA_REVERSE", "``57430 u``", "MEDIA_STOP", "``57431 u``" + "MEDIA_FAST_FORWARD", "``57432 u``", "MEDIA_REWIND", "``57433 u``" + "MEDIA_TRACK_NEXT", "``57434 u``", "MEDIA_TRACK_PREVIOUS", "``57435 u``" + "MEDIA_RECORD", "``57436 u``", "LOWER_VOLUME", "``57437 u``" + "RAISE_VOLUME", "``57438 u``", "MUTE_VOLUME", "``57439 u``" + "LEFT_SHIFT", "``57440 u``", "LEFT_CONTROL", "``57441 u``" + "LEFT_ALT", "``57442 u``", "LEFT_SUPER", "``57443 u``" + "RIGHT_SHIFT", "``57444 u``", "RIGHT_CONTROL", "``57445 u``" + "RIGHT_ALT", "``57446 u``", "RIGHT_SUPER", "``57447 u``" + "ISO_LEVEL3_SHIFT", "``57448 u``", "ISO_LEVEL5_SHIFT", "``57449 u``" .. end functional key table .. }}} diff --git a/gen-key-constants.py b/gen-key-constants.py index 2c14a6637..e3db2fd02 100644 --- a/gen-key-constants.py +++ b/gen-key-constants.py @@ -91,14 +91,6 @@ kp_home KP_Home - - kp_end KP_End - - kp_insert KP_Insert - - kp_delete KP_Delete - - -left_shift Shift_L 0x38 - -left_control Control_L 0x3B - -left_alt Alt_L 0x3A - -left_super Super_L 0x37 - -right_shift Shift_R 0x3C - -right_control Control_R 0x3E - -right_alt Alt_R 0x3D - -right_super Super_R 0x36 - media_play XF86AudioPlay - - media_pause XF86AudioPause - - media_play_pause - - - @@ -112,6 +104,16 @@ media_record XF86AudioRecord - - lower_volume XF86AudioLowerVolume - - raise_volume XF86AudioRaiseVolume - - mute_volume XF86AudioMute - - +left_shift Shift_L 0x38 - +left_control Control_L 0x3B - +left_alt Alt_L 0x3A - +left_super Super_L 0x37 - +right_shift Shift_R 0x3C - +right_control Control_R 0x3E - +right_alt Alt_R 0x3D - +right_super Super_R 0x36 - +iso_level3_shift ISO_Level3_Shift - - +iso_level5_shift ISO_Level5_Shift - - ''' # }}} shift_map = {x[0]: x[1] for x in '`~ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ [{ ]} \\| ;: \'" ,< .> /?'.split()} diff --git a/glfw/glfw3.h b/glfw/glfw3.h index 89d338a56..6c778779b 100644 --- a/glfw/glfw3.h +++ b/glfw/glfw3.h @@ -428,28 +428,30 @@ typedef enum { GLFW_FKEY_KP_END = 0xe050u, GLFW_FKEY_KP_INSERT = 0xe051u, GLFW_FKEY_KP_DELETE = 0xe052u, - GLFW_FKEY_LEFT_SHIFT = 0xe053u, - GLFW_FKEY_LEFT_CONTROL = 0xe054u, - GLFW_FKEY_LEFT_ALT = 0xe055u, - GLFW_FKEY_LEFT_SUPER = 0xe056u, - GLFW_FKEY_RIGHT_SHIFT = 0xe057u, - GLFW_FKEY_RIGHT_CONTROL = 0xe058u, - GLFW_FKEY_RIGHT_ALT = 0xe059u, - GLFW_FKEY_RIGHT_SUPER = 0xe05au, - GLFW_FKEY_MEDIA_PLAY = 0xe05bu, - GLFW_FKEY_MEDIA_PAUSE = 0xe05cu, - GLFW_FKEY_MEDIA_PLAY_PAUSE = 0xe05du, - GLFW_FKEY_MEDIA_REVERSE = 0xe05eu, - GLFW_FKEY_MEDIA_STOP = 0xe05fu, - GLFW_FKEY_MEDIA_FAST_FORWARD = 0xe060u, - GLFW_FKEY_MEDIA_REWIND = 0xe061u, - GLFW_FKEY_MEDIA_TRACK_NEXT = 0xe062u, - GLFW_FKEY_MEDIA_TRACK_PREVIOUS = 0xe063u, - GLFW_FKEY_MEDIA_RECORD = 0xe064u, - GLFW_FKEY_LOWER_VOLUME = 0xe065u, - GLFW_FKEY_RAISE_VOLUME = 0xe066u, - GLFW_FKEY_MUTE_VOLUME = 0xe067u, - GLFW_FKEY_LAST = 0xe067u + GLFW_FKEY_MEDIA_PLAY = 0xe053u, + GLFW_FKEY_MEDIA_PAUSE = 0xe054u, + GLFW_FKEY_MEDIA_PLAY_PAUSE = 0xe055u, + GLFW_FKEY_MEDIA_REVERSE = 0xe056u, + GLFW_FKEY_MEDIA_STOP = 0xe057u, + GLFW_FKEY_MEDIA_FAST_FORWARD = 0xe058u, + GLFW_FKEY_MEDIA_REWIND = 0xe059u, + GLFW_FKEY_MEDIA_TRACK_NEXT = 0xe05au, + GLFW_FKEY_MEDIA_TRACK_PREVIOUS = 0xe05bu, + GLFW_FKEY_MEDIA_RECORD = 0xe05cu, + GLFW_FKEY_LOWER_VOLUME = 0xe05du, + GLFW_FKEY_RAISE_VOLUME = 0xe05eu, + GLFW_FKEY_MUTE_VOLUME = 0xe05fu, + GLFW_FKEY_LEFT_SHIFT = 0xe060u, + GLFW_FKEY_LEFT_CONTROL = 0xe061u, + GLFW_FKEY_LEFT_ALT = 0xe062u, + GLFW_FKEY_LEFT_SUPER = 0xe063u, + GLFW_FKEY_RIGHT_SHIFT = 0xe064u, + GLFW_FKEY_RIGHT_CONTROL = 0xe065u, + GLFW_FKEY_RIGHT_ALT = 0xe066u, + GLFW_FKEY_RIGHT_SUPER = 0xe067u, + GLFW_FKEY_ISO_LEVEL3_SHIFT = 0xe068u, + GLFW_FKEY_ISO_LEVEL5_SHIFT = 0xe069u, + GLFW_FKEY_LAST = 0xe069u } GLFWFunctionKey; /* end functional key names */ diff --git a/glfw/input.c b/glfw/input.c index c1e105b81..8d0f4c972 100644 --- a/glfw/input.c +++ b/glfw/input.c @@ -607,14 +607,6 @@ _glfwGetKeyName(int key) case GLFW_FKEY_KP_END: return "KP_END"; case GLFW_FKEY_KP_INSERT: return "KP_INSERT"; case GLFW_FKEY_KP_DELETE: return "KP_DELETE"; - case GLFW_FKEY_LEFT_SHIFT: return "LEFT_SHIFT"; - case GLFW_FKEY_LEFT_CONTROL: return "LEFT_CONTROL"; - case GLFW_FKEY_LEFT_ALT: return "LEFT_ALT"; - case GLFW_FKEY_LEFT_SUPER: return "LEFT_SUPER"; - case GLFW_FKEY_RIGHT_SHIFT: return "RIGHT_SHIFT"; - case GLFW_FKEY_RIGHT_CONTROL: return "RIGHT_CONTROL"; - case GLFW_FKEY_RIGHT_ALT: return "RIGHT_ALT"; - case GLFW_FKEY_RIGHT_SUPER: return "RIGHT_SUPER"; case GLFW_FKEY_MEDIA_PLAY: return "MEDIA_PLAY"; case GLFW_FKEY_MEDIA_PAUSE: return "MEDIA_PAUSE"; case GLFW_FKEY_MEDIA_PLAY_PAUSE: return "MEDIA_PLAY_PAUSE"; @@ -628,6 +620,16 @@ _glfwGetKeyName(int key) case GLFW_FKEY_LOWER_VOLUME: return "LOWER_VOLUME"; case GLFW_FKEY_RAISE_VOLUME: return "RAISE_VOLUME"; case GLFW_FKEY_MUTE_VOLUME: return "MUTE_VOLUME"; + case GLFW_FKEY_LEFT_SHIFT: return "LEFT_SHIFT"; + case GLFW_FKEY_LEFT_CONTROL: return "LEFT_CONTROL"; + case GLFW_FKEY_LEFT_ALT: return "LEFT_ALT"; + case GLFW_FKEY_LEFT_SUPER: return "LEFT_SUPER"; + case GLFW_FKEY_RIGHT_SHIFT: return "RIGHT_SHIFT"; + case GLFW_FKEY_RIGHT_CONTROL: return "RIGHT_CONTROL"; + case GLFW_FKEY_RIGHT_ALT: return "RIGHT_ALT"; + case GLFW_FKEY_RIGHT_SUPER: return "RIGHT_SUPER"; + case GLFW_FKEY_ISO_LEVEL3_SHIFT: return "ISO_LEVEL3_SHIFT"; + case GLFW_FKEY_ISO_LEVEL5_SHIFT: return "ISO_LEVEL5_SHIFT"; /* end functional key names */ case 0: return "UNKNOWN"; } diff --git a/glfw/xkb_glfw.c b/glfw/xkb_glfw.c index cdadf99c6..9fe776a14 100644 --- a/glfw/xkb_glfw.c +++ b/glfw/xkb_glfw.c @@ -125,14 +125,6 @@ glfw_key_for_sym(xkb_keysym_t key) { case XKB_KEY_KP_End: return GLFW_FKEY_KP_END; case XKB_KEY_KP_Insert: return GLFW_FKEY_KP_INSERT; case XKB_KEY_KP_Delete: return GLFW_FKEY_KP_DELETE; - case XKB_KEY_Shift_L: return GLFW_FKEY_LEFT_SHIFT; - case XKB_KEY_Control_L: return GLFW_FKEY_LEFT_CONTROL; - case XKB_KEY_Alt_L: return GLFW_FKEY_LEFT_ALT; - case XKB_KEY_Super_L: return GLFW_FKEY_LEFT_SUPER; - case XKB_KEY_Shift_R: return GLFW_FKEY_RIGHT_SHIFT; - case XKB_KEY_Control_R: return GLFW_FKEY_RIGHT_CONTROL; - case XKB_KEY_Alt_R: return GLFW_FKEY_RIGHT_ALT; - case XKB_KEY_Super_R: return GLFW_FKEY_RIGHT_SUPER; case XKB_KEY_XF86AudioPlay: return GLFW_FKEY_MEDIA_PLAY; case XKB_KEY_XF86AudioPause: return GLFW_FKEY_MEDIA_PAUSE; case XKB_KEY_XF86AudioStop: return GLFW_FKEY_MEDIA_STOP; @@ -144,6 +136,16 @@ glfw_key_for_sym(xkb_keysym_t key) { case XKB_KEY_XF86AudioLowerVolume: return GLFW_FKEY_LOWER_VOLUME; case XKB_KEY_XF86AudioRaiseVolume: return GLFW_FKEY_RAISE_VOLUME; case XKB_KEY_XF86AudioMute: return GLFW_FKEY_MUTE_VOLUME; + case XKB_KEY_Shift_L: return GLFW_FKEY_LEFT_SHIFT; + case XKB_KEY_Control_L: return GLFW_FKEY_LEFT_CONTROL; + case XKB_KEY_Alt_L: return GLFW_FKEY_LEFT_ALT; + case XKB_KEY_Super_L: return GLFW_FKEY_LEFT_SUPER; + case XKB_KEY_Shift_R: return GLFW_FKEY_RIGHT_SHIFT; + case XKB_KEY_Control_R: return GLFW_FKEY_RIGHT_CONTROL; + case XKB_KEY_Alt_R: return GLFW_FKEY_RIGHT_ALT; + case XKB_KEY_Super_R: return GLFW_FKEY_RIGHT_SUPER; + case XKB_KEY_ISO_Level3_Shift: return GLFW_FKEY_ISO_LEVEL3_SHIFT; + case XKB_KEY_ISO_Level5_Shift: return GLFW_FKEY_ISO_LEVEL5_SHIFT; /* end xkb to glfw */ default: return xkb_keysym_to_utf32(key); @@ -237,14 +239,6 @@ glfw_xkb_sym_for_key(uint32_t key) { case GLFW_FKEY_KP_END: return XKB_KEY_KP_End; case GLFW_FKEY_KP_INSERT: return XKB_KEY_KP_Insert; case GLFW_FKEY_KP_DELETE: return XKB_KEY_KP_Delete; - case GLFW_FKEY_LEFT_SHIFT: return XKB_KEY_Shift_L; - case GLFW_FKEY_LEFT_CONTROL: return XKB_KEY_Control_L; - case GLFW_FKEY_LEFT_ALT: return XKB_KEY_Alt_L; - case GLFW_FKEY_LEFT_SUPER: return XKB_KEY_Super_L; - case GLFW_FKEY_RIGHT_SHIFT: return XKB_KEY_Shift_R; - case GLFW_FKEY_RIGHT_CONTROL: return XKB_KEY_Control_R; - case GLFW_FKEY_RIGHT_ALT: return XKB_KEY_Alt_R; - case GLFW_FKEY_RIGHT_SUPER: return XKB_KEY_Super_R; case GLFW_FKEY_MEDIA_PLAY: return XKB_KEY_XF86AudioPlay; case GLFW_FKEY_MEDIA_PAUSE: return XKB_KEY_XF86AudioPause; case GLFW_FKEY_MEDIA_STOP: return XKB_KEY_XF86AudioStop; @@ -256,6 +250,16 @@ glfw_xkb_sym_for_key(uint32_t key) { case GLFW_FKEY_LOWER_VOLUME: return XKB_KEY_XF86AudioLowerVolume; case GLFW_FKEY_RAISE_VOLUME: return XKB_KEY_XF86AudioRaiseVolume; case GLFW_FKEY_MUTE_VOLUME: return XKB_KEY_XF86AudioMute; + case GLFW_FKEY_LEFT_SHIFT: return XKB_KEY_Shift_L; + case GLFW_FKEY_LEFT_CONTROL: return XKB_KEY_Control_L; + case GLFW_FKEY_LEFT_ALT: return XKB_KEY_Alt_L; + case GLFW_FKEY_LEFT_SUPER: return XKB_KEY_Super_L; + case GLFW_FKEY_RIGHT_SHIFT: return XKB_KEY_Shift_R; + case GLFW_FKEY_RIGHT_CONTROL: return XKB_KEY_Control_R; + case GLFW_FKEY_RIGHT_ALT: return XKB_KEY_Alt_R; + case GLFW_FKEY_RIGHT_SUPER: return XKB_KEY_Super_R; + case GLFW_FKEY_ISO_LEVEL3_SHIFT: return XKB_KEY_ISO_Level3_Shift; + case GLFW_FKEY_ISO_LEVEL5_SHIFT: return XKB_KEY_ISO_Level5_Shift; /* end glfw to xkb */ default: return utf32_to_keysym(key); diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi index f4592e93c..363608bba 100644 --- a/kitty/fast_data_types.pyi +++ b/kitty/fast_data_types.pyi @@ -101,14 +101,6 @@ GLFW_FKEY_KP_HOME: int GLFW_FKEY_KP_END: int GLFW_FKEY_KP_INSERT: int GLFW_FKEY_KP_DELETE: int -GLFW_FKEY_LEFT_SHIFT: int -GLFW_FKEY_LEFT_CONTROL: int -GLFW_FKEY_LEFT_ALT: int -GLFW_FKEY_LEFT_SUPER: int -GLFW_FKEY_RIGHT_SHIFT: int -GLFW_FKEY_RIGHT_CONTROL: int -GLFW_FKEY_RIGHT_ALT: int -GLFW_FKEY_RIGHT_SUPER: int GLFW_FKEY_MEDIA_PLAY: int GLFW_FKEY_MEDIA_PAUSE: int GLFW_FKEY_MEDIA_PLAY_PAUSE: int @@ -122,6 +114,16 @@ GLFW_FKEY_MEDIA_RECORD: int GLFW_FKEY_LOWER_VOLUME: int GLFW_FKEY_RAISE_VOLUME: int GLFW_FKEY_MUTE_VOLUME: int +GLFW_FKEY_LEFT_SHIFT: int +GLFW_FKEY_LEFT_CONTROL: int +GLFW_FKEY_LEFT_ALT: int +GLFW_FKEY_LEFT_SUPER: int +GLFW_FKEY_RIGHT_SHIFT: int +GLFW_FKEY_RIGHT_CONTROL: int +GLFW_FKEY_RIGHT_ALT: int +GLFW_FKEY_RIGHT_SUPER: int +GLFW_FKEY_ISO_LEVEL3_SHIFT: int +GLFW_FKEY_ISO_LEVEL5_SHIFT: int # end glfw functional keys GLFW_MOD_SHIFT: int GLFW_MOD_CONTROL: int diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h index 0f4ab121a..e553c633b 100644 --- a/kitty/glfw-wrapper.h +++ b/kitty/glfw-wrapper.h @@ -166,28 +166,30 @@ typedef enum { GLFW_FKEY_KP_END = 0xe050u, GLFW_FKEY_KP_INSERT = 0xe051u, GLFW_FKEY_KP_DELETE = 0xe052u, - GLFW_FKEY_LEFT_SHIFT = 0xe053u, - GLFW_FKEY_LEFT_CONTROL = 0xe054u, - GLFW_FKEY_LEFT_ALT = 0xe055u, - GLFW_FKEY_LEFT_SUPER = 0xe056u, - GLFW_FKEY_RIGHT_SHIFT = 0xe057u, - GLFW_FKEY_RIGHT_CONTROL = 0xe058u, - GLFW_FKEY_RIGHT_ALT = 0xe059u, - GLFW_FKEY_RIGHT_SUPER = 0xe05au, - GLFW_FKEY_MEDIA_PLAY = 0xe05bu, - GLFW_FKEY_MEDIA_PAUSE = 0xe05cu, - GLFW_FKEY_MEDIA_PLAY_PAUSE = 0xe05du, - GLFW_FKEY_MEDIA_REVERSE = 0xe05eu, - GLFW_FKEY_MEDIA_STOP = 0xe05fu, - GLFW_FKEY_MEDIA_FAST_FORWARD = 0xe060u, - GLFW_FKEY_MEDIA_REWIND = 0xe061u, - GLFW_FKEY_MEDIA_TRACK_NEXT = 0xe062u, - GLFW_FKEY_MEDIA_TRACK_PREVIOUS = 0xe063u, - GLFW_FKEY_MEDIA_RECORD = 0xe064u, - GLFW_FKEY_LOWER_VOLUME = 0xe065u, - GLFW_FKEY_RAISE_VOLUME = 0xe066u, - GLFW_FKEY_MUTE_VOLUME = 0xe067u, - GLFW_FKEY_LAST = 0xe067u + GLFW_FKEY_MEDIA_PLAY = 0xe053u, + GLFW_FKEY_MEDIA_PAUSE = 0xe054u, + GLFW_FKEY_MEDIA_PLAY_PAUSE = 0xe055u, + GLFW_FKEY_MEDIA_REVERSE = 0xe056u, + GLFW_FKEY_MEDIA_STOP = 0xe057u, + GLFW_FKEY_MEDIA_FAST_FORWARD = 0xe058u, + GLFW_FKEY_MEDIA_REWIND = 0xe059u, + GLFW_FKEY_MEDIA_TRACK_NEXT = 0xe05au, + GLFW_FKEY_MEDIA_TRACK_PREVIOUS = 0xe05bu, + GLFW_FKEY_MEDIA_RECORD = 0xe05cu, + GLFW_FKEY_LOWER_VOLUME = 0xe05du, + GLFW_FKEY_RAISE_VOLUME = 0xe05eu, + GLFW_FKEY_MUTE_VOLUME = 0xe05fu, + GLFW_FKEY_LEFT_SHIFT = 0xe060u, + GLFW_FKEY_LEFT_CONTROL = 0xe061u, + GLFW_FKEY_LEFT_ALT = 0xe062u, + GLFW_FKEY_LEFT_SUPER = 0xe063u, + GLFW_FKEY_RIGHT_SHIFT = 0xe064u, + GLFW_FKEY_RIGHT_CONTROL = 0xe065u, + GLFW_FKEY_RIGHT_ALT = 0xe066u, + GLFW_FKEY_RIGHT_SUPER = 0xe067u, + GLFW_FKEY_ISO_LEVEL3_SHIFT = 0xe068u, + GLFW_FKEY_ISO_LEVEL5_SHIFT = 0xe069u, + GLFW_FKEY_LAST = 0xe069u } GLFWFunctionKey; /* end functional key names */ diff --git a/kitty/glfw.c b/kitty/glfw.c index bcf55a102..3c5420695 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -945,14 +945,6 @@ glfw_get_key_name(PyObject UNUSED *self, PyObject *args) { case GLFW_FKEY_KP_END: return PyUnicode_FromString("kp_end"); case GLFW_FKEY_KP_INSERT: return PyUnicode_FromString("kp_insert"); case GLFW_FKEY_KP_DELETE: return PyUnicode_FromString("kp_delete"); - case GLFW_FKEY_LEFT_SHIFT: return PyUnicode_FromString("left_shift"); - case GLFW_FKEY_LEFT_CONTROL: return PyUnicode_FromString("left_control"); - case GLFW_FKEY_LEFT_ALT: return PyUnicode_FromString("left_alt"); - case GLFW_FKEY_LEFT_SUPER: return PyUnicode_FromString("left_super"); - case GLFW_FKEY_RIGHT_SHIFT: return PyUnicode_FromString("right_shift"); - case GLFW_FKEY_RIGHT_CONTROL: return PyUnicode_FromString("right_control"); - case GLFW_FKEY_RIGHT_ALT: return PyUnicode_FromString("right_alt"); - case GLFW_FKEY_RIGHT_SUPER: return PyUnicode_FromString("right_super"); case GLFW_FKEY_MEDIA_PLAY: return PyUnicode_FromString("media_play"); case GLFW_FKEY_MEDIA_PAUSE: return PyUnicode_FromString("media_pause"); case GLFW_FKEY_MEDIA_PLAY_PAUSE: return PyUnicode_FromString("media_play_pause"); @@ -966,6 +958,16 @@ glfw_get_key_name(PyObject UNUSED *self, PyObject *args) { case GLFW_FKEY_LOWER_VOLUME: return PyUnicode_FromString("lower_volume"); case GLFW_FKEY_RAISE_VOLUME: return PyUnicode_FromString("raise_volume"); case GLFW_FKEY_MUTE_VOLUME: return PyUnicode_FromString("mute_volume"); + case GLFW_FKEY_LEFT_SHIFT: return PyUnicode_FromString("left_shift"); + case GLFW_FKEY_LEFT_CONTROL: return PyUnicode_FromString("left_control"); + case GLFW_FKEY_LEFT_ALT: return PyUnicode_FromString("left_alt"); + case GLFW_FKEY_LEFT_SUPER: return PyUnicode_FromString("left_super"); + case GLFW_FKEY_RIGHT_SHIFT: return PyUnicode_FromString("right_shift"); + case GLFW_FKEY_RIGHT_CONTROL: return PyUnicode_FromString("right_control"); + case GLFW_FKEY_RIGHT_ALT: return PyUnicode_FromString("right_alt"); + case GLFW_FKEY_RIGHT_SUPER: return PyUnicode_FromString("right_super"); + case GLFW_FKEY_ISO_LEVEL3_SHIFT: return PyUnicode_FromString("iso_level3_shift"); + case GLFW_FKEY_ISO_LEVEL5_SHIFT: return PyUnicode_FromString("iso_level5_shift"); /* end glfw functional key names */ } char buf[8] = {0}; @@ -1457,14 +1459,6 @@ init_glfw(PyObject *m) { ADDC(GLFW_FKEY_KP_END); ADDC(GLFW_FKEY_KP_INSERT); ADDC(GLFW_FKEY_KP_DELETE); - ADDC(GLFW_FKEY_LEFT_SHIFT); - ADDC(GLFW_FKEY_LEFT_CONTROL); - ADDC(GLFW_FKEY_LEFT_ALT); - ADDC(GLFW_FKEY_LEFT_SUPER); - ADDC(GLFW_FKEY_RIGHT_SHIFT); - ADDC(GLFW_FKEY_RIGHT_CONTROL); - ADDC(GLFW_FKEY_RIGHT_ALT); - ADDC(GLFW_FKEY_RIGHT_SUPER); ADDC(GLFW_FKEY_MEDIA_PLAY); ADDC(GLFW_FKEY_MEDIA_PAUSE); ADDC(GLFW_FKEY_MEDIA_PLAY_PAUSE); @@ -1478,6 +1472,16 @@ init_glfw(PyObject *m) { ADDC(GLFW_FKEY_LOWER_VOLUME); ADDC(GLFW_FKEY_RAISE_VOLUME); ADDC(GLFW_FKEY_MUTE_VOLUME); + ADDC(GLFW_FKEY_LEFT_SHIFT); + ADDC(GLFW_FKEY_LEFT_CONTROL); + ADDC(GLFW_FKEY_LEFT_ALT); + ADDC(GLFW_FKEY_LEFT_SUPER); + ADDC(GLFW_FKEY_RIGHT_SHIFT); + ADDC(GLFW_FKEY_RIGHT_CONTROL); + ADDC(GLFW_FKEY_RIGHT_ALT); + ADDC(GLFW_FKEY_RIGHT_SUPER); + ADDC(GLFW_FKEY_ISO_LEVEL3_SHIFT); + ADDC(GLFW_FKEY_ISO_LEVEL5_SHIFT); /* end glfw functional keys */ // --- Modifiers --------------------------------------------------------------- ADDC(GLFW_MOD_SHIFT); diff --git a/kitty/key_encoding.c b/kitty/key_encoding.c index 4c52384a8..a7c7bf1e2 100644 --- a/kitty/key_encoding.c +++ b/kitty/key_encoding.c @@ -35,7 +35,7 @@ static inline bool is_modifier_key(uint32_t key) { START_ALLOW_CASE_RANGE switch (key) { - case GLFW_FKEY_LEFT_SHIFT ... GLFW_FKEY_RIGHT_SUPER: + case GLFW_FKEY_LEFT_SHIFT ... GLFW_FKEY_ISO_LEVEL5_SHIFT: case GLFW_FKEY_CAPS_LOCK: case GLFW_FKEY_SCROLL_LOCK: case GLFW_FKEY_NUM_LOCK: diff --git a/kitty/key_encoding.py b/kitty/key_encoding.py index c53d08a10..614d7f394 100644 --- a/kitty/key_encoding.py +++ b/kitty/key_encoding.py @@ -97,27 +97,29 @@ functional_key_number_to_name_map = { 57424: 'KP_END', 57425: 'KP_INSERT', 57426: 'KP_DELETE', - 57427: 'LEFT_SHIFT', - 57428: 'LEFT_CONTROL', - 57429: 'LEFT_ALT', - 57430: 'LEFT_SUPER', - 57431: 'RIGHT_SHIFT', - 57432: 'RIGHT_CONTROL', - 57433: 'RIGHT_ALT', - 57434: 'RIGHT_SUPER', - 57435: 'MEDIA_PLAY', - 57436: 'MEDIA_PAUSE', - 57437: 'MEDIA_PLAY_PAUSE', - 57438: 'MEDIA_REVERSE', - 57439: 'MEDIA_STOP', - 57440: 'MEDIA_FAST_FORWARD', - 57441: 'MEDIA_REWIND', - 57442: 'MEDIA_TRACK_NEXT', - 57443: 'MEDIA_TRACK_PREVIOUS', - 57444: 'MEDIA_RECORD', - 57445: 'LOWER_VOLUME', - 57446: 'RAISE_VOLUME', - 57447: 'MUTE_VOLUME'} + 57427: 'MEDIA_PLAY', + 57428: 'MEDIA_PAUSE', + 57429: 'MEDIA_PLAY_PAUSE', + 57430: 'MEDIA_REVERSE', + 57431: 'MEDIA_STOP', + 57432: 'MEDIA_FAST_FORWARD', + 57433: 'MEDIA_REWIND', + 57434: 'MEDIA_TRACK_NEXT', + 57435: 'MEDIA_TRACK_PREVIOUS', + 57436: 'MEDIA_RECORD', + 57437: 'LOWER_VOLUME', + 57438: 'RAISE_VOLUME', + 57439: 'MUTE_VOLUME', + 57440: 'LEFT_SHIFT', + 57441: 'LEFT_CONTROL', + 57442: 'LEFT_ALT', + 57443: 'LEFT_SUPER', + 57444: 'RIGHT_SHIFT', + 57445: 'RIGHT_CONTROL', + 57446: 'RIGHT_ALT', + 57447: 'RIGHT_SUPER', + 57448: 'ISO_LEVEL3_SHIFT', + 57449: 'ISO_LEVEL5_SHIFT'} csi_number_to_functional_number_map = { 2: 57348, 3: 57349,