diff --git a/gen-key-constants.py b/gen-key-constants.py index feec53a3e..b2532e796 100644 --- a/gen-key-constants.py +++ b/gen-key-constants.py @@ -142,6 +142,7 @@ last_code = start_code + len(functional_key_names) - 1 def patch_file(path: str, what: str, text: str, start_marker: str = '/* ', end_marker: str = ' */') -> None: + simple_start_q = f'{start_marker}start {what}{end_marker}' start_q = f'{start_marker}start {what} (auto generated by gen-key-constants.py do not edit){end_marker}' end_q = f'{start_marker}end {what}{end_marker}' @@ -150,7 +151,10 @@ def patch_file(path: str, what: str, text: str, start_marker: str = '/* ', end_m try: start = raw.index(start_q) except ValueError: - raise SystemExit(f'Failed to find "{start_q}" in {path}') + try: + start = raw.index(simple_start_q) + except ValueError: + raise SystemExit(f'Failed to find "{simple_start_q}" in {path}') try: end = raw.index(end_q) except ValueError: @@ -164,13 +168,20 @@ def patch_file(path: str, what: str, text: str, start_marker: str = '/* ', end_m def generate_glfw_header() -> None: lines = [ 'typedef enum {', - f' GLFW_FKEY_FIRST = 0x{start_code:x},', + f' GLFW_FKEY_FIRST = 0x{start_code:x}u,', ] + klines, pyi, names = [], [], [] for name, code in name_to_code.items(): - lines.append(f' GLFW_FKEY_{name.upper()} = 0x{code:x},') - lines.append(f' GLFW_FKEY_LAST = 0x{last_code:x}') + lines.append(f' GLFW_FKEY_{name.upper()} = 0x{code:x}u,') + klines.append(f' ADDC(GLFW_FKEY_{name.upper()});') + pyi.append(f'GLFW_FKEY_{name.upper()}: int') + names.append(f' case GLFW_FKEY_{name.upper()}: return "{name.upper()}";') + lines.append(f' GLFW_FKEY_LAST = 0x{last_code:x}u') lines.append('} GLFWFunctionKey;') patch_file('glfw/glfw3.h', 'functional key names', '\n'.join(lines)) + patch_file('kitty/glfw.c', 'glfw functional keys', '\n'.join(klines)) + patch_file('kitty/fast_data_types.pyi', 'glfw functional keys', '\n'.join(klines), start_marker='# ', end_marker='') + patch_file('glfw/input.c', 'functional key names', '\n'.join(names)) def generate_xkb_mapping() -> None: diff --git a/glfw/glfw3.h b/glfw/glfw3.h index 856a6e200..1c0471b6f 100644 --- a/glfw/glfw3.h +++ b/glfw/glfw3.h @@ -344,310 +344,115 @@ extern "C" { /* start functional key names (auto generated by gen-key-constants.py do not edit) */ typedef enum { - GLFW_FKEY_FIRST = 0xe000, - GLFW_FKEY_ESCAPE = 0xe000, - GLFW_FKEY_ENTER = 0xe001, - GLFW_FKEY_TAB = 0xe002, - GLFW_FKEY_BACKSPACE = 0xe003, - GLFW_FKEY_INSERT = 0xe004, - GLFW_FKEY_DELETE = 0xe005, - GLFW_FKEY_LEFT = 0xe006, - GLFW_FKEY_RIGHT = 0xe007, - GLFW_FKEY_UP = 0xe008, - GLFW_FKEY_DOWN = 0xe009, - GLFW_FKEY_PAGE_UP = 0xe00a, - GLFW_FKEY_PAGE_DOWN = 0xe00b, - GLFW_FKEY_HOME = 0xe00c, - GLFW_FKEY_END = 0xe00d, - GLFW_FKEY_CAPS_LOCK = 0xe00e, - GLFW_FKEY_SCROLL_LOCK = 0xe00f, - GLFW_FKEY_NUM_LOCK = 0xe010, - GLFW_FKEY_PRINT_SCREEN = 0xe011, - GLFW_FKEY_PAUSE = 0xe012, - GLFW_FKEY_MENU = 0xe013, - GLFW_FKEY_F1 = 0xe014, - GLFW_FKEY_F2 = 0xe015, - GLFW_FKEY_F3 = 0xe016, - GLFW_FKEY_F4 = 0xe017, - GLFW_FKEY_F5 = 0xe018, - GLFW_FKEY_F6 = 0xe019, - GLFW_FKEY_F7 = 0xe01a, - GLFW_FKEY_F8 = 0xe01b, - GLFW_FKEY_F9 = 0xe01c, - GLFW_FKEY_F10 = 0xe01d, - GLFW_FKEY_F11 = 0xe01e, - GLFW_FKEY_F12 = 0xe01f, - GLFW_FKEY_F13 = 0xe020, - GLFW_FKEY_F14 = 0xe021, - GLFW_FKEY_F15 = 0xe022, - GLFW_FKEY_F16 = 0xe023, - GLFW_FKEY_F17 = 0xe024, - GLFW_FKEY_F18 = 0xe025, - GLFW_FKEY_F19 = 0xe026, - GLFW_FKEY_F20 = 0xe027, - GLFW_FKEY_F21 = 0xe028, - GLFW_FKEY_F22 = 0xe029, - GLFW_FKEY_F23 = 0xe02a, - GLFW_FKEY_F24 = 0xe02b, - GLFW_FKEY_F25 = 0xe02c, - GLFW_FKEY_F26 = 0xe02d, - GLFW_FKEY_F27 = 0xe02e, - GLFW_FKEY_F28 = 0xe02f, - GLFW_FKEY_F29 = 0xe030, - GLFW_FKEY_F30 = 0xe031, - GLFW_FKEY_F31 = 0xe032, - GLFW_FKEY_F32 = 0xe033, - GLFW_FKEY_F33 = 0xe034, - GLFW_FKEY_F34 = 0xe035, - GLFW_FKEY_F35 = 0xe036, - GLFW_FKEY_KP_0 = 0xe037, - GLFW_FKEY_KP_1 = 0xe038, - GLFW_FKEY_KP_2 = 0xe039, - GLFW_FKEY_KP_3 = 0xe03a, - GLFW_FKEY_KP_4 = 0xe03b, - GLFW_FKEY_KP_5 = 0xe03c, - GLFW_FKEY_KP_6 = 0xe03d, - GLFW_FKEY_KP_7 = 0xe03e, - GLFW_FKEY_KP_8 = 0xe03f, - GLFW_FKEY_KP_9 = 0xe040, - GLFW_FKEY_KP_DECIMAL = 0xe041, - GLFW_FKEY_KP_DIVIDE = 0xe042, - GLFW_FKEY_KP_MULTIPLY = 0xe043, - GLFW_FKEY_KP_SUBTRACT = 0xe044, - GLFW_FKEY_KP_ADD = 0xe045, - GLFW_FKEY_KP_ENTER = 0xe046, - GLFW_FKEY_KP_EQUAL = 0xe047, - GLFW_FKEY_KP_SEPARATOR = 0xe048, - GLFW_FKEY_KP_LEFT = 0xe049, - GLFW_FKEY_KP_RIGHT = 0xe04a, - GLFW_FKEY_KP_UP = 0xe04b, - GLFW_FKEY_KP_DOWN = 0xe04c, - GLFW_FKEY_KP_PAGE_UP = 0xe04d, - GLFW_FKEY_KP_PAGE_DOWN = 0xe04e, - GLFW_FKEY_KP_HOME = 0xe04f, - GLFW_FKEY_KP_END = 0xe050, - GLFW_FKEY_KP_INSERT = 0xe051, - GLFW_FKEY_KP_DELETE = 0xe052, - GLFW_FKEY_LEFT_SHIFT = 0xe053, - GLFW_FKEY_LEFT_CONTROL = 0xe054, - GLFW_FKEY_LEFT_ALT = 0xe055, - GLFW_FKEY_LEFT_SUPER = 0xe056, - GLFW_FKEY_RIGHT_SHIFT = 0xe057, - GLFW_FKEY_RIGHT_CONTROL = 0xe058, - GLFW_FKEY_RIGHT_ALT = 0xe059, - GLFW_FKEY_RIGHT_SUPER = 0xe05a, - GLFW_FKEY_MEDIA_PLAY = 0xe05b, - GLFW_FKEY_MEDIA_PAUSE = 0xe05c, - GLFW_FKEY_MEDIA_PLAY_PAUSE = 0xe05d, - GLFW_FKEY_MEDIA_REVERSE = 0xe05e, - GLFW_FKEY_MEDIA_STOP = 0xe05f, - GLFW_FKEY_MEDIA_FAST_FORWARD = 0xe060, - GLFW_FKEY_MEDIA_REWIND = 0xe061, - GLFW_FKEY_MEDIA_TRACK_NEXT = 0xe062, - GLFW_FKEY_MEDIA_TRACK_PREVIOUS = 0xe063, - GLFW_FKEY_MEDIA_RECORD = 0xe064, - GLFW_FKEY_LOWER_VOLUME = 0xe065, - GLFW_FKEY_RAISE_VOLUME = 0xe066, - GLFW_FKEY_MUTE_VOLUME = 0xe067, - GLFW_FKEY_LAST = 0xe067 + GLFW_FKEY_FIRST = 0xe000u, + GLFW_FKEY_ESCAPE = 0xe000u, + GLFW_FKEY_ENTER = 0xe001u, + GLFW_FKEY_TAB = 0xe002u, + GLFW_FKEY_BACKSPACE = 0xe003u, + GLFW_FKEY_INSERT = 0xe004u, + GLFW_FKEY_DELETE = 0xe005u, + GLFW_FKEY_LEFT = 0xe006u, + GLFW_FKEY_RIGHT = 0xe007u, + GLFW_FKEY_UP = 0xe008u, + GLFW_FKEY_DOWN = 0xe009u, + GLFW_FKEY_PAGE_UP = 0xe00au, + GLFW_FKEY_PAGE_DOWN = 0xe00bu, + GLFW_FKEY_HOME = 0xe00cu, + GLFW_FKEY_END = 0xe00du, + GLFW_FKEY_CAPS_LOCK = 0xe00eu, + GLFW_FKEY_SCROLL_LOCK = 0xe00fu, + GLFW_FKEY_NUM_LOCK = 0xe010u, + GLFW_FKEY_PRINT_SCREEN = 0xe011u, + GLFW_FKEY_PAUSE = 0xe012u, + GLFW_FKEY_MENU = 0xe013u, + GLFW_FKEY_F1 = 0xe014u, + GLFW_FKEY_F2 = 0xe015u, + GLFW_FKEY_F3 = 0xe016u, + GLFW_FKEY_F4 = 0xe017u, + GLFW_FKEY_F5 = 0xe018u, + GLFW_FKEY_F6 = 0xe019u, + GLFW_FKEY_F7 = 0xe01au, + GLFW_FKEY_F8 = 0xe01bu, + GLFW_FKEY_F9 = 0xe01cu, + GLFW_FKEY_F10 = 0xe01du, + GLFW_FKEY_F11 = 0xe01eu, + GLFW_FKEY_F12 = 0xe01fu, + GLFW_FKEY_F13 = 0xe020u, + GLFW_FKEY_F14 = 0xe021u, + GLFW_FKEY_F15 = 0xe022u, + GLFW_FKEY_F16 = 0xe023u, + GLFW_FKEY_F17 = 0xe024u, + GLFW_FKEY_F18 = 0xe025u, + GLFW_FKEY_F19 = 0xe026u, + GLFW_FKEY_F20 = 0xe027u, + GLFW_FKEY_F21 = 0xe028u, + GLFW_FKEY_F22 = 0xe029u, + GLFW_FKEY_F23 = 0xe02au, + GLFW_FKEY_F24 = 0xe02bu, + GLFW_FKEY_F25 = 0xe02cu, + GLFW_FKEY_F26 = 0xe02du, + GLFW_FKEY_F27 = 0xe02eu, + GLFW_FKEY_F28 = 0xe02fu, + GLFW_FKEY_F29 = 0xe030u, + GLFW_FKEY_F30 = 0xe031u, + GLFW_FKEY_F31 = 0xe032u, + GLFW_FKEY_F32 = 0xe033u, + GLFW_FKEY_F33 = 0xe034u, + GLFW_FKEY_F34 = 0xe035u, + GLFW_FKEY_F35 = 0xe036u, + GLFW_FKEY_KP_0 = 0xe037u, + GLFW_FKEY_KP_1 = 0xe038u, + GLFW_FKEY_KP_2 = 0xe039u, + GLFW_FKEY_KP_3 = 0xe03au, + GLFW_FKEY_KP_4 = 0xe03bu, + GLFW_FKEY_KP_5 = 0xe03cu, + GLFW_FKEY_KP_6 = 0xe03du, + GLFW_FKEY_KP_7 = 0xe03eu, + GLFW_FKEY_KP_8 = 0xe03fu, + GLFW_FKEY_KP_9 = 0xe040u, + GLFW_FKEY_KP_DECIMAL = 0xe041u, + GLFW_FKEY_KP_DIVIDE = 0xe042u, + GLFW_FKEY_KP_MULTIPLY = 0xe043u, + GLFW_FKEY_KP_SUBTRACT = 0xe044u, + GLFW_FKEY_KP_ADD = 0xe045u, + GLFW_FKEY_KP_ENTER = 0xe046u, + GLFW_FKEY_KP_EQUAL = 0xe047u, + GLFW_FKEY_KP_SEPARATOR = 0xe048u, + GLFW_FKEY_KP_LEFT = 0xe049u, + GLFW_FKEY_KP_RIGHT = 0xe04au, + GLFW_FKEY_KP_UP = 0xe04bu, + GLFW_FKEY_KP_DOWN = 0xe04cu, + GLFW_FKEY_KP_PAGE_UP = 0xe04du, + GLFW_FKEY_KP_PAGE_DOWN = 0xe04eu, + GLFW_FKEY_KP_HOME = 0xe04fu, + 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 } GLFWFunctionKey; /* end functional key names */ -/* The unknown key */ -#define GLFW_KEY_UNKNOWN -1 - -/* Printable keys */ -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_EXCLAM 33 /* ! */ -#define GLFW_KEY_DOUBLE_QUOTE 34 /* " */ -#define GLFW_KEY_NUMBER_SIGN 35 /* # */ -#define GLFW_KEY_DOLLAR 36 /* $ */ -#define GLFW_KEY_AMPERSAND 38 /* & */ -#define GLFW_KEY_APOSTROPHE 39 /* ' */ -#define GLFW_KEY_PARENTHESIS_LEFT 40 /* ( */ -#define GLFW_KEY_PARENTHESIS_RIGHT 41 /* ) */ -#define GLFW_KEY_PLUS 43 /* + */ -#define GLFW_KEY_COMMA 44 /* , */ -#define GLFW_KEY_MINUS 45 /* - */ -#define GLFW_KEY_PERIOD 46 /* . */ -#define GLFW_KEY_SLASH 47 /* / */ -#define GLFW_KEY_0 48 -#define GLFW_KEY_1 49 -#define GLFW_KEY_2 50 -#define GLFW_KEY_3 51 -#define GLFW_KEY_4 52 -#define GLFW_KEY_5 53 -#define GLFW_KEY_6 54 -#define GLFW_KEY_7 55 -#define GLFW_KEY_8 56 -#define GLFW_KEY_9 57 -#define GLFW_KEY_COLON 58 /* : */ -#define GLFW_KEY_SEMICOLON 59 /* ; */ -#define GLFW_KEY_LESS 60 /* < */ -#define GLFW_KEY_EQUAL 61 /* = */ -#define GLFW_KEY_GREATER 62 /* > */ -#define GLFW_KEY_AT 64 /* @ */ -#define GLFW_KEY_A 65 -#define GLFW_KEY_B 66 -#define GLFW_KEY_C 67 -#define GLFW_KEY_D 68 -#define GLFW_KEY_E 69 -#define GLFW_KEY_F 70 -#define GLFW_KEY_G 71 -#define GLFW_KEY_H 72 -#define GLFW_KEY_I 73 -#define GLFW_KEY_J 74 -#define GLFW_KEY_K 75 -#define GLFW_KEY_L 76 -#define GLFW_KEY_M 77 -#define GLFW_KEY_N 78 -#define GLFW_KEY_O 79 -#define GLFW_KEY_P 80 -#define GLFW_KEY_Q 81 -#define GLFW_KEY_R 82 -#define GLFW_KEY_S 83 -#define GLFW_KEY_T 84 -#define GLFW_KEY_U 85 -#define GLFW_KEY_V 86 -#define GLFW_KEY_W 87 -#define GLFW_KEY_X 88 -#define GLFW_KEY_Y 89 -#define GLFW_KEY_Z 90 -#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ -#define GLFW_KEY_BACKSLASH 92 /* \ */ -#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ -#define GLFW_KEY_CIRCUMFLEX 94 /* ^ */ -#define GLFW_KEY_UNDERSCORE 95 /* _ */ -#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_PARAGRAPH 167 /* § */ -#define GLFW_KEY_MASCULINE 186 /* º */ -#define GLFW_KEY_A_GRAVE 192 /* À */ -#define GLFW_KEY_A_DIAERESIS 196 /* Ä */ -#define GLFW_KEY_A_RING 197 /* Å */ -#define GLFW_KEY_AE 198 /* Æ */ -#define GLFW_KEY_C_CEDILLA 199 /* Ç */ -#define GLFW_KEY_E_GRAVE 200 /* È */ -#define GLFW_KEY_E_ACUTE 201 /* É */ -#define GLFW_KEY_I_GRAVE 204 /* Ì */ -#define GLFW_KEY_N_TILDE 209 /* Ñ */ -#define GLFW_KEY_O_GRAVE 210 /* Ò */ -#define GLFW_KEY_O_DIAERESIS 214 /* Ö */ -#define GLFW_KEY_O_SLASH 216 /* Ø */ -#define GLFW_KEY_U_GRAVE 217 /* Ù */ -#define GLFW_KEY_U_DIAERESIS 220 /* Ü */ -#define GLFW_KEY_S_SHARP 222 /* ß */ -#define GLFW_KEY_CYRILLIC_A 223 /* А */ -#define GLFW_KEY_CYRILLIC_BE 224 /* Б */ -#define GLFW_KEY_CYRILLIC_VE 225 /* В */ -#define GLFW_KEY_CYRILLIC_GHE 226 /* Г */ -#define GLFW_KEY_CYRILLIC_DE 227 /* Д */ -#define GLFW_KEY_CYRILLIC_IE 228 /* Е */ -#define GLFW_KEY_CYRILLIC_ZHE 229 /* Ж */ -#define GLFW_KEY_CYRILLIC_ZE 230 /* З */ -#define GLFW_KEY_CYRILLIC_I 231 /* И */ -#define GLFW_KEY_CYRILLIC_SHORT_I 232 /* Й */ -#define GLFW_KEY_CYRILLIC_KA 233 /* К */ -#define GLFW_KEY_CYRILLIC_EL 234 /* Л */ -#define GLFW_KEY_CYRILLIC_EM 235 /* М */ -#define GLFW_KEY_CYRILLIC_EN 236 /* Н */ -#define GLFW_KEY_CYRILLIC_O 237 /* О */ -#define GLFW_KEY_CYRILLIC_PE 238 /* П */ -#define GLFW_KEY_CYRILLIC_ER 239 /* Р */ -#define GLFW_KEY_CYRILLIC_ES 240 /* С */ -#define GLFW_KEY_CYRILLIC_TE 241 /* Т */ -#define GLFW_KEY_CYRILLIC_U 242 /* У */ -#define GLFW_KEY_CYRILLIC_EF 243 /* Ф */ -#define GLFW_KEY_CYRILLIC_HA 244 /* Х */ -#define GLFW_KEY_CYRILLIC_TSE 245 /* Ц */ -#define GLFW_KEY_CYRILLIC_CHE 246 /* Ч */ -#define GLFW_KEY_CYRILLIC_SHA 247 /* Ш */ -#define GLFW_KEY_CYRILLIC_SHCHA 248 /* Щ */ -#define GLFW_KEY_CYRILLIC_HARD_SIGN 249 /* Ъ */ -#define GLFW_KEY_CYRILLIC_YERU 250 /* Ы */ -#define GLFW_KEY_CYRILLIC_SOFT_SIGN 251 /* Ь */ -#define GLFW_KEY_CYRILLIC_E 252 /* Э */ -#define GLFW_KEY_CYRILLIC_YU 253 /* Ю */ -#define GLFW_KEY_CYRILLIC_YA 254 /* Я */ -#define GLFW_KEY_CYRILLIC_IO 255 /* Ё */ - -#define GLFW_KEY_LAST_PRINTABLE GLFW_KEY_CYRILLIC_IO - -/* Function keys */ -#define GLFW_KEY_ESCAPE 256 -#define GLFW_KEY_ENTER 257 -#define GLFW_KEY_TAB 258 -#define GLFW_KEY_BACKSPACE 259 -#define GLFW_KEY_INSERT 260 -#define GLFW_KEY_DELETE 261 -#define GLFW_KEY_RIGHT 262 -#define GLFW_KEY_LEFT 263 -#define GLFW_KEY_DOWN 264 -#define GLFW_KEY_UP 265 -#define GLFW_KEY_PAGE_UP 266 -#define GLFW_KEY_PAGE_DOWN 267 -#define GLFW_KEY_HOME 268 -#define GLFW_KEY_END 269 -#define GLFW_KEY_CAPS_LOCK 280 -#define GLFW_KEY_SCROLL_LOCK 281 -#define GLFW_KEY_NUM_LOCK 282 -#define GLFW_KEY_PRINT_SCREEN 283 -#define GLFW_KEY_PAUSE 284 -#define GLFW_KEY_F1 290 -#define GLFW_KEY_F2 291 -#define GLFW_KEY_F3 292 -#define GLFW_KEY_F4 293 -#define GLFW_KEY_F5 294 -#define GLFW_KEY_F6 295 -#define GLFW_KEY_F7 296 -#define GLFW_KEY_F8 297 -#define GLFW_KEY_F9 298 -#define GLFW_KEY_F10 299 -#define GLFW_KEY_F11 300 -#define GLFW_KEY_F12 301 -#define GLFW_KEY_F13 302 -#define GLFW_KEY_F14 303 -#define GLFW_KEY_F15 304 -#define GLFW_KEY_F16 305 -#define GLFW_KEY_F17 306 -#define GLFW_KEY_F18 307 -#define GLFW_KEY_F19 308 -#define GLFW_KEY_F20 309 -#define GLFW_KEY_F21 310 -#define GLFW_KEY_F22 311 -#define GLFW_KEY_F23 312 -#define GLFW_KEY_F24 313 -#define GLFW_KEY_F25 314 -#define GLFW_KEY_KP_0 320 -#define GLFW_KEY_KP_1 321 -#define GLFW_KEY_KP_2 322 -#define GLFW_KEY_KP_3 323 -#define GLFW_KEY_KP_4 324 -#define GLFW_KEY_KP_5 325 -#define GLFW_KEY_KP_6 326 -#define GLFW_KEY_KP_7 327 -#define GLFW_KEY_KP_8 328 -#define GLFW_KEY_KP_9 329 -#define GLFW_KEY_KP_DECIMAL 330 -#define GLFW_KEY_KP_DIVIDE 331 -#define GLFW_KEY_KP_MULTIPLY 332 -#define GLFW_KEY_KP_SUBTRACT 333 -#define GLFW_KEY_KP_ADD 334 -#define GLFW_KEY_KP_ENTER 335 -#define GLFW_KEY_KP_EQUAL 336 -#define GLFW_KEY_LEFT_SHIFT 340 -#define GLFW_KEY_LEFT_CONTROL 341 -#define GLFW_KEY_LEFT_ALT 342 -#define GLFW_KEY_LEFT_SUPER 343 -#define GLFW_KEY_RIGHT_SHIFT 344 -#define GLFW_KEY_RIGHT_CONTROL 345 -#define GLFW_KEY_RIGHT_ALT 346 -#define GLFW_KEY_RIGHT_SUPER 347 -#define GLFW_KEY_MENU 348 - -#define GLFW_KEY_LAST GLFW_KEY_MENU - /*! @} */ /*! @defgroup mods Modifier key flags @@ -4391,108 +4196,19 @@ GLFWAPI int glfwRawMouseMotionSupported(void); * __Do not use this function__ for [text input](@ref input_char). You will * break text input for many languages even if it happens to work for yours. * - * If the key is `GLFW_KEY_UNKNOWN`, the keycode is used to identify the key, + * If the key is `0`, the keycode is used to identify the key, * otherwise the keycode is ignored. If you specify a non-printable key, or - * `GLFW_KEY_UNKNOWN` and a keycode that maps to a non-printable key, this + * `0` and a keycode that maps to a non-printable key, this * function returns `NULL` but does not emit an error. * * This behavior allows you to always pass in the arguments in the * [key callback](@ref input_key) without modification. * - * The printable keys are: - * - `GLFW_KEY_SPACE` - * - `GLFW_KEY_EXCLAM` - * - `GLFW_KEY_DOUBLE_QUOTE` - * - `GLFW_KEY_NUMBER_SIGN` - * - `GLFW_KEY_DOLLAR` - * - `GLFW_KEY_AMPERSAND` - * - `GLFW_KEY_APOSTROPHE` - * - `GLFW_KEY_PARENTHESIS_LEFT` - * - `GLFW_KEY_PARENTHESIS_RIGHT` - * - `GLFW_KEY_PLUS` - * - `GLFW_KEY_COMMA` - * - `GLFW_KEY_MINUS` - * - `GLFW_KEY_PERIOD` - * - `GLFW_KEY_SLASH` - * - `GLFW_KEY_0` to `GLFW_KEY_9` - * - `GLFW_KEY_COLON` - * - `GLFW_KEY_SEMICOLON` - * - `GLFW_KEY_LESS` - * - `GLFW_KEY_EQUAL` - * - `GLFW_KEY_GREATER` - * - `GLFW_KEY_AT` - * - `GLFW_KEY_A` to `GLFW_KEY_Z` - * - `GLFW_KEY_LEFT_BRACKET` - * - `GLFW_KEY_BACKSLASH` - * - `GLFW_KEY_RIGHT_BRACKET` - * - `GLFW_KEY_CIRCUMFLEX` - * - `GLFW_KEY_UNDERSCORE` - * - `GLFW_KEY_GRAVE_ACCENT` - * - `GLFW_KEY_WORLD_1` - * - `GLFW_KEY_WORLD_2` - * - `GLFW_KEY_PARAGRAPH` - * - `GLFW_KEY_MASCULINE` - * - `GLFW_KEY_A_GRAVE` - * - `GLFW_KEY_A_DIAERESIS` - * - `GLFW_KEY_A_RING` - * - `GLFW_KEY_AE` - * - `GLFW_KEY_C_CEDILLA` - * - `GLFW_KEY_E_GRAVE` - * - `GLFW_KEY_E_ACUTE` - * - `GLFW_KEY_I_GRAVE` - * - `GLFW_KEY_N_TILDE` - * - `GLFW_KEY_O_GRAVE` - * - `GLFW_KEY_O_DIAERESIS` - * - `GLFW_KEY_O_SLASH` - * - `GLFW_KEY_U_GRAVE` - * - `GLFW_KEY_U_DIAERESIS` - * - `GLFW_KEY_S_SHARP` - * - `GLFW_KEY_CYRILLIC_A` - * - `GLFW_KEY_CYRILLIC_BE` - * - `GLFW_KEY_CYRILLIC_VE` - * - `GLFW_KEY_CYRILLIC_GHE` - * - `GLFW_KEY_CYRILLIC_DE` - * - `GLFW_KEY_CYRILLIC_IE` - * - `GLFW_KEY_CYRILLIC_ZHE` - * - `GLFW_KEY_CYRILLIC_ZE` - * - `GLFW_KEY_CYRILLIC_I` - * - `GLFW_KEY_CYRILLIC_SHORT_I` - * - `GLFW_KEY_CYRILLIC_KA` - * - `GLFW_KEY_CYRILLIC_EL` - * - `GLFW_KEY_CYRILLIC_EM` - * - `GLFW_KEY_CYRILLIC_EN` - * - `GLFW_KEY_CYRILLIC_O` - * - `GLFW_KEY_CYRILLIC_PE` - * - `GLFW_KEY_CYRILLIC_ER` - * - `GLFW_KEY_CYRILLIC_ES` - * - `GLFW_KEY_CYRILLIC_TE` - * - `GLFW_KEY_CYRILLIC_U` - * - `GLFW_KEY_CYRILLIC_EF` - * - `GLFW_KEY_CYRILLIC_HA` - * - `GLFW_KEY_CYRILLIC_TSE` - * - `GLFW_KEY_CYRILLIC_CHE` - * - `GLFW_KEY_CYRILLIC_SHA` - * - `GLFW_KEY_CYRILLIC_SHCHA` - * - `GLFW_KEY_CYRILLIC_HARD_SIGN` - * - `GLFW_KEY_CYRILLIC_YERU` - * - `GLFW_KEY_CYRILLIC_SOFT_SIGN` - * - `GLFW_KEY_CYRILLIC_E` - * - `GLFW_KEY_CYRILLIC_YU` - * - `GLFW_KEY_CYRILLIC_YA` - * - `GLFW_KEY_CYRILLIC_IO` - * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` - * - `GLFW_KEY_KP_DECIMAL` - * - `GLFW_KEY_KP_DIVIDE` - * - `GLFW_KEY_KP_MULTIPLY` - * - `GLFW_KEY_KP_SUBTRACT` - * - `GLFW_KEY_KP_ADD` - * - `GLFW_KEY_KP_EQUAL` - * * Names for printable keys depend on keyboard layout, while names for * non-printable keys are the same across layouts but depend on the application * language and should be localized along with other user interface text. * - * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] key The key to query, or `0`. * @param[in] native_key The platform-specifc identifier of the key to query. * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. * @@ -4519,7 +4235,7 @@ GLFWAPI const char* glfwGetKeyName(uint32_t key, int native_key); * * This function returns the platform-specific identifier of the specified key. * - * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * If the key is `0` or does not exist on the keyboard this * method will return `-1`. * * @param[in] key Any [named key](@ref keys). @@ -4561,7 +4277,7 @@ GLFWAPI int glfwGetNativeKeyForKey(uint32_t key); * __Do not use this function__ to implement [text input](@ref input_char). * * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * @param[in] key The desired [keyboard key](@ref keys). `0` is * not a valid key for this function. * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. * diff --git a/glfw/ibus_glfw.c b/glfw/ibus_glfw.c index bdba0af48..c615c3bf1 100644 --- a/glfw/ibus_glfw.c +++ b/glfw/ibus_glfw.c @@ -111,7 +111,7 @@ send_text(const char *text, int ime_state) { _GLFWwindow *w = _glfwFocusedWindow(); if (w && w->callbacks.keyboard) { GLFWkeyevent fake_ev; - _glfwInitializeKeyEvent(&fake_ev, GLFW_KEY_UNKNOWN, 0, GLFW_PRESS, 0); + _glfwInitializeKeyEvent(&fake_ev, 0, 0, GLFW_PRESS, 0); fake_ev.text = text; fake_ev.ime_state = ime_state; w->callbacks.keyboard((GLFWwindow*) w, &fake_ev); diff --git a/glfw/input.c b/glfw/input.c index 3ead405a6..bb0e2f103 100644 --- a/glfw/input.c +++ b/glfw/input.c @@ -500,200 +500,148 @@ void _glfwFreeJoystick(_GLFWjoystick* js) memset(js, 0, sizeof(_GLFWjoystick)); } +unsigned int +encode_utf8(uint32_t ch, char* dest) { + if (ch < 0x80) { + dest[0] = (char)ch; + return 1; + } + if (ch < 0x800) { + dest[0] = (ch>>6) | 0xC0; + dest[1] = (ch & 0x3F) | 0x80; + return 2; + } + if (ch < 0x10000) { + dest[0] = (ch>>12) | 0xE0; + dest[1] = ((ch>>6) & 0x3F) | 0x80; + dest[2] = (ch & 0x3F) | 0x80; + return 3; + } + if (ch < 0x110000) { + dest[0] = (ch>>18) | 0xF0; + dest[1] = ((ch>>12) & 0x3F) | 0x80; + dest[2] = ((ch>>6) & 0x3F) | 0x80; + dest[3] = (ch & 0x3F) | 0x80; + return 4; + } + return 0; +} + const char* _glfwGetKeyName(int key) { switch (key) { - // Printable keys - case GLFW_KEY_SPACE: return "SPACE"; - case GLFW_KEY_EXCLAM: return "EXCLAM"; - case GLFW_KEY_DOUBLE_QUOTE: return "DOUBLE_QUOTE"; - case GLFW_KEY_NUMBER_SIGN: return "NUMBER_SIGN"; - case GLFW_KEY_DOLLAR: return "DOLLAR"; - case GLFW_KEY_AMPERSAND: return "AMPERSAND"; - case GLFW_KEY_APOSTROPHE: return "APOSTROPHE"; - case GLFW_KEY_PARENTHESIS_LEFT: return "PARENTHESIS_LEFT"; - case GLFW_KEY_PARENTHESIS_RIGHT: return "PARENTHESIS_RIGHT"; - case GLFW_KEY_PLUS: return "PLUS"; - case GLFW_KEY_COMMA: return "COMMA"; - case GLFW_KEY_MINUS: return "MINUS"; - case GLFW_KEY_PERIOD: return "PERIOD"; - case GLFW_KEY_SLASH: return "SLASH"; - case GLFW_KEY_0: return "0"; - case GLFW_KEY_1: return "1"; - case GLFW_KEY_2: return "2"; - case GLFW_KEY_3: return "3"; - case GLFW_KEY_4: return "4"; - case GLFW_KEY_5: return "5"; - case GLFW_KEY_6: return "6"; - case GLFW_KEY_7: return "7"; - case GLFW_KEY_8: return "8"; - case GLFW_KEY_9: return "9"; - case GLFW_KEY_COLON: return "COLON"; - case GLFW_KEY_SEMICOLON: return "SEMICOLON"; - case GLFW_KEY_LESS: return "LESS"; - case GLFW_KEY_EQUAL: return "EQUAL"; - case GLFW_KEY_GREATER: return "GREATER"; - case GLFW_KEY_AT: return "AT"; - case GLFW_KEY_A: return "A"; - case GLFW_KEY_B: return "B"; - case GLFW_KEY_C: return "C"; - case GLFW_KEY_D: return "D"; - case GLFW_KEY_E: return "E"; - case GLFW_KEY_F: return "F"; - case GLFW_KEY_G: return "G"; - case GLFW_KEY_H: return "H"; - case GLFW_KEY_I: return "I"; - case GLFW_KEY_J: return "J"; - case GLFW_KEY_K: return "K"; - case GLFW_KEY_L: return "L"; - case GLFW_KEY_M: return "M"; - case GLFW_KEY_N: return "N"; - case GLFW_KEY_O: return "O"; - case GLFW_KEY_P: return "P"; - case GLFW_KEY_Q: return "Q"; - case GLFW_KEY_R: return "R"; - case GLFW_KEY_S: return "S"; - case GLFW_KEY_T: return "T"; - case GLFW_KEY_U: return "U"; - case GLFW_KEY_V: return "V"; - case GLFW_KEY_W: return "W"; - case GLFW_KEY_X: return "X"; - case GLFW_KEY_Y: return "Y"; - case GLFW_KEY_Z: return "Z"; - case GLFW_KEY_LEFT_BRACKET: return "LEFT_BRACKET"; - case GLFW_KEY_BACKSLASH: return "BACKSLASH"; - case GLFW_KEY_RIGHT_BRACKET: return "RIGHT_BRACKET"; - case GLFW_KEY_CIRCUMFLEX: return "CIRCUMFLEX"; - case GLFW_KEY_UNDERSCORE: return "UNDERSCORE"; - case GLFW_KEY_GRAVE_ACCENT: return "GRAVE_ACCENT"; - case GLFW_KEY_WORLD_1: return "WORLD_1"; - case GLFW_KEY_WORLD_2: return "WORLD_2"; - case GLFW_KEY_PARAGRAPH: return "PARAGRAPH"; - case GLFW_KEY_MASCULINE: return "MASCULINE"; - case GLFW_KEY_A_GRAVE: return "A_GRAVE"; - case GLFW_KEY_A_DIAERESIS: return "A_DIAERESIS"; - case GLFW_KEY_A_RING: return "A_RING"; - case GLFW_KEY_AE: return "AE"; - case GLFW_KEY_C_CEDILLA: return "C_CEDILLA"; - case GLFW_KEY_E_GRAVE: return "E_GRAVE"; - case GLFW_KEY_E_ACUTE: return "E_ACUTE"; - case GLFW_KEY_I_GRAVE: return "I_GRAVE"; - case GLFW_KEY_N_TILDE: return "N_TILDE"; - case GLFW_KEY_O_GRAVE: return "O_GRAVE"; - case GLFW_KEY_O_DIAERESIS: return "O_DIAERESIS"; - case GLFW_KEY_O_SLASH: return "O_SLASH"; - case GLFW_KEY_U_GRAVE: return "U_GRAVE"; - case GLFW_KEY_U_DIAERESIS: return "U_DIAERESIS"; - case GLFW_KEY_S_SHARP: return "S_SHARP"; - case GLFW_KEY_CYRILLIC_A: return "CYRILLIC_A"; - case GLFW_KEY_CYRILLIC_BE: return "CYRILLIC_BE"; - case GLFW_KEY_CYRILLIC_VE: return "CYRILLIC_VE"; - case GLFW_KEY_CYRILLIC_GHE: return "CYRILLIC_GHE"; - case GLFW_KEY_CYRILLIC_DE: return "CYRILLIC_DE"; - case GLFW_KEY_CYRILLIC_IE: return "CYRILLIC_IE"; - case GLFW_KEY_CYRILLIC_ZHE: return "CYRILLIC_ZHE"; - case GLFW_KEY_CYRILLIC_ZE: return "CYRILLIC_ZE"; - case GLFW_KEY_CYRILLIC_I: return "CYRILLIC_I"; - case GLFW_KEY_CYRILLIC_SHORT_I: return "CYRILLIC_SHORT_I"; - case GLFW_KEY_CYRILLIC_KA: return "CYRILLIC_KA"; - case GLFW_KEY_CYRILLIC_EL: return "CYRILLIC_EL"; - case GLFW_KEY_CYRILLIC_EM: return "CYRILLIC_EM"; - case GLFW_KEY_CYRILLIC_EN: return "CYRILLIC_EN"; - case GLFW_KEY_CYRILLIC_O: return "CYRILLIC_O"; - case GLFW_KEY_CYRILLIC_PE: return "CYRILLIC_PE"; - case GLFW_KEY_CYRILLIC_ER: return "CYRILLIC_ER"; - case GLFW_KEY_CYRILLIC_ES: return "CYRILLIC_ES"; - case GLFW_KEY_CYRILLIC_TE: return "CYRILLIC_TE"; - case GLFW_KEY_CYRILLIC_U: return "CYRILLIC_U"; - case GLFW_KEY_CYRILLIC_EF: return "CYRILLIC_EF"; - case GLFW_KEY_CYRILLIC_HA: return "CYRILLIC_HA"; - case GLFW_KEY_CYRILLIC_TSE: return "CYRILLIC_TSE"; - case GLFW_KEY_CYRILLIC_CHE: return "CYRILLIC_CHE"; - case GLFW_KEY_CYRILLIC_SHA: return "CYRILLIC_SHA"; - case GLFW_KEY_CYRILLIC_SHCHA: return "CYRILLIC_SHCHA"; - case GLFW_KEY_CYRILLIC_HARD_SIGN: return "CYRILLIC_HARD_SIGN"; - case GLFW_KEY_CYRILLIC_YERU: return "CYRILLIC_YERU"; - case GLFW_KEY_CYRILLIC_SOFT_SIGN: return "CYRILLIC_SOFT_SIGN"; - case GLFW_KEY_CYRILLIC_E: return "CYRILLIC_E"; - case GLFW_KEY_CYRILLIC_YU: return "CYRILLIC_YU"; - case GLFW_KEY_CYRILLIC_YA: return "CYRILLIC_YA"; - case GLFW_KEY_CYRILLIC_IO: return "CYRILLIC_IO"; - - // Function keys - case GLFW_KEY_ESCAPE: return "ESCAPE"; - case GLFW_KEY_F1: return "F1"; - case GLFW_KEY_F2: return "F2"; - case GLFW_KEY_F3: return "F3"; - case GLFW_KEY_F4: return "F4"; - case GLFW_KEY_F5: return "F5"; - case GLFW_KEY_F6: return "F6"; - case GLFW_KEY_F7: return "F7"; - case GLFW_KEY_F8: return "F8"; - case GLFW_KEY_F9: return "F9"; - case GLFW_KEY_F10: return "F10"; - case GLFW_KEY_F11: return "F11"; - case GLFW_KEY_F12: return "F12"; - case GLFW_KEY_F13: return "F13"; - case GLFW_KEY_F14: return "F14"; - case GLFW_KEY_F15: return "F15"; - case GLFW_KEY_F16: return "F16"; - case GLFW_KEY_F17: return "F17"; - case GLFW_KEY_F18: return "F18"; - case GLFW_KEY_F19: return "F19"; - case GLFW_KEY_F20: return "F20"; - case GLFW_KEY_F21: return "F21"; - case GLFW_KEY_F22: return "F22"; - case GLFW_KEY_F23: return "F23"; - case GLFW_KEY_F24: return "F24"; - case GLFW_KEY_F25: return "F25"; - case GLFW_KEY_UP: return "UP"; - case GLFW_KEY_DOWN: return "DOWN"; - case GLFW_KEY_LEFT: return "LEFT"; - case GLFW_KEY_RIGHT: return "RIGHT"; - case GLFW_KEY_LEFT_SHIFT: return "LEFT SHIFT"; - case GLFW_KEY_RIGHT_SHIFT: return "RIGHT SHIFT"; - case GLFW_KEY_LEFT_CONTROL: return "LEFT CONTROL"; - case GLFW_KEY_RIGHT_CONTROL: return "RIGHT CONTROL"; - case GLFW_KEY_LEFT_ALT: return "LEFT ALT"; - case GLFW_KEY_RIGHT_ALT: return "RIGHT ALT"; - case GLFW_KEY_TAB: return "TAB"; - case GLFW_KEY_ENTER: return "ENTER"; - case GLFW_KEY_BACKSPACE: return "BACKSPACE"; - case GLFW_KEY_INSERT: return "INSERT"; - case GLFW_KEY_DELETE: return "DELETE"; - case GLFW_KEY_PAGE_UP: return "PAGE UP"; - case GLFW_KEY_PAGE_DOWN: return "PAGE DOWN"; - case GLFW_KEY_HOME: return "HOME"; - case GLFW_KEY_END: return "END"; - case GLFW_KEY_KP_0: return "KEYPAD 0"; - case GLFW_KEY_KP_1: return "KEYPAD 1"; - case GLFW_KEY_KP_2: return "KEYPAD 2"; - case GLFW_KEY_KP_3: return "KEYPAD 3"; - case GLFW_KEY_KP_4: return "KEYPAD 4"; - case GLFW_KEY_KP_5: return "KEYPAD 5"; - case GLFW_KEY_KP_6: return "KEYPAD 6"; - case GLFW_KEY_KP_7: return "KEYPAD 7"; - case GLFW_KEY_KP_8: return "KEYPAD 8"; - case GLFW_KEY_KP_9: return "KEYPAD 9"; - case GLFW_KEY_KP_DIVIDE: return "KEYPAD DIVIDE"; - case GLFW_KEY_KP_MULTIPLY: return "KEYPAD MULTIPLY"; - case GLFW_KEY_KP_SUBTRACT: return "KEYPAD SUBTRACT"; - case GLFW_KEY_KP_ADD: return "KEYPAD ADD"; - case GLFW_KEY_KP_DECIMAL: return "KEYPAD DECIMAL"; - case GLFW_KEY_KP_EQUAL: return "KEYPAD EQUAL"; - case GLFW_KEY_KP_ENTER: return "KEYPAD ENTER"; - case GLFW_KEY_PRINT_SCREEN: return "PRINT SCREEN"; - case GLFW_KEY_NUM_LOCK: return "NUM LOCK"; - case GLFW_KEY_CAPS_LOCK: return "CAPS LOCK"; - case GLFW_KEY_SCROLL_LOCK: return "SCROLL LOCK"; - case GLFW_KEY_PAUSE: return "PAUSE"; - case GLFW_KEY_LEFT_SUPER: return "LEFT SUPER"; - case GLFW_KEY_RIGHT_SUPER: return "RIGHT SUPER"; - case GLFW_KEY_MENU: return "MENU"; - - default: return "UNKNOWN"; + /* start functional key names (auto generated by gen-key-constants.py do not edit) */ + case GLFW_FKEY_ESCAPE: return "ESCAPE"; + case GLFW_FKEY_ENTER: return "ENTER"; + case GLFW_FKEY_TAB: return "TAB"; + case GLFW_FKEY_BACKSPACE: return "BACKSPACE"; + case GLFW_FKEY_INSERT: return "INSERT"; + case GLFW_FKEY_DELETE: return "DELETE"; + case GLFW_FKEY_LEFT: return "LEFT"; + case GLFW_FKEY_RIGHT: return "RIGHT"; + case GLFW_FKEY_UP: return "UP"; + case GLFW_FKEY_DOWN: return "DOWN"; + case GLFW_FKEY_PAGE_UP: return "PAGE_UP"; + case GLFW_FKEY_PAGE_DOWN: return "PAGE_DOWN"; + case GLFW_FKEY_HOME: return "HOME"; + case GLFW_FKEY_END: return "END"; + case GLFW_FKEY_CAPS_LOCK: return "CAPS_LOCK"; + case GLFW_FKEY_SCROLL_LOCK: return "SCROLL_LOCK"; + case GLFW_FKEY_NUM_LOCK: return "NUM_LOCK"; + case GLFW_FKEY_PRINT_SCREEN: return "PRINT_SCREEN"; + case GLFW_FKEY_PAUSE: return "PAUSE"; + case GLFW_FKEY_MENU: return "MENU"; + case GLFW_FKEY_F1: return "F1"; + case GLFW_FKEY_F2: return "F2"; + case GLFW_FKEY_F3: return "F3"; + case GLFW_FKEY_F4: return "F4"; + case GLFW_FKEY_F5: return "F5"; + case GLFW_FKEY_F6: return "F6"; + case GLFW_FKEY_F7: return "F7"; + case GLFW_FKEY_F8: return "F8"; + case GLFW_FKEY_F9: return "F9"; + case GLFW_FKEY_F10: return "F10"; + case GLFW_FKEY_F11: return "F11"; + case GLFW_FKEY_F12: return "F12"; + case GLFW_FKEY_F13: return "F13"; + case GLFW_FKEY_F14: return "F14"; + case GLFW_FKEY_F15: return "F15"; + case GLFW_FKEY_F16: return "F16"; + case GLFW_FKEY_F17: return "F17"; + case GLFW_FKEY_F18: return "F18"; + case GLFW_FKEY_F19: return "F19"; + case GLFW_FKEY_F20: return "F20"; + case GLFW_FKEY_F21: return "F21"; + case GLFW_FKEY_F22: return "F22"; + case GLFW_FKEY_F23: return "F23"; + case GLFW_FKEY_F24: return "F24"; + case GLFW_FKEY_F25: return "F25"; + case GLFW_FKEY_F26: return "F26"; + case GLFW_FKEY_F27: return "F27"; + case GLFW_FKEY_F28: return "F28"; + case GLFW_FKEY_F29: return "F29"; + case GLFW_FKEY_F30: return "F30"; + case GLFW_FKEY_F31: return "F31"; + case GLFW_FKEY_F32: return "F32"; + case GLFW_FKEY_F33: return "F33"; + case GLFW_FKEY_F34: return "F34"; + case GLFW_FKEY_F35: return "F35"; + case GLFW_FKEY_KP_0: return "KP_0"; + case GLFW_FKEY_KP_1: return "KP_1"; + case GLFW_FKEY_KP_2: return "KP_2"; + case GLFW_FKEY_KP_3: return "KP_3"; + case GLFW_FKEY_KP_4: return "KP_4"; + case GLFW_FKEY_KP_5: return "KP_5"; + case GLFW_FKEY_KP_6: return "KP_6"; + case GLFW_FKEY_KP_7: return "KP_7"; + case GLFW_FKEY_KP_8: return "KP_8"; + case GLFW_FKEY_KP_9: return "KP_9"; + case GLFW_FKEY_KP_DECIMAL: return "KP_DECIMAL"; + case GLFW_FKEY_KP_DIVIDE: return "KP_DIVIDE"; + case GLFW_FKEY_KP_MULTIPLY: return "KP_MULTIPLY"; + case GLFW_FKEY_KP_SUBTRACT: return "KP_SUBTRACT"; + case GLFW_FKEY_KP_ADD: return "KP_ADD"; + case GLFW_FKEY_KP_ENTER: return "KP_ENTER"; + case GLFW_FKEY_KP_EQUAL: return "KP_EQUAL"; + case GLFW_FKEY_KP_SEPARATOR: return "KP_SEPARATOR"; + case GLFW_FKEY_KP_LEFT: return "KP_LEFT"; + case GLFW_FKEY_KP_RIGHT: return "KP_RIGHT"; + case GLFW_FKEY_KP_UP: return "KP_UP"; + case GLFW_FKEY_KP_DOWN: return "KP_DOWN"; + case GLFW_FKEY_KP_PAGE_UP: return "KP_PAGE_UP"; + case GLFW_FKEY_KP_PAGE_DOWN: return "KP_PAGE_DOWN"; + case GLFW_FKEY_KP_HOME: return "KP_HOME"; + 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"; + case GLFW_FKEY_MEDIA_REVERSE: return "MEDIA_REVERSE"; + case GLFW_FKEY_MEDIA_STOP: return "MEDIA_STOP"; + case GLFW_FKEY_MEDIA_FAST_FORWARD: return "MEDIA_FAST_FORWARD"; + case GLFW_FKEY_MEDIA_REWIND: return "MEDIA_REWIND"; + case GLFW_FKEY_MEDIA_TRACK_NEXT: return "MEDIA_TRACK_NEXT"; + case GLFW_FKEY_MEDIA_TRACK_PREVIOUS: return "MEDIA_TRACK_PREVIOUS"; + case GLFW_FKEY_MEDIA_RECORD: return "MEDIA_RECORD"; + case GLFW_FKEY_LOWER_VOLUME: return "LOWER_VOLUME"; + case GLFW_FKEY_RAISE_VOLUME: return "RAISE_VOLUME"; + case GLFW_FKEY_MUTE_VOLUME: return "MUTE_VOLUME"; +/* end functional key names */ + case 0: return "UNKNOWN"; } + static char buf[16]; + encode_utf8(key, buf); + return buf; } // Center the cursor in the content area of the specified window @@ -849,12 +797,6 @@ GLFWAPI int glfwGetNativeKeyForKey(uint32_t key) { _GLFW_REQUIRE_INIT_OR_RETURN(-1); - if (key < GLFW_KEY_SPACE || key > GLFW_KEY_LAST) - { - _glfwInputError(GLFW_INVALID_ENUM, "Invalid key %i", key); - return GLFW_RELEASE; - } - return _glfwPlatformGetNativeKeyForKey(key); } diff --git a/glfw/xkb_glfw.c b/glfw/xkb_glfw.c index 9cfd17c1a..26033eaf3 100644 --- a/glfw/xkb_glfw.c +++ b/glfw/xkb_glfw.c @@ -558,7 +558,7 @@ glfw_xkb_key_from_ime(_GLFWIBUSKeyEvent *ev, bool handled_by_ime, bool failed) { if (failed && window && window->callbacks.keyboard) { // notify application to remove any existing pre-edit text GLFWkeyevent fake_ev; - _glfwInitializeKeyEvent(&fake_ev, GLFW_KEY_UNKNOWN, 0, GLFW_PRESS, 0); + _glfwInitializeKeyEvent(&fake_ev, 0, 0, GLFW_PRESS, 0); fake_ev.ime_state = 1; window->callbacks.keyboard((GLFWwindow*) window, &fake_ev); } @@ -592,7 +592,7 @@ glfw_xkb_handle_key_event(_GLFWwindow *window, _GLFWXKBData *xkb, xkb_keycode_t xkb_keysym_t xkb_sym; xkb_keycode_t code_for_sym = xkb_keycode, ibus_keycode = xkb_keycode; GLFWkeyevent glfw_ev; - _glfwInitializeKeyEvent(&glfw_ev, GLFW_KEY_UNKNOWN, 0, GLFW_PRESS, 0); // init with default values + _glfwInitializeKeyEvent(&glfw_ev, 0, 0, GLFW_PRESS, 0); // init with default values #ifdef _GLFW_WAYLAND code_for_sym += 8; #else @@ -645,7 +645,7 @@ glfw_xkb_handle_key_event(_GLFWwindow *window, _GLFWXKBData *xkb, xkb_keycode_t } int glfw_sym = glfw_key_for_sym(xkb_sym); bool is_fallback = false; - if (glfw_sym == GLFW_KEY_UNKNOWN && !key_text[0]) { + if (glfw_sym == 0 && !key_text[0]) { int num_default_syms = xkb_state_key_get_syms(sg->default_state, code_for_sym, &default_syms); if (num_default_syms > 0) { xkb_sym = default_syms[0]; diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi index b2ffb6e86..32e62bf39 100644 --- a/kitty/fast_data_types.pyi +++ b/kitty/fast_data_types.pyi @@ -17,193 +17,112 @@ CLOSE_BEING_CONFIRMED: int ERROR_PREFIX: str GLSL_VERSION: int GLFW_IBEAM_CURSOR: int -GLFW_KEY_UNKNOWN: int -GLFW_KEY_SPACE: int -GLFW_KEY_EXCLAM: int -GLFW_KEY_DOUBLE_QUOTE: int -GLFW_KEY_NUMBER_SIGN: int -GLFW_KEY_DOLLAR: int -GLFW_KEY_AMPERSAND: int -GLFW_KEY_APOSTROPHE: int -GLFW_KEY_PARENTHESIS_LEFT: int -GLFW_KEY_PARENTHESIS_RIGHT: int -GLFW_KEY_PLUS: int -GLFW_KEY_COMMA: int -GLFW_KEY_MINUS: int -GLFW_KEY_PERIOD: int -GLFW_KEY_SLASH: int -GLFW_KEY_0: int -GLFW_KEY_1: int -GLFW_KEY_2: int -GLFW_KEY_3: int -GLFW_KEY_4: int -GLFW_KEY_5: int -GLFW_KEY_6: int -GLFW_KEY_7: int -GLFW_KEY_8: int -GLFW_KEY_9: int -GLFW_KEY_COLON: int -GLFW_KEY_SEMICOLON: int -GLFW_KEY_LESS: int -GLFW_KEY_EQUAL: int -GLFW_KEY_GREATER: int -GLFW_KEY_AT: int -GLFW_KEY_A: int -GLFW_KEY_B: int -GLFW_KEY_C: int -GLFW_KEY_D: int -GLFW_KEY_E: int -GLFW_KEY_F: int -GLFW_KEY_G: int -GLFW_KEY_H: int -GLFW_KEY_I: int -GLFW_KEY_J: int -GLFW_KEY_K: int -GLFW_KEY_L: int -GLFW_KEY_M: int -GLFW_KEY_N: int -GLFW_KEY_O: int -GLFW_KEY_P: int -GLFW_KEY_Q: int -GLFW_KEY_R: int -GLFW_KEY_S: int -GLFW_KEY_T: int -GLFW_KEY_U: int -GLFW_KEY_V: int -GLFW_KEY_W: int -GLFW_KEY_X: int -GLFW_KEY_Y: int -GLFW_KEY_Z: int -GLFW_KEY_LEFT_BRACKET: int -GLFW_KEY_BACKSLASH: int -GLFW_KEY_RIGHT_BRACKET: int -GLFW_KEY_CIRCUMFLEX: int -GLFW_KEY_UNDERSCORE: int -GLFW_KEY_GRAVE_ACCENT: int -GLFW_KEY_WORLD_1: int -GLFW_KEY_WORLD_2: int -GLFW_KEY_PARAGRAPH: int -GLFW_KEY_MASCULINE: int -GLFW_KEY_A_GRAVE: int -GLFW_KEY_A_DIAERESIS: int -GLFW_KEY_A_RING: int -GLFW_KEY_AE: int -GLFW_KEY_C_CEDILLA: int -GLFW_KEY_E_GRAVE: int -GLFW_KEY_E_ACUTE: int -GLFW_KEY_I_GRAVE: int -GLFW_KEY_N_TILDE: int -GLFW_KEY_O_GRAVE: int -GLFW_KEY_O_DIAERESIS: int -GLFW_KEY_O_SLASH: int -GLFW_KEY_U_GRAVE: int -GLFW_KEY_U_DIAERESIS: int -GLFW_KEY_S_SHARP: int -GLFW_KEY_CYRILLIC_A: int -GLFW_KEY_CYRILLIC_BE: int -GLFW_KEY_CYRILLIC_VE: int -GLFW_KEY_CYRILLIC_GHE: int -GLFW_KEY_CYRILLIC_DE: int -GLFW_KEY_CYRILLIC_IE: int -GLFW_KEY_CYRILLIC_ZHE: int -GLFW_KEY_CYRILLIC_ZE: int -GLFW_KEY_CYRILLIC_I: int -GLFW_KEY_CYRILLIC_SHORT_I: int -GLFW_KEY_CYRILLIC_KA: int -GLFW_KEY_CYRILLIC_EL: int -GLFW_KEY_CYRILLIC_EM: int -GLFW_KEY_CYRILLIC_EN: int -GLFW_KEY_CYRILLIC_O: int -GLFW_KEY_CYRILLIC_PE: int -GLFW_KEY_CYRILLIC_ER: int -GLFW_KEY_CYRILLIC_ES: int -GLFW_KEY_CYRILLIC_TE: int -GLFW_KEY_CYRILLIC_U: int -GLFW_KEY_CYRILLIC_EF: int -GLFW_KEY_CYRILLIC_HA: int -GLFW_KEY_CYRILLIC_TSE: int -GLFW_KEY_CYRILLIC_CHE: int -GLFW_KEY_CYRILLIC_SHA: int -GLFW_KEY_CYRILLIC_SHCHA: int -GLFW_KEY_CYRILLIC_HARD_SIGN: int -GLFW_KEY_CYRILLIC_YERU: int -GLFW_KEY_CYRILLIC_SOFT_SIGN: int -GLFW_KEY_CYRILLIC_E: int -GLFW_KEY_CYRILLIC_YU: int -GLFW_KEY_CYRILLIC_YA: int -GLFW_KEY_CYRILLIC_IO: int -GLFW_KEY_LAST_PRINTABLE: int -GLFW_KEY_ESCAPE: int -GLFW_KEY_ENTER: int -GLFW_KEY_TAB: int -GLFW_KEY_BACKSPACE: int -GLFW_KEY_INSERT: int -GLFW_KEY_DELETE: int -GLFW_KEY_RIGHT: int -GLFW_KEY_LEFT: int -GLFW_KEY_DOWN: int -GLFW_KEY_UP: int -GLFW_KEY_PAGE_UP: int -GLFW_KEY_PAGE_DOWN: int -GLFW_KEY_HOME: int -GLFW_KEY_END: int -GLFW_KEY_CAPS_LOCK: int -GLFW_KEY_SCROLL_LOCK: int -GLFW_KEY_NUM_LOCK: int -GLFW_KEY_PRINT_SCREEN: int -GLFW_KEY_PAUSE: int -GLFW_KEY_F1: int -GLFW_KEY_F2: int -GLFW_KEY_F3: int -GLFW_KEY_F4: int -GLFW_KEY_F5: int -GLFW_KEY_F6: int -GLFW_KEY_F7: int -GLFW_KEY_F8: int -GLFW_KEY_F9: int -GLFW_KEY_F10: int -GLFW_KEY_F11: int -GLFW_KEY_F12: int -GLFW_KEY_F13: int -GLFW_KEY_F14: int -GLFW_KEY_F15: int -GLFW_KEY_F16: int -GLFW_KEY_F17: int -GLFW_KEY_F18: int -GLFW_KEY_F19: int -GLFW_KEY_F20: int -GLFW_KEY_F21: int -GLFW_KEY_F22: int -GLFW_KEY_F23: int -GLFW_KEY_F24: int -GLFW_KEY_F25: int -GLFW_KEY_KP_0: int -GLFW_KEY_KP_1: int -GLFW_KEY_KP_2: int -GLFW_KEY_KP_3: int -GLFW_KEY_KP_4: int -GLFW_KEY_KP_5: int -GLFW_KEY_KP_6: int -GLFW_KEY_KP_7: int -GLFW_KEY_KP_8: int -GLFW_KEY_KP_9: int -GLFW_KEY_KP_DECIMAL: int -GLFW_KEY_KP_DIVIDE: int -GLFW_KEY_KP_MULTIPLY: int -GLFW_KEY_KP_SUBTRACT: int -GLFW_KEY_KP_ADD: int -GLFW_KEY_KP_ENTER: int -GLFW_KEY_KP_EQUAL: int -GLFW_KEY_LEFT_SHIFT: int -GLFW_KEY_LEFT_CONTROL: int -GLFW_KEY_LEFT_ALT: int -GLFW_KEY_LEFT_SUPER: int -GLFW_KEY_RIGHT_SHIFT: int -GLFW_KEY_RIGHT_CONTROL: int -GLFW_KEY_RIGHT_ALT: int -GLFW_KEY_RIGHT_SUPER: int -GLFW_KEY_MENU: int -GLFW_KEY_LAST: int +# start glfw functional keys (auto generated by gen-key-constants.py do not edit) + ADDC(GLFW_FKEY_ESCAPE); + ADDC(GLFW_FKEY_ENTER); + ADDC(GLFW_FKEY_TAB); + ADDC(GLFW_FKEY_BACKSPACE); + ADDC(GLFW_FKEY_INSERT); + ADDC(GLFW_FKEY_DELETE); + ADDC(GLFW_FKEY_LEFT); + ADDC(GLFW_FKEY_RIGHT); + ADDC(GLFW_FKEY_UP); + ADDC(GLFW_FKEY_DOWN); + ADDC(GLFW_FKEY_PAGE_UP); + ADDC(GLFW_FKEY_PAGE_DOWN); + ADDC(GLFW_FKEY_HOME); + ADDC(GLFW_FKEY_END); + ADDC(GLFW_FKEY_CAPS_LOCK); + ADDC(GLFW_FKEY_SCROLL_LOCK); + ADDC(GLFW_FKEY_NUM_LOCK); + ADDC(GLFW_FKEY_PRINT_SCREEN); + ADDC(GLFW_FKEY_PAUSE); + ADDC(GLFW_FKEY_MENU); + ADDC(GLFW_FKEY_F1); + ADDC(GLFW_FKEY_F2); + ADDC(GLFW_FKEY_F3); + ADDC(GLFW_FKEY_F4); + ADDC(GLFW_FKEY_F5); + ADDC(GLFW_FKEY_F6); + ADDC(GLFW_FKEY_F7); + ADDC(GLFW_FKEY_F8); + ADDC(GLFW_FKEY_F9); + ADDC(GLFW_FKEY_F10); + ADDC(GLFW_FKEY_F11); + ADDC(GLFW_FKEY_F12); + ADDC(GLFW_FKEY_F13); + ADDC(GLFW_FKEY_F14); + ADDC(GLFW_FKEY_F15); + ADDC(GLFW_FKEY_F16); + ADDC(GLFW_FKEY_F17); + ADDC(GLFW_FKEY_F18); + ADDC(GLFW_FKEY_F19); + ADDC(GLFW_FKEY_F20); + ADDC(GLFW_FKEY_F21); + ADDC(GLFW_FKEY_F22); + ADDC(GLFW_FKEY_F23); + ADDC(GLFW_FKEY_F24); + ADDC(GLFW_FKEY_F25); + ADDC(GLFW_FKEY_F26); + ADDC(GLFW_FKEY_F27); + ADDC(GLFW_FKEY_F28); + ADDC(GLFW_FKEY_F29); + ADDC(GLFW_FKEY_F30); + ADDC(GLFW_FKEY_F31); + ADDC(GLFW_FKEY_F32); + ADDC(GLFW_FKEY_F33); + ADDC(GLFW_FKEY_F34); + ADDC(GLFW_FKEY_F35); + ADDC(GLFW_FKEY_KP_0); + ADDC(GLFW_FKEY_KP_1); + ADDC(GLFW_FKEY_KP_2); + ADDC(GLFW_FKEY_KP_3); + ADDC(GLFW_FKEY_KP_4); + ADDC(GLFW_FKEY_KP_5); + ADDC(GLFW_FKEY_KP_6); + ADDC(GLFW_FKEY_KP_7); + ADDC(GLFW_FKEY_KP_8); + ADDC(GLFW_FKEY_KP_9); + ADDC(GLFW_FKEY_KP_DECIMAL); + ADDC(GLFW_FKEY_KP_DIVIDE); + ADDC(GLFW_FKEY_KP_MULTIPLY); + ADDC(GLFW_FKEY_KP_SUBTRACT); + ADDC(GLFW_FKEY_KP_ADD); + ADDC(GLFW_FKEY_KP_ENTER); + ADDC(GLFW_FKEY_KP_EQUAL); + ADDC(GLFW_FKEY_KP_SEPARATOR); + ADDC(GLFW_FKEY_KP_LEFT); + ADDC(GLFW_FKEY_KP_RIGHT); + ADDC(GLFW_FKEY_KP_UP); + ADDC(GLFW_FKEY_KP_DOWN); + ADDC(GLFW_FKEY_KP_PAGE_UP); + ADDC(GLFW_FKEY_KP_PAGE_DOWN); + ADDC(GLFW_FKEY_KP_HOME); + 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); + ADDC(GLFW_FKEY_MEDIA_REVERSE); + ADDC(GLFW_FKEY_MEDIA_STOP); + ADDC(GLFW_FKEY_MEDIA_FAST_FORWARD); + ADDC(GLFW_FKEY_MEDIA_REWIND); + ADDC(GLFW_FKEY_MEDIA_TRACK_NEXT); + ADDC(GLFW_FKEY_MEDIA_TRACK_PREVIOUS); + ADDC(GLFW_FKEY_MEDIA_RECORD); + ADDC(GLFW_FKEY_LOWER_VOLUME); + ADDC(GLFW_FKEY_RAISE_VOLUME); + ADDC(GLFW_FKEY_MUTE_VOLUME); +# end glfw functional keys GLFW_MOD_SHIFT: int GLFW_MOD_CONTROL: int GLFW_MOD_ALT: int diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h index e5dd200f4..7c5e90e7e 100644 --- a/kitty/glfw-wrapper.h +++ b/kitty/glfw-wrapper.h @@ -82,310 +82,115 @@ /* start functional key names (auto generated by gen-key-constants.py do not edit) */ typedef enum { - GLFW_FKEY_FIRST = 0xe000, - GLFW_FKEY_ESCAPE = 0xe000, - GLFW_FKEY_ENTER = 0xe001, - GLFW_FKEY_TAB = 0xe002, - GLFW_FKEY_BACKSPACE = 0xe003, - GLFW_FKEY_INSERT = 0xe004, - GLFW_FKEY_DELETE = 0xe005, - GLFW_FKEY_LEFT = 0xe006, - GLFW_FKEY_RIGHT = 0xe007, - GLFW_FKEY_UP = 0xe008, - GLFW_FKEY_DOWN = 0xe009, - GLFW_FKEY_PAGE_UP = 0xe00a, - GLFW_FKEY_PAGE_DOWN = 0xe00b, - GLFW_FKEY_HOME = 0xe00c, - GLFW_FKEY_END = 0xe00d, - GLFW_FKEY_CAPS_LOCK = 0xe00e, - GLFW_FKEY_SCROLL_LOCK = 0xe00f, - GLFW_FKEY_NUM_LOCK = 0xe010, - GLFW_FKEY_PRINT_SCREEN = 0xe011, - GLFW_FKEY_PAUSE = 0xe012, - GLFW_FKEY_MENU = 0xe013, - GLFW_FKEY_F1 = 0xe014, - GLFW_FKEY_F2 = 0xe015, - GLFW_FKEY_F3 = 0xe016, - GLFW_FKEY_F4 = 0xe017, - GLFW_FKEY_F5 = 0xe018, - GLFW_FKEY_F6 = 0xe019, - GLFW_FKEY_F7 = 0xe01a, - GLFW_FKEY_F8 = 0xe01b, - GLFW_FKEY_F9 = 0xe01c, - GLFW_FKEY_F10 = 0xe01d, - GLFW_FKEY_F11 = 0xe01e, - GLFW_FKEY_F12 = 0xe01f, - GLFW_FKEY_F13 = 0xe020, - GLFW_FKEY_F14 = 0xe021, - GLFW_FKEY_F15 = 0xe022, - GLFW_FKEY_F16 = 0xe023, - GLFW_FKEY_F17 = 0xe024, - GLFW_FKEY_F18 = 0xe025, - GLFW_FKEY_F19 = 0xe026, - GLFW_FKEY_F20 = 0xe027, - GLFW_FKEY_F21 = 0xe028, - GLFW_FKEY_F22 = 0xe029, - GLFW_FKEY_F23 = 0xe02a, - GLFW_FKEY_F24 = 0xe02b, - GLFW_FKEY_F25 = 0xe02c, - GLFW_FKEY_F26 = 0xe02d, - GLFW_FKEY_F27 = 0xe02e, - GLFW_FKEY_F28 = 0xe02f, - GLFW_FKEY_F29 = 0xe030, - GLFW_FKEY_F30 = 0xe031, - GLFW_FKEY_F31 = 0xe032, - GLFW_FKEY_F32 = 0xe033, - GLFW_FKEY_F33 = 0xe034, - GLFW_FKEY_F34 = 0xe035, - GLFW_FKEY_F35 = 0xe036, - GLFW_FKEY_KP_0 = 0xe037, - GLFW_FKEY_KP_1 = 0xe038, - GLFW_FKEY_KP_2 = 0xe039, - GLFW_FKEY_KP_3 = 0xe03a, - GLFW_FKEY_KP_4 = 0xe03b, - GLFW_FKEY_KP_5 = 0xe03c, - GLFW_FKEY_KP_6 = 0xe03d, - GLFW_FKEY_KP_7 = 0xe03e, - GLFW_FKEY_KP_8 = 0xe03f, - GLFW_FKEY_KP_9 = 0xe040, - GLFW_FKEY_KP_DECIMAL = 0xe041, - GLFW_FKEY_KP_DIVIDE = 0xe042, - GLFW_FKEY_KP_MULTIPLY = 0xe043, - GLFW_FKEY_KP_SUBTRACT = 0xe044, - GLFW_FKEY_KP_ADD = 0xe045, - GLFW_FKEY_KP_ENTER = 0xe046, - GLFW_FKEY_KP_EQUAL = 0xe047, - GLFW_FKEY_KP_SEPARATOR = 0xe048, - GLFW_FKEY_KP_LEFT = 0xe049, - GLFW_FKEY_KP_RIGHT = 0xe04a, - GLFW_FKEY_KP_UP = 0xe04b, - GLFW_FKEY_KP_DOWN = 0xe04c, - GLFW_FKEY_KP_PAGE_UP = 0xe04d, - GLFW_FKEY_KP_PAGE_DOWN = 0xe04e, - GLFW_FKEY_KP_HOME = 0xe04f, - GLFW_FKEY_KP_END = 0xe050, - GLFW_FKEY_KP_INSERT = 0xe051, - GLFW_FKEY_KP_DELETE = 0xe052, - GLFW_FKEY_LEFT_SHIFT = 0xe053, - GLFW_FKEY_LEFT_CONTROL = 0xe054, - GLFW_FKEY_LEFT_ALT = 0xe055, - GLFW_FKEY_LEFT_SUPER = 0xe056, - GLFW_FKEY_RIGHT_SHIFT = 0xe057, - GLFW_FKEY_RIGHT_CONTROL = 0xe058, - GLFW_FKEY_RIGHT_ALT = 0xe059, - GLFW_FKEY_RIGHT_SUPER = 0xe05a, - GLFW_FKEY_MEDIA_PLAY = 0xe05b, - GLFW_FKEY_MEDIA_PAUSE = 0xe05c, - GLFW_FKEY_MEDIA_PLAY_PAUSE = 0xe05d, - GLFW_FKEY_MEDIA_REVERSE = 0xe05e, - GLFW_FKEY_MEDIA_STOP = 0xe05f, - GLFW_FKEY_MEDIA_FAST_FORWARD = 0xe060, - GLFW_FKEY_MEDIA_REWIND = 0xe061, - GLFW_FKEY_MEDIA_TRACK_NEXT = 0xe062, - GLFW_FKEY_MEDIA_TRACK_PREVIOUS = 0xe063, - GLFW_FKEY_MEDIA_RECORD = 0xe064, - GLFW_FKEY_LOWER_VOLUME = 0xe065, - GLFW_FKEY_RAISE_VOLUME = 0xe066, - GLFW_FKEY_MUTE_VOLUME = 0xe067, - GLFW_FKEY_LAST = 0xe067 + GLFW_FKEY_FIRST = 0xe000u, + GLFW_FKEY_ESCAPE = 0xe000u, + GLFW_FKEY_ENTER = 0xe001u, + GLFW_FKEY_TAB = 0xe002u, + GLFW_FKEY_BACKSPACE = 0xe003u, + GLFW_FKEY_INSERT = 0xe004u, + GLFW_FKEY_DELETE = 0xe005u, + GLFW_FKEY_LEFT = 0xe006u, + GLFW_FKEY_RIGHT = 0xe007u, + GLFW_FKEY_UP = 0xe008u, + GLFW_FKEY_DOWN = 0xe009u, + GLFW_FKEY_PAGE_UP = 0xe00au, + GLFW_FKEY_PAGE_DOWN = 0xe00bu, + GLFW_FKEY_HOME = 0xe00cu, + GLFW_FKEY_END = 0xe00du, + GLFW_FKEY_CAPS_LOCK = 0xe00eu, + GLFW_FKEY_SCROLL_LOCK = 0xe00fu, + GLFW_FKEY_NUM_LOCK = 0xe010u, + GLFW_FKEY_PRINT_SCREEN = 0xe011u, + GLFW_FKEY_PAUSE = 0xe012u, + GLFW_FKEY_MENU = 0xe013u, + GLFW_FKEY_F1 = 0xe014u, + GLFW_FKEY_F2 = 0xe015u, + GLFW_FKEY_F3 = 0xe016u, + GLFW_FKEY_F4 = 0xe017u, + GLFW_FKEY_F5 = 0xe018u, + GLFW_FKEY_F6 = 0xe019u, + GLFW_FKEY_F7 = 0xe01au, + GLFW_FKEY_F8 = 0xe01bu, + GLFW_FKEY_F9 = 0xe01cu, + GLFW_FKEY_F10 = 0xe01du, + GLFW_FKEY_F11 = 0xe01eu, + GLFW_FKEY_F12 = 0xe01fu, + GLFW_FKEY_F13 = 0xe020u, + GLFW_FKEY_F14 = 0xe021u, + GLFW_FKEY_F15 = 0xe022u, + GLFW_FKEY_F16 = 0xe023u, + GLFW_FKEY_F17 = 0xe024u, + GLFW_FKEY_F18 = 0xe025u, + GLFW_FKEY_F19 = 0xe026u, + GLFW_FKEY_F20 = 0xe027u, + GLFW_FKEY_F21 = 0xe028u, + GLFW_FKEY_F22 = 0xe029u, + GLFW_FKEY_F23 = 0xe02au, + GLFW_FKEY_F24 = 0xe02bu, + GLFW_FKEY_F25 = 0xe02cu, + GLFW_FKEY_F26 = 0xe02du, + GLFW_FKEY_F27 = 0xe02eu, + GLFW_FKEY_F28 = 0xe02fu, + GLFW_FKEY_F29 = 0xe030u, + GLFW_FKEY_F30 = 0xe031u, + GLFW_FKEY_F31 = 0xe032u, + GLFW_FKEY_F32 = 0xe033u, + GLFW_FKEY_F33 = 0xe034u, + GLFW_FKEY_F34 = 0xe035u, + GLFW_FKEY_F35 = 0xe036u, + GLFW_FKEY_KP_0 = 0xe037u, + GLFW_FKEY_KP_1 = 0xe038u, + GLFW_FKEY_KP_2 = 0xe039u, + GLFW_FKEY_KP_3 = 0xe03au, + GLFW_FKEY_KP_4 = 0xe03bu, + GLFW_FKEY_KP_5 = 0xe03cu, + GLFW_FKEY_KP_6 = 0xe03du, + GLFW_FKEY_KP_7 = 0xe03eu, + GLFW_FKEY_KP_8 = 0xe03fu, + GLFW_FKEY_KP_9 = 0xe040u, + GLFW_FKEY_KP_DECIMAL = 0xe041u, + GLFW_FKEY_KP_DIVIDE = 0xe042u, + GLFW_FKEY_KP_MULTIPLY = 0xe043u, + GLFW_FKEY_KP_SUBTRACT = 0xe044u, + GLFW_FKEY_KP_ADD = 0xe045u, + GLFW_FKEY_KP_ENTER = 0xe046u, + GLFW_FKEY_KP_EQUAL = 0xe047u, + GLFW_FKEY_KP_SEPARATOR = 0xe048u, + GLFW_FKEY_KP_LEFT = 0xe049u, + GLFW_FKEY_KP_RIGHT = 0xe04au, + GLFW_FKEY_KP_UP = 0xe04bu, + GLFW_FKEY_KP_DOWN = 0xe04cu, + GLFW_FKEY_KP_PAGE_UP = 0xe04du, + GLFW_FKEY_KP_PAGE_DOWN = 0xe04eu, + GLFW_FKEY_KP_HOME = 0xe04fu, + 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 } GLFWFunctionKey; /* end functional key names */ -/* The unknown key */ -#define GLFW_KEY_UNKNOWN -1 - -/* Printable keys */ -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_EXCLAM 33 /* ! */ -#define GLFW_KEY_DOUBLE_QUOTE 34 /* " */ -#define GLFW_KEY_NUMBER_SIGN 35 /* # */ -#define GLFW_KEY_DOLLAR 36 /* $ */ -#define GLFW_KEY_AMPERSAND 38 /* & */ -#define GLFW_KEY_APOSTROPHE 39 /* ' */ -#define GLFW_KEY_PARENTHESIS_LEFT 40 /* ( */ -#define GLFW_KEY_PARENTHESIS_RIGHT 41 /* ) */ -#define GLFW_KEY_PLUS 43 /* + */ -#define GLFW_KEY_COMMA 44 /* , */ -#define GLFW_KEY_MINUS 45 /* - */ -#define GLFW_KEY_PERIOD 46 /* . */ -#define GLFW_KEY_SLASH 47 /* / */ -#define GLFW_KEY_0 48 -#define GLFW_KEY_1 49 -#define GLFW_KEY_2 50 -#define GLFW_KEY_3 51 -#define GLFW_KEY_4 52 -#define GLFW_KEY_5 53 -#define GLFW_KEY_6 54 -#define GLFW_KEY_7 55 -#define GLFW_KEY_8 56 -#define GLFW_KEY_9 57 -#define GLFW_KEY_COLON 58 /* : */ -#define GLFW_KEY_SEMICOLON 59 /* ; */ -#define GLFW_KEY_LESS 60 /* < */ -#define GLFW_KEY_EQUAL 61 /* = */ -#define GLFW_KEY_GREATER 62 /* > */ -#define GLFW_KEY_AT 64 /* @ */ -#define GLFW_KEY_A 65 -#define GLFW_KEY_B 66 -#define GLFW_KEY_C 67 -#define GLFW_KEY_D 68 -#define GLFW_KEY_E 69 -#define GLFW_KEY_F 70 -#define GLFW_KEY_G 71 -#define GLFW_KEY_H 72 -#define GLFW_KEY_I 73 -#define GLFW_KEY_J 74 -#define GLFW_KEY_K 75 -#define GLFW_KEY_L 76 -#define GLFW_KEY_M 77 -#define GLFW_KEY_N 78 -#define GLFW_KEY_O 79 -#define GLFW_KEY_P 80 -#define GLFW_KEY_Q 81 -#define GLFW_KEY_R 82 -#define GLFW_KEY_S 83 -#define GLFW_KEY_T 84 -#define GLFW_KEY_U 85 -#define GLFW_KEY_V 86 -#define GLFW_KEY_W 87 -#define GLFW_KEY_X 88 -#define GLFW_KEY_Y 89 -#define GLFW_KEY_Z 90 -#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ -#define GLFW_KEY_BACKSLASH 92 /* \ */ -#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ -#define GLFW_KEY_CIRCUMFLEX 94 /* ^ */ -#define GLFW_KEY_UNDERSCORE 95 /* _ */ -#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_PARAGRAPH 167 /* § */ -#define GLFW_KEY_MASCULINE 186 /* º */ -#define GLFW_KEY_A_GRAVE 192 /* À */ -#define GLFW_KEY_A_DIAERESIS 196 /* Ä */ -#define GLFW_KEY_A_RING 197 /* Å */ -#define GLFW_KEY_AE 198 /* Æ */ -#define GLFW_KEY_C_CEDILLA 199 /* Ç */ -#define GLFW_KEY_E_GRAVE 200 /* È */ -#define GLFW_KEY_E_ACUTE 201 /* É */ -#define GLFW_KEY_I_GRAVE 204 /* Ì */ -#define GLFW_KEY_N_TILDE 209 /* Ñ */ -#define GLFW_KEY_O_GRAVE 210 /* Ò */ -#define GLFW_KEY_O_DIAERESIS 214 /* Ö */ -#define GLFW_KEY_O_SLASH 216 /* Ø */ -#define GLFW_KEY_U_GRAVE 217 /* Ù */ -#define GLFW_KEY_U_DIAERESIS 220 /* Ü */ -#define GLFW_KEY_S_SHARP 222 /* ß */ -#define GLFW_KEY_CYRILLIC_A 223 /* А */ -#define GLFW_KEY_CYRILLIC_BE 224 /* Б */ -#define GLFW_KEY_CYRILLIC_VE 225 /* В */ -#define GLFW_KEY_CYRILLIC_GHE 226 /* Г */ -#define GLFW_KEY_CYRILLIC_DE 227 /* Д */ -#define GLFW_KEY_CYRILLIC_IE 228 /* Е */ -#define GLFW_KEY_CYRILLIC_ZHE 229 /* Ж */ -#define GLFW_KEY_CYRILLIC_ZE 230 /* З */ -#define GLFW_KEY_CYRILLIC_I 231 /* И */ -#define GLFW_KEY_CYRILLIC_SHORT_I 232 /* Й */ -#define GLFW_KEY_CYRILLIC_KA 233 /* К */ -#define GLFW_KEY_CYRILLIC_EL 234 /* Л */ -#define GLFW_KEY_CYRILLIC_EM 235 /* М */ -#define GLFW_KEY_CYRILLIC_EN 236 /* Н */ -#define GLFW_KEY_CYRILLIC_O 237 /* О */ -#define GLFW_KEY_CYRILLIC_PE 238 /* П */ -#define GLFW_KEY_CYRILLIC_ER 239 /* Р */ -#define GLFW_KEY_CYRILLIC_ES 240 /* С */ -#define GLFW_KEY_CYRILLIC_TE 241 /* Т */ -#define GLFW_KEY_CYRILLIC_U 242 /* У */ -#define GLFW_KEY_CYRILLIC_EF 243 /* Ф */ -#define GLFW_KEY_CYRILLIC_HA 244 /* Х */ -#define GLFW_KEY_CYRILLIC_TSE 245 /* Ц */ -#define GLFW_KEY_CYRILLIC_CHE 246 /* Ч */ -#define GLFW_KEY_CYRILLIC_SHA 247 /* Ш */ -#define GLFW_KEY_CYRILLIC_SHCHA 248 /* Щ */ -#define GLFW_KEY_CYRILLIC_HARD_SIGN 249 /* Ъ */ -#define GLFW_KEY_CYRILLIC_YERU 250 /* Ы */ -#define GLFW_KEY_CYRILLIC_SOFT_SIGN 251 /* Ь */ -#define GLFW_KEY_CYRILLIC_E 252 /* Э */ -#define GLFW_KEY_CYRILLIC_YU 253 /* Ю */ -#define GLFW_KEY_CYRILLIC_YA 254 /* Я */ -#define GLFW_KEY_CYRILLIC_IO 255 /* Ё */ - -#define GLFW_KEY_LAST_PRINTABLE GLFW_KEY_CYRILLIC_IO - -/* Function keys */ -#define GLFW_KEY_ESCAPE 256 -#define GLFW_KEY_ENTER 257 -#define GLFW_KEY_TAB 258 -#define GLFW_KEY_BACKSPACE 259 -#define GLFW_KEY_INSERT 260 -#define GLFW_KEY_DELETE 261 -#define GLFW_KEY_RIGHT 262 -#define GLFW_KEY_LEFT 263 -#define GLFW_KEY_DOWN 264 -#define GLFW_KEY_UP 265 -#define GLFW_KEY_PAGE_UP 266 -#define GLFW_KEY_PAGE_DOWN 267 -#define GLFW_KEY_HOME 268 -#define GLFW_KEY_END 269 -#define GLFW_KEY_CAPS_LOCK 280 -#define GLFW_KEY_SCROLL_LOCK 281 -#define GLFW_KEY_NUM_LOCK 282 -#define GLFW_KEY_PRINT_SCREEN 283 -#define GLFW_KEY_PAUSE 284 -#define GLFW_KEY_F1 290 -#define GLFW_KEY_F2 291 -#define GLFW_KEY_F3 292 -#define GLFW_KEY_F4 293 -#define GLFW_KEY_F5 294 -#define GLFW_KEY_F6 295 -#define GLFW_KEY_F7 296 -#define GLFW_KEY_F8 297 -#define GLFW_KEY_F9 298 -#define GLFW_KEY_F10 299 -#define GLFW_KEY_F11 300 -#define GLFW_KEY_F12 301 -#define GLFW_KEY_F13 302 -#define GLFW_KEY_F14 303 -#define GLFW_KEY_F15 304 -#define GLFW_KEY_F16 305 -#define GLFW_KEY_F17 306 -#define GLFW_KEY_F18 307 -#define GLFW_KEY_F19 308 -#define GLFW_KEY_F20 309 -#define GLFW_KEY_F21 310 -#define GLFW_KEY_F22 311 -#define GLFW_KEY_F23 312 -#define GLFW_KEY_F24 313 -#define GLFW_KEY_F25 314 -#define GLFW_KEY_KP_0 320 -#define GLFW_KEY_KP_1 321 -#define GLFW_KEY_KP_2 322 -#define GLFW_KEY_KP_3 323 -#define GLFW_KEY_KP_4 324 -#define GLFW_KEY_KP_5 325 -#define GLFW_KEY_KP_6 326 -#define GLFW_KEY_KP_7 327 -#define GLFW_KEY_KP_8 328 -#define GLFW_KEY_KP_9 329 -#define GLFW_KEY_KP_DECIMAL 330 -#define GLFW_KEY_KP_DIVIDE 331 -#define GLFW_KEY_KP_MULTIPLY 332 -#define GLFW_KEY_KP_SUBTRACT 333 -#define GLFW_KEY_KP_ADD 334 -#define GLFW_KEY_KP_ENTER 335 -#define GLFW_KEY_KP_EQUAL 336 -#define GLFW_KEY_LEFT_SHIFT 340 -#define GLFW_KEY_LEFT_CONTROL 341 -#define GLFW_KEY_LEFT_ALT 342 -#define GLFW_KEY_LEFT_SUPER 343 -#define GLFW_KEY_RIGHT_SHIFT 344 -#define GLFW_KEY_RIGHT_CONTROL 345 -#define GLFW_KEY_RIGHT_ALT 346 -#define GLFW_KEY_RIGHT_SUPER 347 -#define GLFW_KEY_MENU 348 - -#define GLFW_KEY_LAST GLFW_KEY_MENU - /*! @} */ /*! @defgroup mods Modifier key flags diff --git a/kitty/glfw.c b/kitty/glfw.c index e970f2cba..f4a1f9f20 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -225,19 +225,19 @@ refresh_callback(GLFWwindow *w) { static int mods_at_last_key_or_button_event = 0; static inline int -key_to_modifier(int key) { +key_to_modifier(uint32_t key) { switch(key) { - case GLFW_KEY_LEFT_SHIFT: - case GLFW_KEY_RIGHT_SHIFT: + case GLFW_FKEY_LEFT_SHIFT: + case GLFW_FKEY_RIGHT_SHIFT: return GLFW_MOD_SHIFT; - case GLFW_KEY_LEFT_CONTROL: - case GLFW_KEY_RIGHT_CONTROL: + case GLFW_FKEY_LEFT_CONTROL: + case GLFW_FKEY_RIGHT_CONTROL: return GLFW_MOD_CONTROL; - case GLFW_KEY_LEFT_ALT: - case GLFW_KEY_RIGHT_ALT: + case GLFW_FKEY_LEFT_ALT: + case GLFW_FKEY_RIGHT_ALT: return GLFW_MOD_ALT; - case GLFW_KEY_LEFT_SUPER: - case GLFW_KEY_RIGHT_SUPER: + case GLFW_FKEY_LEFT_SUPER: + case GLFW_FKEY_RIGHT_SUPER: return GLFW_MOD_SUPER; default: return -1; @@ -1257,201 +1257,112 @@ init_glfw(PyObject *m) { ADDC(true); ADDC(false); ADDC(GLFW_IBEAM_CURSOR); ADDC(GLFW_HAND_CURSOR); ADDC(GLFW_ARROW_CURSOR); -// --- Keys -------------------------------------------------------------------- - -// --- The unknown key --------------------------------------------------------- - ADDC(GLFW_KEY_UNKNOWN); - -// --- Printable keys ---------------------------------------------------------- - ADDC(GLFW_KEY_SPACE); - ADDC(GLFW_KEY_EXCLAM); - ADDC(GLFW_KEY_DOUBLE_QUOTE); - ADDC(GLFW_KEY_NUMBER_SIGN); - ADDC(GLFW_KEY_DOLLAR); - ADDC(GLFW_KEY_AMPERSAND); - ADDC(GLFW_KEY_APOSTROPHE); - ADDC(GLFW_KEY_PARENTHESIS_LEFT); - ADDC(GLFW_KEY_PARENTHESIS_RIGHT); - ADDC(GLFW_KEY_PLUS); - ADDC(GLFW_KEY_COMMA); - ADDC(GLFW_KEY_MINUS); - ADDC(GLFW_KEY_PERIOD); - ADDC(GLFW_KEY_SLASH); - ADDC(GLFW_KEY_0); - ADDC(GLFW_KEY_1); - ADDC(GLFW_KEY_2); - ADDC(GLFW_KEY_3); - ADDC(GLFW_KEY_4); - ADDC(GLFW_KEY_5); - ADDC(GLFW_KEY_6); - ADDC(GLFW_KEY_7); - ADDC(GLFW_KEY_8); - ADDC(GLFW_KEY_9); - ADDC(GLFW_KEY_COLON); - ADDC(GLFW_KEY_SEMICOLON); - ADDC(GLFW_KEY_LESS); - ADDC(GLFW_KEY_EQUAL); - ADDC(GLFW_KEY_GREATER); - ADDC(GLFW_KEY_AT); - ADDC(GLFW_KEY_A); - ADDC(GLFW_KEY_B); - ADDC(GLFW_KEY_C); - ADDC(GLFW_KEY_D); - ADDC(GLFW_KEY_E); - ADDC(GLFW_KEY_F); - ADDC(GLFW_KEY_G); - ADDC(GLFW_KEY_H); - ADDC(GLFW_KEY_I); - ADDC(GLFW_KEY_J); - ADDC(GLFW_KEY_K); - ADDC(GLFW_KEY_L); - ADDC(GLFW_KEY_M); - ADDC(GLFW_KEY_N); - ADDC(GLFW_KEY_O); - ADDC(GLFW_KEY_P); - ADDC(GLFW_KEY_Q); - ADDC(GLFW_KEY_R); - ADDC(GLFW_KEY_S); - ADDC(GLFW_KEY_T); - ADDC(GLFW_KEY_U); - ADDC(GLFW_KEY_V); - ADDC(GLFW_KEY_W); - ADDC(GLFW_KEY_X); - ADDC(GLFW_KEY_Y); - ADDC(GLFW_KEY_Z); - ADDC(GLFW_KEY_LEFT_BRACKET); - ADDC(GLFW_KEY_BACKSLASH); - ADDC(GLFW_KEY_RIGHT_BRACKET); - ADDC(GLFW_KEY_CIRCUMFLEX); - ADDC(GLFW_KEY_UNDERSCORE); - ADDC(GLFW_KEY_GRAVE_ACCENT); - ADDC(GLFW_KEY_WORLD_1); - ADDC(GLFW_KEY_WORLD_2); - ADDC(GLFW_KEY_PARAGRAPH); - ADDC(GLFW_KEY_MASCULINE); - ADDC(GLFW_KEY_A_GRAVE); - ADDC(GLFW_KEY_A_DIAERESIS); - ADDC(GLFW_KEY_A_RING); - ADDC(GLFW_KEY_AE); - ADDC(GLFW_KEY_C_CEDILLA); - ADDC(GLFW_KEY_E_GRAVE); - ADDC(GLFW_KEY_E_ACUTE); - ADDC(GLFW_KEY_I_GRAVE); - ADDC(GLFW_KEY_N_TILDE); - ADDC(GLFW_KEY_O_GRAVE); - ADDC(GLFW_KEY_O_DIAERESIS); - ADDC(GLFW_KEY_O_SLASH); - ADDC(GLFW_KEY_U_GRAVE); - ADDC(GLFW_KEY_U_DIAERESIS); - ADDC(GLFW_KEY_S_SHARP); - ADDC(GLFW_KEY_CYRILLIC_A); - ADDC(GLFW_KEY_CYRILLIC_BE); - ADDC(GLFW_KEY_CYRILLIC_VE); - ADDC(GLFW_KEY_CYRILLIC_GHE); - ADDC(GLFW_KEY_CYRILLIC_DE); - ADDC(GLFW_KEY_CYRILLIC_IE); - ADDC(GLFW_KEY_CYRILLIC_ZHE); - ADDC(GLFW_KEY_CYRILLIC_ZE); - ADDC(GLFW_KEY_CYRILLIC_I); - ADDC(GLFW_KEY_CYRILLIC_SHORT_I); - ADDC(GLFW_KEY_CYRILLIC_KA); - ADDC(GLFW_KEY_CYRILLIC_EL); - ADDC(GLFW_KEY_CYRILLIC_EM); - ADDC(GLFW_KEY_CYRILLIC_EN); - ADDC(GLFW_KEY_CYRILLIC_O); - ADDC(GLFW_KEY_CYRILLIC_PE); - ADDC(GLFW_KEY_CYRILLIC_ER); - ADDC(GLFW_KEY_CYRILLIC_ES); - ADDC(GLFW_KEY_CYRILLIC_TE); - ADDC(GLFW_KEY_CYRILLIC_U); - ADDC(GLFW_KEY_CYRILLIC_EF); - ADDC(GLFW_KEY_CYRILLIC_HA); - ADDC(GLFW_KEY_CYRILLIC_TSE); - ADDC(GLFW_KEY_CYRILLIC_CHE); - ADDC(GLFW_KEY_CYRILLIC_SHA); - ADDC(GLFW_KEY_CYRILLIC_SHCHA); - ADDC(GLFW_KEY_CYRILLIC_HARD_SIGN); - ADDC(GLFW_KEY_CYRILLIC_YERU); - ADDC(GLFW_KEY_CYRILLIC_SOFT_SIGN); - ADDC(GLFW_KEY_CYRILLIC_E); - ADDC(GLFW_KEY_CYRILLIC_YU); - ADDC(GLFW_KEY_CYRILLIC_YA); - ADDC(GLFW_KEY_CYRILLIC_IO); - ADDC(GLFW_KEY_LAST_PRINTABLE); - -// --- Function keys ----------------------------------------------------------- - ADDC(GLFW_KEY_ESCAPE); - ADDC(GLFW_KEY_ENTER); - ADDC(GLFW_KEY_TAB); - ADDC(GLFW_KEY_BACKSPACE); - ADDC(GLFW_KEY_INSERT); - ADDC(GLFW_KEY_DELETE); - ADDC(GLFW_KEY_RIGHT); - ADDC(GLFW_KEY_LEFT); - ADDC(GLFW_KEY_DOWN); - ADDC(GLFW_KEY_UP); - ADDC(GLFW_KEY_PAGE_UP); - ADDC(GLFW_KEY_PAGE_DOWN); - ADDC(GLFW_KEY_HOME); - ADDC(GLFW_KEY_END); - ADDC(GLFW_KEY_CAPS_LOCK); - ADDC(GLFW_KEY_SCROLL_LOCK); - ADDC(GLFW_KEY_NUM_LOCK); - ADDC(GLFW_KEY_PRINT_SCREEN); - ADDC(GLFW_KEY_PAUSE); - ADDC(GLFW_KEY_F1); - ADDC(GLFW_KEY_F2); - ADDC(GLFW_KEY_F3); - ADDC(GLFW_KEY_F4); - ADDC(GLFW_KEY_F5); - ADDC(GLFW_KEY_F6); - ADDC(GLFW_KEY_F7); - ADDC(GLFW_KEY_F8); - ADDC(GLFW_KEY_F9); - ADDC(GLFW_KEY_F10); - ADDC(GLFW_KEY_F11); - ADDC(GLFW_KEY_F12); - ADDC(GLFW_KEY_F13); - ADDC(GLFW_KEY_F14); - ADDC(GLFW_KEY_F15); - ADDC(GLFW_KEY_F16); - ADDC(GLFW_KEY_F17); - ADDC(GLFW_KEY_F18); - ADDC(GLFW_KEY_F19); - ADDC(GLFW_KEY_F20); - ADDC(GLFW_KEY_F21); - ADDC(GLFW_KEY_F22); - ADDC(GLFW_KEY_F23); - ADDC(GLFW_KEY_F24); - ADDC(GLFW_KEY_F25); - ADDC(GLFW_KEY_KP_0); - ADDC(GLFW_KEY_KP_1); - ADDC(GLFW_KEY_KP_2); - ADDC(GLFW_KEY_KP_3); - ADDC(GLFW_KEY_KP_4); - ADDC(GLFW_KEY_KP_5); - ADDC(GLFW_KEY_KP_6); - ADDC(GLFW_KEY_KP_7); - ADDC(GLFW_KEY_KP_8); - ADDC(GLFW_KEY_KP_9); - ADDC(GLFW_KEY_KP_DECIMAL); - ADDC(GLFW_KEY_KP_DIVIDE); - ADDC(GLFW_KEY_KP_MULTIPLY); - ADDC(GLFW_KEY_KP_SUBTRACT); - ADDC(GLFW_KEY_KP_ADD); - ADDC(GLFW_KEY_KP_ENTER); - ADDC(GLFW_KEY_KP_EQUAL); - ADDC(GLFW_KEY_LEFT_SHIFT); - ADDC(GLFW_KEY_LEFT_CONTROL); - ADDC(GLFW_KEY_LEFT_ALT); - ADDC(GLFW_KEY_LEFT_SUPER); - ADDC(GLFW_KEY_RIGHT_SHIFT); - ADDC(GLFW_KEY_RIGHT_CONTROL); - ADDC(GLFW_KEY_RIGHT_ALT); - ADDC(GLFW_KEY_RIGHT_SUPER); - ADDC(GLFW_KEY_MENU); - ADDC(GLFW_KEY_LAST); - + /* start glfw functional keys (auto generated by gen-key-constants.py do not edit) */ + ADDC(GLFW_FKEY_ESCAPE); + ADDC(GLFW_FKEY_ENTER); + ADDC(GLFW_FKEY_TAB); + ADDC(GLFW_FKEY_BACKSPACE); + ADDC(GLFW_FKEY_INSERT); + ADDC(GLFW_FKEY_DELETE); + ADDC(GLFW_FKEY_LEFT); + ADDC(GLFW_FKEY_RIGHT); + ADDC(GLFW_FKEY_UP); + ADDC(GLFW_FKEY_DOWN); + ADDC(GLFW_FKEY_PAGE_UP); + ADDC(GLFW_FKEY_PAGE_DOWN); + ADDC(GLFW_FKEY_HOME); + ADDC(GLFW_FKEY_END); + ADDC(GLFW_FKEY_CAPS_LOCK); + ADDC(GLFW_FKEY_SCROLL_LOCK); + ADDC(GLFW_FKEY_NUM_LOCK); + ADDC(GLFW_FKEY_PRINT_SCREEN); + ADDC(GLFW_FKEY_PAUSE); + ADDC(GLFW_FKEY_MENU); + ADDC(GLFW_FKEY_F1); + ADDC(GLFW_FKEY_F2); + ADDC(GLFW_FKEY_F3); + ADDC(GLFW_FKEY_F4); + ADDC(GLFW_FKEY_F5); + ADDC(GLFW_FKEY_F6); + ADDC(GLFW_FKEY_F7); + ADDC(GLFW_FKEY_F8); + ADDC(GLFW_FKEY_F9); + ADDC(GLFW_FKEY_F10); + ADDC(GLFW_FKEY_F11); + ADDC(GLFW_FKEY_F12); + ADDC(GLFW_FKEY_F13); + ADDC(GLFW_FKEY_F14); + ADDC(GLFW_FKEY_F15); + ADDC(GLFW_FKEY_F16); + ADDC(GLFW_FKEY_F17); + ADDC(GLFW_FKEY_F18); + ADDC(GLFW_FKEY_F19); + ADDC(GLFW_FKEY_F20); + ADDC(GLFW_FKEY_F21); + ADDC(GLFW_FKEY_F22); + ADDC(GLFW_FKEY_F23); + ADDC(GLFW_FKEY_F24); + ADDC(GLFW_FKEY_F25); + ADDC(GLFW_FKEY_F26); + ADDC(GLFW_FKEY_F27); + ADDC(GLFW_FKEY_F28); + ADDC(GLFW_FKEY_F29); + ADDC(GLFW_FKEY_F30); + ADDC(GLFW_FKEY_F31); + ADDC(GLFW_FKEY_F32); + ADDC(GLFW_FKEY_F33); + ADDC(GLFW_FKEY_F34); + ADDC(GLFW_FKEY_F35); + ADDC(GLFW_FKEY_KP_0); + ADDC(GLFW_FKEY_KP_1); + ADDC(GLFW_FKEY_KP_2); + ADDC(GLFW_FKEY_KP_3); + ADDC(GLFW_FKEY_KP_4); + ADDC(GLFW_FKEY_KP_5); + ADDC(GLFW_FKEY_KP_6); + ADDC(GLFW_FKEY_KP_7); + ADDC(GLFW_FKEY_KP_8); + ADDC(GLFW_FKEY_KP_9); + ADDC(GLFW_FKEY_KP_DECIMAL); + ADDC(GLFW_FKEY_KP_DIVIDE); + ADDC(GLFW_FKEY_KP_MULTIPLY); + ADDC(GLFW_FKEY_KP_SUBTRACT); + ADDC(GLFW_FKEY_KP_ADD); + ADDC(GLFW_FKEY_KP_ENTER); + ADDC(GLFW_FKEY_KP_EQUAL); + ADDC(GLFW_FKEY_KP_SEPARATOR); + ADDC(GLFW_FKEY_KP_LEFT); + ADDC(GLFW_FKEY_KP_RIGHT); + ADDC(GLFW_FKEY_KP_UP); + ADDC(GLFW_FKEY_KP_DOWN); + ADDC(GLFW_FKEY_KP_PAGE_UP); + ADDC(GLFW_FKEY_KP_PAGE_DOWN); + ADDC(GLFW_FKEY_KP_HOME); + 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); + ADDC(GLFW_FKEY_MEDIA_REVERSE); + ADDC(GLFW_FKEY_MEDIA_STOP); + ADDC(GLFW_FKEY_MEDIA_FAST_FORWARD); + ADDC(GLFW_FKEY_MEDIA_REWIND); + ADDC(GLFW_FKEY_MEDIA_TRACK_NEXT); + ADDC(GLFW_FKEY_MEDIA_TRACK_PREVIOUS); + ADDC(GLFW_FKEY_MEDIA_RECORD); + ADDC(GLFW_FKEY_LOWER_VOLUME); + ADDC(GLFW_FKEY_RAISE_VOLUME); + ADDC(GLFW_FKEY_MUTE_VOLUME); +/* end glfw functional keys */ // --- Modifiers --------------------------------------------------------------- ADDC(GLFW_MOD_SHIFT); ADDC(GLFW_MOD_CONTROL); diff --git a/kitty/keys.c b/kitty/keys.c index 065815511..dc1256a8c 100644 --- a/kitty/keys.c +++ b/kitty/keys.c @@ -20,17 +20,17 @@ active_window(void) { } static inline bool -is_modifier_key(int key) { +is_modifier_key(uint32_t key) { switch(key) { - case GLFW_KEY_LEFT_SHIFT: - case GLFW_KEY_RIGHT_SHIFT: - case GLFW_KEY_LEFT_ALT: - case GLFW_KEY_RIGHT_ALT: - case GLFW_KEY_LEFT_CONTROL: - case GLFW_KEY_RIGHT_CONTROL: - case GLFW_KEY_LEFT_SUPER: - case GLFW_KEY_RIGHT_SUPER: - case GLFW_KEY_CAPS_LOCK: + 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; @@ -87,7 +87,7 @@ on_key_input(GLFWkeyevent *ev) { debug("in sequence mode, handling as shortcut\n"); if ( action != GLFW_RELEASE && - key != GLFW_KEY_LEFT_SHIFT && key != GLFW_KEY_RIGHT_SHIFT && key != GLFW_KEY_LEFT_ALT && key != GLFW_KEY_RIGHT_ALT && key != GLFW_KEY_LEFT_CONTROL && key != GLFW_KEY_RIGHT_CONTROL + 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 ) call_boss(process_sequence, "iiii", key, native_key, action, mods); return; } @@ -126,7 +126,7 @@ on_key_input(GLFWkeyevent *ev) { void fake_scroll(Window *w, int amount, bool upwards) { if (!w) return; - int key = upwards ? GLFW_KEY_UP : GLFW_KEY_DOWN; + int key = upwards ? GLFW_FKEY_UP : GLFW_FKEY_DOWN; GLFWkeyevent ev = {.key = key }; char encoded_key[KEY_BUFFER_SIZE] = {0}; Screen *screen = w->render_data.screen; @@ -160,11 +160,11 @@ PYWRAP1(key_for_native_key_name) { static PyObject* pyencode_key_for_tty(PyObject *self UNUSED, PyObject *args, PyObject *kw) { - char *kwds[] = {"key", "shifted_key", "alternate_key", "mods", "action", "text", "cursor_key_mode", "key_encoding_flags"}; - unsigned int key = 0, shifted_key = 0, alternate_key = 0, mods = 0, action = 0, key_encoding_flags = 0; + static char *kwds[] = {"key", "shifted_key", "alternate_key", "mods", "action", "key_encoding_flags", "text", "cursor_key_mode", NULL}; + unsigned int key = 0, shifted_key = 0, alternate_key = 0, mods = 0, action = GLFW_PRESS, key_encoding_flags = 0; const char *text = NULL; int cursor_key_mode = 0; - if (!PyArg_ParseTupleAndKeywords(args, kw, "IIIIIspI", kwds, &key, &shifted_key, &alternate_key, &mods, &action, &text, &cursor_key_mode, &key_encoding_flags)) return NULL; + if (!PyArg_ParseTupleAndKeywords(args, kw, "I|IIIIIsp", kwds, &key, &shifted_key, &alternate_key, &mods, &action, &key_encoding_flags, &text, &cursor_key_mode)) return NULL; GLFWkeyevent ev = { .key = key, .shifted_key = shifted_key, .alternate_key = alternate_key, .text = text, .action = action, .mods = mods }; char output[KEY_BUFFER_SIZE+1] = {0}; int num = encode_glfw_key_event(&ev, cursor_key_mode, key_encoding_flags, output);