diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m index b3f537aa386..5175984a709 100644 --- a/glfw/cocoa_window.m +++ b/glfw/cocoa_window.m @@ -34,6 +34,61 @@ // Needed for _NSGetProgname #include + +#define PARAGRAPH_UTF_8 0xc2a7 // § +#define MASCULINE_UTF_8 0xc2ba // º +#define A_DIAERESIS_UPPER_CASE_UTF_8 0xc384 // Ä +#define O_DIAERESIS_UPPER_CASE_UTF_8 0xc396 // Ö +#define U_DIAERESIS_UPPER_CASE_UTF_8 0xc39c // Ü +#define S_SHARP_UTF_8 0xc39f // ß +#define A_GRAVE_LOWER_CASE_UTF_8 0xc3a0 // à +#define A_DIAERESIS_LOWER_CASE_UTF_8 0xc3a4 // ä +#define A_RING_LOWER_CASE_UTF_8 0xc3a5 // å +#define AE_LOWER_CASE_UTF_8 0xc3a6 // æ +#define C_CEDILLA_LOWER_CASE_UTF_8 0xc3a7 // ç +#define E_GRAVE_LOWER_CASE_UTF_8 0xc3a8 // è +#define E_ACUTE_LOWER_CASE_UTF_8 0xc3a9 // é +#define I_GRAVE_LOWER_CASE_UTF_8 0xc3ac // ì +#define N_TILDE_LOWER_CASE_UTF_8 0xc3b1 // ñ +#define O_GRAVE_LOWER_CASE_UTF_8 0xc3b2 // ò +#define O_DIAERESIS_LOWER_CASE_UTF_8 0xc3b6 // ö +#define O_SLASH_LOWER_CASE_UTF_8 0xc3b8 // ø +#define U_GRAVE_LOWER_CASE_UTF_8 0xc3b9 // ù +#define U_DIAERESIS_LOWER_CASE_UTF_8 0xc3bc // ü +#define CYRILLIC_A_LOWER_CASE_UTF_8 0xd0b0 // а +#define CYRILLIC_BE_LOWER_CASE_UTF_8 0xd0b1 // б +#define CYRILLIC_VE_LOWER_CASE_UTF_8 0xd0b2 // в +#define CYRILLIC_GHE_LOWER_CASE_UTF_8 0xd0b3 // г +#define CYRILLIC_DE_LOWER_CASE_UTF_8 0xd0b4 // д +#define CYRILLIC_IE_LOWER_CASE_UTF_8 0xd0b5 // е +#define CYRILLIC_ZHE_LOWER_CASE_UTF_8 0xd0b6 // ж +#define CYRILLIC_ZE_LOWER_CASE_UTF_8 0xd0b7 // з +#define CYRILLIC_I_LOWER_CASE_UTF_8 0xd0b8 // и +#define CYRILLIC_SHORT_I_LOWER_CASE_UTF_8 0xd0b9 // й +#define CYRILLIC_KA_LOWER_CASE_UTF_8 0xd0ba // к +#define CYRILLIC_EL_LOWER_CASE_UTF_8 0xd0bb // л +#define CYRILLIC_EM_LOWER_CASE_UTF_8 0xd0bc // м +#define CYRILLIC_EN_LOWER_CASE_UTF_8 0xd0bd // н +#define CYRILLIC_O_LOWER_CASE_UTF_8 0xd0be // о +#define CYRILLIC_PE_LOWER_CASE_UTF_8 0xd0bf // п +#define CYRILLIC_ER_LOWER_CASE_UTF_8 0xd180 // р +#define CYRILLIC_ES_LOWER_CASE_UTF_8 0xd181 // с +#define CYRILLIC_TE_LOWER_CASE_UTF_8 0xd182 // т +#define CYRILLIC_U_LOWER_CASE_UTF_8 0xd183 // у +#define CYRILLIC_EF_LOWER_CASE_UTF_8 0xd184 // ф +#define CYRILLIC_HA_LOWER_CASE_UTF_8 0xd185 // х +#define CYRILLIC_TSE_LOWER_CASE_UTF_8 0xd186 // ц +#define CYRILLIC_CHE_LOWER_CASE_UTF_8 0xd187 // ч +#define CYRILLIC_SHA_LOWER_CASE_UTF_8 0xd188 // ш +#define CYRILLIC_SHCHA_LOWER_CASE_UTF_8 0xd189 // щ +#define CYRILLIC_HARD_SIGN_LOWER_CASE_UTF_8 0xd18a // ъ +#define CYRILLIC_YERU_LOWER_CASE_UTF_8 0xd18b // ы +#define CYRILLIC_SOFT_SIGN_LOWER_CASE_UTF_8 0xd18c // ь +#define CYRILLIC_E_LOWER_CASE_UTF_8 0xd18d // э +#define CYRILLIC_YU_LOWER_CASE_UTF_8 0xd18e // ю +#define CYRILLIC_YA_LOWER_CASE_UTF_8 0xd18f // я +#define CYRILLIC_IO_LOWER_CASE_UTF_8 0xd191 // ё + // Returns the style mask corresponding to the window settings // static NSUInteger getStyleMask(_GLFWwindow* window) @@ -299,7 +354,14 @@ static int translateKey(unsigned int key, bool apply_keymap) // Key name switch(name) { #define K(ch, name) case ch: return GLFW_KEY_##name + K('!', EXCLAM); + K('"', DOUBLE_QUOTE); + K('#', NUMBER_SIGN); + K('$', DOLLAR); + K('&', AMPERSAND); K('\'', APOSTROPHE); + K('(', PARENTHESIS_LEFT); + K(')', PARENTHESIS_RIGHT); K('+', PLUS); K(',', COMMA); K('-', MINUS); @@ -314,8 +376,12 @@ static int translateKey(unsigned int key, bool apply_keymap) K('7', 7); K('8', 8); K('9', 9); + K(':', COLON); K(';', SEMICOLON); + K('<', LESS); K('=', EQUAL); + K('>', GREATER); + K('@', AT); K('A', A); K('a', A); K('B', B); K('b', B); K('C', C); K('c', C); @@ -347,6 +413,59 @@ static int translateKey(unsigned int key, bool apply_keymap) K(']', RIGHT_BRACKET); K('_', UNDERSCORE); K('`', GRAVE_ACCENT); + K(PARAGRAPH_UTF_8, PARAGRAPH); + K(MASCULINE_UTF_8, MASCULINE); + K(A_DIAERESIS_UPPER_CASE_UTF_8, A_DIAERESIS); + K(O_DIAERESIS_UPPER_CASE_UTF_8, O_DIAERESIS); + K(U_DIAERESIS_UPPER_CASE_UTF_8, U_DIAERESIS); + K(S_SHARP_UTF_8, S_SHARP); + K(A_GRAVE_LOWER_CASE_UTF_8, A_GRAVE); + K(A_DIAERESIS_LOWER_CASE_UTF_8, A_DIAERESIS); + K(A_RING_LOWER_CASE_UTF_8, A_RING); + K(AE_LOWER_CASE_UTF_8, AE); + K(C_CEDILLA_LOWER_CASE_UTF_8, C_CEDILLA); + K(E_GRAVE_LOWER_CASE_UTF_8, E_GRAVE); + K(E_ACUTE_LOWER_CASE_UTF_8, E_ACUTE); + K(I_GRAVE_LOWER_CASE_UTF_8, I_GRAVE); + K(N_TILDE_LOWER_CASE_UTF_8, N_TILDE); + K(O_GRAVE_LOWER_CASE_UTF_8, O_GRAVE); + K(O_DIAERESIS_LOWER_CASE_UTF_8, O_DIAERESIS); + K(O_SLASH_LOWER_CASE_UTF_8, O_SLASH); + K(U_GRAVE_LOWER_CASE_UTF_8, U_GRAVE); + K(U_DIAERESIS_LOWER_CASE_UTF_8, U_DIAERESIS); + K(CYRILLIC_A_LOWER_CASE_UTF_8, CYRILLIC_A); + K(CYRILLIC_BE_LOWER_CASE_UTF_8, CYRILLIC_BE); + K(CYRILLIC_VE_LOWER_CASE_UTF_8, CYRILLIC_VE); + K(CYRILLIC_GHE_LOWER_CASE_UTF_8, CYRILLIC_GHE); + K(CYRILLIC_DE_LOWER_CASE_UTF_8, CYRILLIC_DE); + K(CYRILLIC_IE_LOWER_CASE_UTF_8, CYRILLIC_IE); + K(CYRILLIC_ZHE_LOWER_CASE_UTF_8, CYRILLIC_ZHE); + K(CYRILLIC_ZE_LOWER_CASE_UTF_8, CYRILLIC_ZE); + K(CYRILLIC_I_LOWER_CASE_UTF_8, CYRILLIC_I); + K(CYRILLIC_SHORT_I_LOWER_CASE_UTF_8, CYRILLIC_SHORT_I); + K(CYRILLIC_KA_LOWER_CASE_UTF_8, CYRILLIC_KA); + K(CYRILLIC_EL_LOWER_CASE_UTF_8, CYRILLIC_EL); + K(CYRILLIC_EM_LOWER_CASE_UTF_8, CYRILLIC_EM); + K(CYRILLIC_EN_LOWER_CASE_UTF_8, CYRILLIC_EN); + K(CYRILLIC_O_LOWER_CASE_UTF_8, CYRILLIC_O); + K(CYRILLIC_PE_LOWER_CASE_UTF_8, CYRILLIC_PE); + K(CYRILLIC_ER_LOWER_CASE_UTF_8, CYRILLIC_ER); + K(CYRILLIC_ES_LOWER_CASE_UTF_8, CYRILLIC_ES); + K(CYRILLIC_TE_LOWER_CASE_UTF_8, CYRILLIC_TE); + K(CYRILLIC_U_LOWER_CASE_UTF_8, CYRILLIC_U); + K(CYRILLIC_EF_LOWER_CASE_UTF_8, CYRILLIC_EF); + K(CYRILLIC_HA_LOWER_CASE_UTF_8, CYRILLIC_HA); + K(CYRILLIC_TSE_LOWER_CASE_UTF_8, CYRILLIC_TSE); + K(CYRILLIC_CHE_LOWER_CASE_UTF_8, CYRILLIC_CHE); + K(CYRILLIC_SHA_LOWER_CASE_UTF_8, CYRILLIC_SHA); + K(CYRILLIC_SHCHA_LOWER_CASE_UTF_8, CYRILLIC_SHCHA); + K(CYRILLIC_HARD_SIGN_LOWER_CASE_UTF_8, CYRILLIC_HARD_SIGN); + K(CYRILLIC_YERU_LOWER_CASE_UTF_8, CYRILLIC_YERU); + K(CYRILLIC_SOFT_SIGN_LOWER_CASE_UTF_8, CYRILLIC_SOFT_SIGN); + K(CYRILLIC_E_LOWER_CASE_UTF_8, CYRILLIC_E); + K(CYRILLIC_YU_LOWER_CASE_UTF_8, CYRILLIC_YU); + K(CYRILLIC_YA_LOWER_CASE_UTF_8, CYRILLIC_YA); + K(CYRILLIC_IO_LOWER_CASE_UTF_8, CYRILLIC_IO); #undef K default: break; @@ -2296,7 +2415,14 @@ GLFWAPI void glfwGetCocoaKeyEquivalent(int glfw_key, int glfw_mods, unsigned sho START_ALLOW_CASE_RANGE switch(glfw_key) { #define K(ch, name) case GLFW_KEY_##name: *cocoa_key = ch; break; + K('!', EXCLAM); + K('"', DOUBLE_QUOTE); + K('#', NUMBER_SIGN); + K('$', DOLLAR); + K('&', AMPERSAND); K('\'', APOSTROPHE); + K('(', PARENTHESIS_LEFT); + K(')', PARENTHESIS_RIGHT); K('+', PLUS); K(',', COMMA); K('-', MINUS); @@ -2311,8 +2437,12 @@ GLFWAPI void glfwGetCocoaKeyEquivalent(int glfw_key, int glfw_mods, unsigned sho K('7', 7); K('8', 8); K('9', 9); + K(':', COLON); K(';', SEMICOLON); + K('<', LESS); K('=', EQUAL); + K('>', GREATER); + K('@', AT); K('[', LEFT_BRACKET); K('\\', BACKSLASH); K(']', RIGHT_BRACKET); @@ -2344,6 +2474,56 @@ GLFWAPI void glfwGetCocoaKeyEquivalent(int glfw_key, int glfw_mods, unsigned sho K('x', X); K('y', Y); K('z', Z); + K(PARAGRAPH_UTF_8, PARAGRAPH); + K(MASCULINE_UTF_8, MASCULINE); + K(S_SHARP_UTF_8, S_SHARP); + K(A_GRAVE_LOWER_CASE_UTF_8, A_GRAVE); + K(A_DIAERESIS_LOWER_CASE_UTF_8, A_DIAERESIS); + K(A_RING_LOWER_CASE_UTF_8, A_RING); + K(AE_LOWER_CASE_UTF_8, AE); + K(C_CEDILLA_LOWER_CASE_UTF_8, C_CEDILLA); + K(E_GRAVE_LOWER_CASE_UTF_8, E_GRAVE); + K(E_ACUTE_LOWER_CASE_UTF_8, E_ACUTE); + K(I_GRAVE_LOWER_CASE_UTF_8, I_GRAVE); + K(N_TILDE_LOWER_CASE_UTF_8, N_TILDE); + K(O_GRAVE_LOWER_CASE_UTF_8, O_GRAVE); + K(O_DIAERESIS_LOWER_CASE_UTF_8, O_DIAERESIS); + K(O_SLASH_LOWER_CASE_UTF_8, O_SLASH); + K(U_GRAVE_LOWER_CASE_UTF_8, U_GRAVE); + K(U_DIAERESIS_LOWER_CASE_UTF_8, U_DIAERESIS); + K(CYRILLIC_A_LOWER_CASE_UTF_8, CYRILLIC_A); + K(CYRILLIC_BE_LOWER_CASE_UTF_8, CYRILLIC_BE); + K(CYRILLIC_VE_LOWER_CASE_UTF_8, CYRILLIC_VE); + K(CYRILLIC_GHE_LOWER_CASE_UTF_8, CYRILLIC_GHE); + K(CYRILLIC_DE_LOWER_CASE_UTF_8, CYRILLIC_DE); + K(CYRILLIC_IE_LOWER_CASE_UTF_8, CYRILLIC_IE); + K(CYRILLIC_ZHE_LOWER_CASE_UTF_8, CYRILLIC_ZHE); + K(CYRILLIC_ZE_LOWER_CASE_UTF_8, CYRILLIC_ZE); + K(CYRILLIC_I_LOWER_CASE_UTF_8, CYRILLIC_I); + K(CYRILLIC_SHORT_I_LOWER_CASE_UTF_8, CYRILLIC_SHORT_I); + K(CYRILLIC_KA_LOWER_CASE_UTF_8, CYRILLIC_KA); + K(CYRILLIC_EL_LOWER_CASE_UTF_8, CYRILLIC_EL); + K(CYRILLIC_EM_LOWER_CASE_UTF_8, CYRILLIC_EM); + K(CYRILLIC_EN_LOWER_CASE_UTF_8, CYRILLIC_EN); + K(CYRILLIC_O_LOWER_CASE_UTF_8, CYRILLIC_O); + K(CYRILLIC_PE_LOWER_CASE_UTF_8, CYRILLIC_PE); + K(CYRILLIC_ER_LOWER_CASE_UTF_8, CYRILLIC_ER); + K(CYRILLIC_ES_LOWER_CASE_UTF_8, CYRILLIC_ES); + K(CYRILLIC_TE_LOWER_CASE_UTF_8, CYRILLIC_TE); + K(CYRILLIC_U_LOWER_CASE_UTF_8, CYRILLIC_U); + K(CYRILLIC_EF_LOWER_CASE_UTF_8, CYRILLIC_EF); + K(CYRILLIC_HA_LOWER_CASE_UTF_8, CYRILLIC_HA); + K(CYRILLIC_TSE_LOWER_CASE_UTF_8, CYRILLIC_TSE); + K(CYRILLIC_CHE_LOWER_CASE_UTF_8, CYRILLIC_CHE); + K(CYRILLIC_SHA_LOWER_CASE_UTF_8, CYRILLIC_SHA); + K(CYRILLIC_SHCHA_LOWER_CASE_UTF_8, CYRILLIC_SHCHA); + K(CYRILLIC_HARD_SIGN_LOWER_CASE_UTF_8, CYRILLIC_HARD_SIGN); + K(CYRILLIC_YERU_LOWER_CASE_UTF_8, CYRILLIC_YERU); + K(CYRILLIC_SOFT_SIGN_LOWER_CASE_UTF_8, CYRILLIC_SOFT_SIGN); + K(CYRILLIC_E_LOWER_CASE_UTF_8, CYRILLIC_E); + K(CYRILLIC_YU_LOWER_CASE_UTF_8, CYRILLIC_YU); + K(CYRILLIC_YA_LOWER_CASE_UTF_8, CYRILLIC_YA); + K(CYRILLIC_IO_LOWER_CASE_UTF_8, CYRILLIC_IO); K(0x35, ESCAPE); K('\r', ENTER); diff --git a/glfw/glfw3.h b/glfw/glfw3.h index b4826df5764..dc609800ddb 100644 --- a/glfw/glfw3.h +++ b/glfw/glfw3.h @@ -342,7 +342,14 @@ extern "C" { /* 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 /* - */ @@ -358,8 +365,12 @@ extern "C" { #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 @@ -393,8 +404,58 @@ extern "C" { #define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ #define GLFW_KEY_WORLD_1 161 /* non-US #1 */ #define GLFW_KEY_WORLD_2 162 /* non-US #2 */ - -#define GLFW_KEY_LAST_PRINTABLE GLFW_KEY_UNDERSCORE +#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 @@ -3846,20 +3907,85 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); * [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_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` diff --git a/glfw/input.c b/glfw/input.c index 1f5d3710f74..66bc8fe2df3 100644 --- a/glfw/input.c +++ b/glfw/input.c @@ -440,7 +440,14 @@ const char* _glfwGetKeyName(int 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"; @@ -456,8 +463,12 @@ const char* _glfwGetKeyName(int key) 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"; @@ -491,6 +502,56 @@ const char* _glfwGetKeyName(int key) 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"; diff --git a/glfw/xkb_glfw.c b/glfw/xkb_glfw.c index 81f5b59327a..d61fc57086c 100644 --- a/glfw/xkb_glfw.c +++ b/glfw/xkb_glfw.c @@ -37,15 +37,26 @@ START_ALLOW_CASE_RANGE #define map_key(key) \ switch(key) { \ S(space, SPACE); \ + S(exclam, EXCLAM); \ + S(quotedbl, DOUBLE_QUOTE); \ + S(numbersign, NUMBER_SIGN); \ + S(dollar, DOLLAR); \ + S(ampersand, AMPERSAND); \ S(apostrophe, APOSTROPHE); \ + S(parenleft, PARENTHESIS_LEFT); \ + S(parenright, PARENTHESIS_RIGHT); \ S(plus, PLUS); \ S(comma, COMMA); \ S(minus, MINUS); \ S(period, PERIOD); \ S(slash, SLASH); \ R(0, 9, 0, 9); \ + S(colon, COLON); \ S(semicolon, SEMICOLON); \ + S(less, LESS); \ S(equal, EQUAL); \ + S(greater, GREATER); \ + S(at, AT); \ D(A, Z, A, Z); \ S(bracketleft, LEFT_BRACKET); \ S(backslash, BACKSLASH); \ @@ -53,6 +64,103 @@ START_ALLOW_CASE_RANGE S(underscore, UNDERSCORE); \ S(grave, GRAVE_ACCENT); \ R(a, z, A, Z); \ + S(paragraph, PARAGRAPH); \ + S(masculine, MASCULINE); \ + S(agrave, A_GRAVE); \ + F(Agrave, A_GRAVE); \ + S(adiaeresis, A_DIAERESIS); \ + F(Adiaeresis, A_DIAERESIS); \ + S(aring, A_RING); \ + F(Aring, A_RING); \ + S(ae, AE); \ + F(AE, AE); \ + S(ccedilla, C_CEDILLA); \ + F(Ccedilla, C_CEDILLA); \ + S(egrave, E_GRAVE); \ + F(Egrave, E_GRAVE); \ + S(aacute, E_ACUTE); \ + F(Eacute, E_ACUTE); \ + S(igrave, I_GRAVE); \ + F(Igrave, I_GRAVE); \ + S(ntilde, N_TILDE); \ + F(Ntilde, N_TILDE); \ + S(ograve, O_GRAVE); \ + F(Ograve, O_GRAVE); \ + S(odiaeresis, O_DIAERESIS); \ + F(Odiaeresis, O_DIAERESIS); \ + S(oslash, O_SLASH); \ + F(Oslash, O_SLASH); \ + S(ugrave, U_GRAVE); \ + F(Ugrave, U_GRAVE); \ + S(udiaeresis, U_DIAERESIS); \ + F(Udiaeresis, U_DIAERESIS); \ + S(ssharp, S_SHARP); \ + S(Cyrillic_a, CYRILLIC_A); \ + F(Cyrillic_A, CYRILLIC_A); \ + S(Cyrillic_be, CYRILLIC_BE); \ + F(Cyrillic_BE, CYRILLIC_BE); \ + S(Cyrillic_ve, CYRILLIC_VE); \ + F(Cyrillic_VE, CYRILLIC_VE); \ + S(Cyrillic_ghe, CYRILLIC_GHE); \ + F(Cyrillic_GHE, CYRILLIC_GHE); \ + S(Cyrillic_de, CYRILLIC_DE); \ + F(Cyrillic_DE, CYRILLIC_DE); \ + S(Cyrillic_ie, CYRILLIC_IE); \ + F(Cyrillic_IE, CYRILLIC_IE); \ + S(Cyrillic_zhe, CYRILLIC_ZHE); \ + F(Cyrillic_ZHE, CYRILLIC_ZHE); \ + S(Cyrillic_ze, CYRILLIC_ZE); \ + F(Cyrillic_ZE, CYRILLIC_ZE); \ + S(Cyrillic_i, CYRILLIC_I); \ + F(Cyrillic_I, CYRILLIC_I); \ + S(Cyrillic_shorti, CYRILLIC_SHORT_I); \ + F(Cyrillic_SHORTI, CYRILLIC_SHORT_I); \ + S(Cyrillic_ka, CYRILLIC_KA); \ + F(Cyrillic_KA, CYRILLIC_KA); \ + S(Cyrillic_el, CYRILLIC_EL); \ + F(Cyrillic_EL, CYRILLIC_EL); \ + S(Cyrillic_em, CYRILLIC_EM); \ + F(Cyrillic_EM, CYRILLIC_EM); \ + S(Cyrillic_en, CYRILLIC_EN); \ + F(Cyrillic_EN, CYRILLIC_EN); \ + S(Cyrillic_o, CYRILLIC_O); \ + F(Cyrillic_O, CYRILLIC_O); \ + S(Cyrillic_pe, CYRILLIC_PE); \ + F(Cyrillic_PE, CYRILLIC_PE); \ + S(Cyrillic_er, CYRILLIC_ER); \ + F(Cyrillic_ER, CYRILLIC_ER); \ + S(Cyrillic_es, CYRILLIC_ES); \ + F(Cyrillic_ES, CYRILLIC_ES); \ + S(Cyrillic_te, CYRILLIC_TE); \ + F(Cyrillic_TE, CYRILLIC_TE); \ + S(Cyrillic_u, CYRILLIC_U); \ + F(Cyrillic_U, CYRILLIC_U); \ + S(Cyrillic_ef, CYRILLIC_EF); \ + F(Cyrillic_EF, CYRILLIC_EF); \ + S(Cyrillic_ha, CYRILLIC_HA); \ + F(Cyrillic_HA, CYRILLIC_HA); \ + S(Cyrillic_tse, CYRILLIC_TSE); \ + F(Cyrillic_TSE, CYRILLIC_TSE); \ + S(Cyrillic_che, CYRILLIC_CHE); \ + F(Cyrillic_CHE, CYRILLIC_CHE); \ + S(Cyrillic_sha, CYRILLIC_SHA); \ + F(Cyrillic_SHA, CYRILLIC_SHA); \ + S(Cyrillic_shcha, CYRILLIC_SHCHA); \ + F(Cyrillic_SHCHA, CYRILLIC_SHCHA); \ + S(Cyrillic_hardsign, CYRILLIC_HARD_SIGN); \ + F(Cyrillic_HARDSIGN, CYRILLIC_HARD_SIGN); \ + S(Cyrillic_yeru, CYRILLIC_YERU); \ + F(Cyrillic_YERU, CYRILLIC_YERU); \ + S(Cyrillic_softsign, CYRILLIC_SOFT_SIGN); \ + F(Cyrillic_SOFTSIGN, CYRILLIC_SOFT_SIGN); \ + S(Cyrillic_e, CYRILLIC_E); \ + F(Cyrillic_E, CYRILLIC_E); \ + S(Cyrillic_yu, CYRILLIC_YU); \ + F(Cyrillic_YU, CYRILLIC_YU); \ + S(Cyrillic_ya, CYRILLIC_YA); \ + F(Cyrillic_YA, CYRILLIC_YA); \ + S(Cyrillic_io, CYRILLIC_IO); \ + F(Cyrillic_IO, CYRILLIC_IO); \ S(Escape, ESCAPE); \ S(Return, ENTER); \ S(Tab, TAB); \ diff --git a/kitty/config.py b/kitty/config.py index 768160ed84b..a087064759d 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -23,18 +23,81 @@ from .key_names import get_key_name_lookup named_keys = { + ' ': 'SPACE', + '!': 'EXCLAM', + '"': 'DOUBLE_QUOTE', + '#': 'NUMBER_SIGN', + '$': 'DOLLAR', + '&': 'AMPERSAND', "'": 'APOSTROPHE', + '(': 'PARENTHESIS_LEFT', + ')': 'PARENTHESIS_RIGHT', + '+': 'PLUS', ',': 'COMMA', '-': 'MINUS', '.': 'PERIOD', '/': 'SLASH', + ':': 'COLON', ';': 'SEMICOLON', + '<': 'LESS', '=': 'EQUAL', + '>': 'GREATER', + '@': 'AT', '[': 'LEFT_BRACKET', '\\': 'BACKSLASH', ']': 'RIGHT_BRACKET', '_': 'UNDERSCORE', - '`': 'GRAVE_ACCENT' + '`': 'GRAVE_ACCENT', + '§': 'PARAGRAPH', + 'º': 'MASCULINE', + 'À': 'A_GRAVE', + 'Ä': 'A_DIAERESIS', + 'Å': 'A_RING', + 'Æ': 'AE', + 'Ç': 'C_CEDILLA', + 'È': 'E_GRAVE', + 'É': 'E_ACUTE', + 'Ì': 'I_GRAVE', + 'Ñ': 'N_TILDE', + 'Ò': 'O_GRAVE', + 'Ö': 'O_DIAERESIS', + 'Ø': 'O_SLASH', + 'Ù': 'U_GRAVE', + 'Ü': 'U_DIAERESIS', + 'SS': 'S_SHARP', # 'ß'.upper() == 'SS' + 'А': 'CYRILLIC_A', + 'Б': 'CYRILLIC_BE', + 'В': 'CYRILLIC_VE', + 'Г': 'CYRILLIC_GHE', + 'Д': 'CYRILLIC_DE', + 'Е': 'CYRILLIC_IE', + 'Ж': 'CYRILLIC_ZHE', + 'З': 'CYRILLIC_ZE', + 'И': 'CYRILLIC_I', + 'Й': 'CYRILLIC_SHORT_I', + 'К': 'CYRILLIC_KA', + 'Л': 'CYRILLIC_EL', + 'М': 'CYRILLIC_EM', + 'Н': 'CYRILLIC_EN', + 'О': 'CYRILLIC_O', + 'П': 'CYRILLIC_PE', + 'Р': 'CYRILLIC_ER', + 'С': 'CYRILLIC_ES', + 'Т': 'CYRILLIC_TE', + 'У': 'CYRILLIC_U', + 'Ф': 'CYRILLIC_EF', + 'Х': 'CYRILLIC_HA', + 'Ц': 'CYRILLIC_TSE', + 'Ч': 'CYRILLIC_CHE', + 'Ш': 'CYRILLIC_SHA', + 'Щ': 'CYRILLIC_SHCHA', + 'Ъ': 'CYRILLIC_HARD_SIGN', + 'Ы': 'CYRILLIC_YERU', + 'Ь': 'CYRILLIC_SOFT_SIGN', + 'Э': 'CYRILLIC_E', + 'Ю': 'CYRILLIC_YU', + 'Я': 'CYRILLIC_YA', + 'Ё': 'CYRILLIC_IO' } diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h index dfde9319e15..0127da2d41f 100644 --- a/kitty/glfw-wrapper.h +++ b/kitty/glfw-wrapper.h @@ -99,7 +99,14 @@ /* 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 /* - */ @@ -115,8 +122,12 @@ #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 @@ -150,8 +161,58 @@ #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_LAST_PRINTABLE GLFW_KEY_UNDERSCORE +#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 diff --git a/kitty/glfw.c b/kitty/glfw.c index 802d4e79445..952425901f1 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -1234,7 +1234,14 @@ init_glfw(PyObject *m) { // --- 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); @@ -1250,8 +1257,12 @@ init_glfw(PyObject *m) { 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); @@ -1285,6 +1296,56 @@ init_glfw(PyObject *m) { 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 ----------------------------------------------------------- diff --git a/kitty/key_encoding.py b/kitty/key_encoding.py index a3618145bc0..bd876b02894 100644 --- a/kitty/key_encoding.py +++ b/kitty/key_encoding.py @@ -258,7 +258,11 @@ } # END_ENCODING }}} -text_keys = string.ascii_uppercase + string.ascii_lowercase + string.digits + '`~!@#$%^&*()_-+=[{]}\\|<,>./?;:\'" ' +text_keys = ( + string.ascii_uppercase + string.ascii_lowercase + string.digits + + '`~!@#$%^&*()_-+=[{]}\\|<,>./?;:\'" ' + 'ÄäÖöÜüߧºàåæçèéìñòøùабвгдежзийклмнопрстуфхцчшщъыьэюяё' +) def text_match(key):