Recognize Hyper key
Also use only one implementation for detecting if a key is a modifier key
This commit is contained in:
parent
f6d4b8e0b0
commit
60e589f775
@ -535,9 +535,10 @@ compatibility reasons.
|
||||
"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``"
|
||||
"LEFT_HYPER", "``57444 u``", "RIGHT_SHIFT", "``57445 u``"
|
||||
"RIGHT_CONTROL", "``57446 u``", "RIGHT_ALT", "``57447 u``"
|
||||
"RIGHT_SUPER", "``57448 u``", "RIGHT_HYPER", "``57449 u``"
|
||||
"ISO_LEVEL3_SHIFT", "``57450 u``", "ISO_LEVEL5_SHIFT", "``57451 u``"
|
||||
|
||||
.. end functional key table
|
||||
.. }}}
|
||||
|
||||
2
gen-key-constants.py
Normal file → Executable file
2
gen-key-constants.py
Normal file → Executable file
@ -108,10 +108,12 @@ left_shift Shift_L 0x38 -
|
||||
left_control Control_L 0x3B -
|
||||
left_alt Alt_L 0x3A -
|
||||
left_super Super_L 0x37 -
|
||||
left_hyper Hyper_L - -
|
||||
right_shift Shift_R 0x3C -
|
||||
right_control Control_R 0x3E -
|
||||
right_alt Alt_R 0x3D -
|
||||
right_super Super_R 0x36 -
|
||||
right_hyper Hyper_R - -
|
||||
iso_level3_shift ISO_Level3_Shift - -
|
||||
iso_level5_shift ISO_Level5_Shift - -
|
||||
''' # }}}
|
||||
|
||||
16
glfw/glfw3.h
vendored
16
glfw/glfw3.h
vendored
@ -445,13 +445,15 @@ typedef enum {
|
||||
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
|
||||
GLFW_FKEY_LEFT_HYPER = 0xe064u,
|
||||
GLFW_FKEY_RIGHT_SHIFT = 0xe065u,
|
||||
GLFW_FKEY_RIGHT_CONTROL = 0xe066u,
|
||||
GLFW_FKEY_RIGHT_ALT = 0xe067u,
|
||||
GLFW_FKEY_RIGHT_SUPER = 0xe068u,
|
||||
GLFW_FKEY_RIGHT_HYPER = 0xe069u,
|
||||
GLFW_FKEY_ISO_LEVEL3_SHIFT = 0xe06au,
|
||||
GLFW_FKEY_ISO_LEVEL5_SHIFT = 0xe06bu,
|
||||
GLFW_FKEY_LAST = 0xe06bu
|
||||
} GLFWFunctionKey;
|
||||
/* end functional key names */
|
||||
|
||||
|
||||
2
glfw/input.c
vendored
2
glfw/input.c
vendored
@ -624,10 +624,12 @@ _glfwGetKeyName(int key)
|
||||
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_LEFT_HYPER: return "LEFT_HYPER";
|
||||
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_RIGHT_HYPER: return "RIGHT_HYPER";
|
||||
case GLFW_FKEY_ISO_LEVEL3_SHIFT: return "ISO_LEVEL3_SHIFT";
|
||||
case GLFW_FKEY_ISO_LEVEL5_SHIFT: return "ISO_LEVEL5_SHIFT";
|
||||
/* end functional key names */
|
||||
|
||||
4
glfw/xkb_glfw.c
vendored
4
glfw/xkb_glfw.c
vendored
@ -140,10 +140,12 @@ glfw_key_for_sym(xkb_keysym_t key) {
|
||||
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_Hyper_L: return GLFW_FKEY_LEFT_HYPER;
|
||||
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_Hyper_R: return GLFW_FKEY_RIGHT_HYPER;
|
||||
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 */
|
||||
@ -254,10 +256,12 @@ glfw_xkb_sym_for_key(uint32_t key) {
|
||||
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_LEFT_HYPER: return XKB_KEY_Hyper_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_RIGHT_HYPER: return XKB_KEY_Hyper_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 */
|
||||
|
||||
@ -118,10 +118,12 @@ GLFW_FKEY_LEFT_SHIFT: int
|
||||
GLFW_FKEY_LEFT_CONTROL: int
|
||||
GLFW_FKEY_LEFT_ALT: int
|
||||
GLFW_FKEY_LEFT_SUPER: int
|
||||
GLFW_FKEY_LEFT_HYPER: int
|
||||
GLFW_FKEY_RIGHT_SHIFT: int
|
||||
GLFW_FKEY_RIGHT_CONTROL: int
|
||||
GLFW_FKEY_RIGHT_ALT: int
|
||||
GLFW_FKEY_RIGHT_SUPER: int
|
||||
GLFW_FKEY_RIGHT_HYPER: int
|
||||
GLFW_FKEY_ISO_LEVEL3_SHIFT: int
|
||||
GLFW_FKEY_ISO_LEVEL5_SHIFT: int
|
||||
# end glfw functional keys
|
||||
|
||||
@ -962,10 +962,12 @@ glfw_get_key_name(PyObject UNUSED *self, PyObject *args) {
|
||||
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_LEFT_HYPER: return PyUnicode_FromString("left_hyper");
|
||||
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_RIGHT_HYPER: return PyUnicode_FromString("right_hyper");
|
||||
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 */
|
||||
@ -1476,10 +1478,12 @@ init_glfw(PyObject *m) {
|
||||
ADDC(GLFW_FKEY_LEFT_CONTROL);
|
||||
ADDC(GLFW_FKEY_LEFT_ALT);
|
||||
ADDC(GLFW_FKEY_LEFT_SUPER);
|
||||
ADDC(GLFW_FKEY_LEFT_HYPER);
|
||||
ADDC(GLFW_FKEY_RIGHT_SHIFT);
|
||||
ADDC(GLFW_FKEY_RIGHT_CONTROL);
|
||||
ADDC(GLFW_FKEY_RIGHT_ALT);
|
||||
ADDC(GLFW_FKEY_RIGHT_SUPER);
|
||||
ADDC(GLFW_FKEY_RIGHT_HYPER);
|
||||
ADDC(GLFW_FKEY_ISO_LEVEL3_SHIFT);
|
||||
ADDC(GLFW_FKEY_ISO_LEVEL5_SHIFT);
|
||||
/* end glfw functional keys */
|
||||
|
||||
@ -31,8 +31,8 @@ typedef struct {
|
||||
KeyAction action;
|
||||
} EncodingData;
|
||||
|
||||
static inline bool
|
||||
is_modifier_key(uint32_t key) {
|
||||
bool
|
||||
is_modifier_key(const uint32_t key) {
|
||||
START_ALLOW_CASE_RANGE
|
||||
switch (key) {
|
||||
case GLFW_FKEY_LEFT_SHIFT ... GLFW_FKEY_ISO_LEVEL5_SHIFT:
|
||||
|
||||
14
kitty/key_encoding.py
generated
14
kitty/key_encoding.py
generated
@ -114,12 +114,14 @@ functional_key_number_to_name_map = {
|
||||
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'}
|
||||
57444: 'LEFT_HYPER',
|
||||
57445: 'RIGHT_SHIFT',
|
||||
57446: 'RIGHT_CONTROL',
|
||||
57447: 'RIGHT_ALT',
|
||||
57448: 'RIGHT_SUPER',
|
||||
57449: 'RIGHT_HYPER',
|
||||
57450: 'ISO_LEVEL3_SHIFT',
|
||||
57451: 'ISO_LEVEL5_SHIFT'}
|
||||
csi_number_to_functional_number_map = {
|
||||
2: 57348,
|
||||
3: 57349,
|
||||
|
||||
24
kitty/keys.c
24
kitty/keys.c
@ -79,24 +79,6 @@ active_window(void) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
is_modifier_key(uint32_t key) {
|
||||
switch(key) {
|
||||
case GLFW_FKEY_LEFT_SHIFT:
|
||||
case GLFW_FKEY_RIGHT_SHIFT:
|
||||
case GLFW_FKEY_LEFT_ALT:
|
||||
case GLFW_FKEY_RIGHT_ALT:
|
||||
case GLFW_FKEY_LEFT_CONTROL:
|
||||
case GLFW_FKEY_RIGHT_CONTROL:
|
||||
case GLFW_FKEY_LEFT_SUPER:
|
||||
case GLFW_FKEY_RIGHT_SUPER:
|
||||
case GLFW_FKEY_CAPS_LOCK:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
update_ime_position(OSWindow *os_window, Window* w, Screen *screen) {
|
||||
unsigned int cell_width = os_window->fonts_data->cell_width, cell_height = os_window->fonts_data->cell_height;
|
||||
@ -149,11 +131,7 @@ on_key_input(GLFWkeyevent *ev) {
|
||||
if (global_state.in_sequence_mode) {
|
||||
debug("in sequence mode, handling as shortcut\n");
|
||||
if (
|
||||
action != GLFW_RELEASE &&
|
||||
key != GLFW_FKEY_LEFT_SHIFT && key != GLFW_FKEY_RIGHT_SHIFT &&
|
||||
key != GLFW_FKEY_LEFT_ALT && key != GLFW_FKEY_RIGHT_ALT &&
|
||||
key != GLFW_FKEY_LEFT_CONTROL && key != GLFW_FKEY_RIGHT_CONTROL &&
|
||||
key != GLFW_FKEY_LEFT_SUPER && key != GLFW_FKEY_RIGHT_SUPER
|
||||
action != GLFW_RELEASE && !is_modifier_key(key)
|
||||
) {
|
||||
create_key_event();
|
||||
call_boss(process_sequence, "O", ke);
|
||||
|
||||
@ -17,3 +17,6 @@
|
||||
|
||||
int
|
||||
encode_glfw_key_event(const GLFWkeyevent *e, const bool cursor_key_mode, const unsigned flags, char *output);
|
||||
|
||||
bool
|
||||
is_modifier_key(const uint32_t key);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user