Remove glfw key constants

This commit is contained in:
Kovid Goyal 2021-01-12 07:07:37 +05:30
parent f06eee8fe1
commit 774a6c8c8b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
9 changed files with 609 additions and 1305 deletions

View File

@ -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:

506
glfw/glfw3.h vendored
View File

@ -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`.
*

2
glfw/ibus_glfw.c vendored
View File

@ -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);

332
glfw/input.c vendored
View File

@ -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);
}

6
glfw/xkb_glfw.c vendored
View File

@ -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];

View File

@ -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

407
kitty/glfw-wrapper.h generated
View File

@ -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

View File

@ -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);

View File

@ -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);