From 97e6978ed8d0adbfab3e1e0912f5e8cf320fb532 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Sat, 31 Aug 2019 22:31:38 +0200 Subject: [PATCH] Order keyboard keys by their ASCII value --- glfw/cocoa_window.m | 80 ++++++++++++++++++++++---------------------- glfw/glfw3.h | 10 +++--- glfw/input.c | 48 +++++++++++++------------- glfw/xkb_glfw.c | 8 ++--- kitty/config.py | 2 +- kitty/glfw-wrapper.h | 4 +-- kitty/glfw.c | 4 +-- 7 files changed, 78 insertions(+), 78 deletions(-) diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m index 9f2e46b82..b3f537aa3 100644 --- a/glfw/cocoa_window.m +++ b/glfw/cocoa_window.m @@ -299,6 +299,23 @@ static int translateKey(unsigned int key, bool apply_keymap) // Key name switch(name) { #define K(ch, name) case ch: return GLFW_KEY_##name + K('\'', APOSTROPHE); + K('+', PLUS); + K(',', COMMA); + K('-', MINUS); + K('.', PERIOD); + K('/', SLASH); + K('0', 0); + K('1', 1); + K('2', 2); + K('3', 3); + K('5', 5); + K('6', 6); + K('7', 7); + K('8', 8); + K('9', 9); + K(';', SEMICOLON); + K('=', EQUAL); K('A', A); K('a', A); K('B', B); K('b', B); K('C', C); K('c', C); @@ -325,28 +342,11 @@ static int translateKey(unsigned int key, bool apply_keymap) K('X', X); K('x', X); K('Y', Y); K('y', Y); K('Z', Z); K('z', Z); - K('0', 0); - K('1', 1); - K('2', 2); - K('3', 3); - K('5', 5); - K('6', 6); - K('7', 7); - K('8', 8); - K('9', 9); - K('\'', APOSTROPHE); - K(',', COMMA); - K('.', PERIOD); - K('/', SLASH); - K('-', MINUS); - K('=', EQUAL); - K(';', SEMICOLON); K('[', LEFT_BRACKET); + K('\\', BACKSLASH); K(']', RIGHT_BRACKET); - K('+', PLUS); K('_', UNDERSCORE); K('`', GRAVE_ACCENT); - K('\\', BACKSLASH); #undef K default: break; @@ -2296,6 +2296,28 @@ 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('\'', APOSTROPHE); + K('+', PLUS); + K(',', COMMA); + K('-', MINUS); + K('.', PERIOD); + K('/', SLASH); + K('0', 0); + K('1', 1); + K('2', 2); + K('3', 3); + K('5', 5); + K('6', 6); + K('7', 7); + K('8', 8); + K('9', 9); + K(';', SEMICOLON); + K('=', EQUAL); + K('[', LEFT_BRACKET); + K('\\', BACKSLASH); + K(']', RIGHT_BRACKET); + K('_', UNDERSCORE); + K('`', GRAVE_ACCENT); K('a', A); K('b', B); K('c', C); @@ -2322,28 +2344,6 @@ START_ALLOW_CASE_RANGE K('x', X); K('y', Y); K('z', Z); - K('0', 0); - K('1', 1); - K('2', 2); - K('3', 3); - K('5', 5); - K('6', 6); - K('7', 7); - K('8', 8); - K('9', 9); - K('\'', APOSTROPHE); - K(',', COMMA); - K('.', PERIOD); - K('/', SLASH); - K('-', MINUS); - K('=', EQUAL); - K(';', SEMICOLON); - K('[', LEFT_BRACKET); - K(']', RIGHT_BRACKET); - K('+', PLUS); - K('_', UNDERSCORE); - K('`', GRAVE_ACCENT); - K('\\', BACKSLASH); K(0x35, ESCAPE); K('\r', ENTER); diff --git a/glfw/glfw3.h b/glfw/glfw3.h index 0d210c9fb..b4826df57 100644 --- a/glfw/glfw3.h +++ b/glfw/glfw3.h @@ -343,6 +343,7 @@ extern "C" { /* Printable keys */ #define GLFW_KEY_SPACE 32 #define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_PLUS 43 /* + */ #define GLFW_KEY_COMMA 44 /* , */ #define GLFW_KEY_MINUS 45 /* - */ #define GLFW_KEY_PERIOD 46 /* . */ @@ -388,11 +389,10 @@ extern "C" { #define GLFW_KEY_LEFT_BRACKET 91 /* [ */ #define GLFW_KEY_BACKSLASH 92 /* \ */ #define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#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_PLUS 163 -#define GLFW_KEY_UNDERSCORE 164 #define GLFW_KEY_LAST_PRINTABLE GLFW_KEY_UNDERSCORE @@ -3851,15 +3851,15 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); * - `GLFW_KEY_MINUS` * - `GLFW_KEY_PERIOD` * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_0` to `GLFW_KEY_9` * - `GLFW_KEY_SEMICOLON` * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` * - `GLFW_KEY_LEFT_BRACKET` - * - `GLFW_KEY_RIGHT_BRACKET` * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_RIGHT_BRACKET` * - `GLFW_KEY_WORLD_1` * - `GLFW_KEY_WORLD_2` - * - `GLFW_KEY_0` to `GLFW_KEY_9` - * - `GLFW_KEY_A` to `GLFW_KEY_Z` * - `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 fd747a761..aeb0b85dd 100644 --- a/glfw/input.c +++ b/glfw/input.c @@ -439,6 +439,25 @@ const char* _glfwGetKeyName(int key) switch (key) { // Printable keys + case GLFW_KEY_SPACE: return "SPACE"; + case GLFW_KEY_APOSTROPHE: return "APOSTROPHE"; + 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_SEMICOLON: return "SEMICOLON"; + case GLFW_KEY_EQUAL: return "EQUAL"; case GLFW_KEY_A: return "A"; case GLFW_KEY_B: return "B"; case GLFW_KEY_C: return "C"; @@ -465,32 +484,13 @@ const char* _glfwGetKeyName(int key) case GLFW_KEY_X: return "X"; case GLFW_KEY_Y: return "Y"; case GLFW_KEY_Z: return "Z"; - 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_0: return "0"; - case GLFW_KEY_SPACE: return "SPACE"; - case GLFW_KEY_MINUS: return "MINUS"; - case GLFW_KEY_EQUAL: return "EQUAL"; - case GLFW_KEY_LEFT_BRACKET: return "LEFT BRACKET"; - case GLFW_KEY_RIGHT_BRACKET: return "RIGHT BRACKET"; + case GLFW_KEY_LEFT_BRACKET: return "LEFT_BRACKET"; case GLFW_KEY_BACKSLASH: return "BACKSLASH"; - case GLFW_KEY_SEMICOLON: return "SEMICOLON"; - case GLFW_KEY_APOSTROPHE: return "APOSTROPHE"; - case GLFW_KEY_GRAVE_ACCENT: return "GRAVE ACCENT"; - case GLFW_KEY_COMMA: return "COMMA"; - case GLFW_KEY_PERIOD: return "PERIOD"; - case GLFW_KEY_SLASH: return "SLASH"; - case GLFW_KEY_WORLD_1: return "WORLD 1"; - case GLFW_KEY_WORLD_2: return "WORLD 2"; - case GLFW_KEY_PLUS: return "PLUS"; + case GLFW_KEY_RIGHT_BRACKET: return "RIGHT_BRACKET"; 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"; // Function keys case GLFW_KEY_ESCAPE: return "ESCAPE"; diff --git a/glfw/xkb_glfw.c b/glfw/xkb_glfw.c index 4a6d666fb..81f5b5932 100644 --- a/glfw/xkb_glfw.c +++ b/glfw/xkb_glfw.c @@ -38,18 +38,21 @@ START_ALLOW_CASE_RANGE switch(key) { \ S(space, SPACE); \ S(apostrophe, APOSTROPHE); \ + S(plus, PLUS); \ S(comma, COMMA); \ S(minus, MINUS); \ S(period, PERIOD); \ S(slash, SLASH); \ + R(0, 9, 0, 9); \ S(semicolon, SEMICOLON); \ S(equal, EQUAL); \ + D(A, Z, A, Z); \ S(bracketleft, LEFT_BRACKET); \ S(backslash, BACKSLASH); \ S(bracketright, RIGHT_BRACKET); \ - S(plus, PLUS); \ S(underscore, UNDERSCORE); \ S(grave, GRAVE_ACCENT); \ + R(a, z, A, Z); \ S(Escape, ESCAPE); \ S(Return, ENTER); \ S(Tab, TAB); \ @@ -91,9 +94,6 @@ START_ALLOW_CASE_RANGE S(Alt_R, RIGHT_ALT); \ S(Super_R, RIGHT_SUPER); \ S(Menu, MENU); \ - R(0, 9, 0, 9); \ - R(a, z, A, Z); \ - D(A, Z, A, Z); \ R(F1, F25, F1, F25); \ R(KP_0, KP_9, KP_0, KP_9); \ diff --git a/kitty/config.py b/kitty/config.py index 5a14c381b..768160ed8 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -26,7 +26,6 @@ named_keys = { "'": 'APOSTROPHE', ',': 'COMMA', '-': 'MINUS', - '_': 'UNDERSCORE', '.': 'PERIOD', '/': 'SLASH', ';': 'SEMICOLON', @@ -34,6 +33,7 @@ named_keys = { '[': 'LEFT_BRACKET', '\\': 'BACKSLASH', ']': 'RIGHT_BRACKET', + '_': 'UNDERSCORE', '`': 'GRAVE_ACCENT' } diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h index 3fb90b3f1..dfde9319e 100644 --- a/kitty/glfw-wrapper.h +++ b/kitty/glfw-wrapper.h @@ -100,6 +100,7 @@ /* Printable keys */ #define GLFW_KEY_SPACE 32 #define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_PLUS 43 /* + */ #define GLFW_KEY_COMMA 44 /* , */ #define GLFW_KEY_MINUS 45 /* - */ #define GLFW_KEY_PERIOD 46 /* . */ @@ -145,11 +146,10 @@ #define GLFW_KEY_LEFT_BRACKET 91 /* [ */ #define GLFW_KEY_BACKSLASH 92 /* \ */ #define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#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_PLUS 163 -#define GLFW_KEY_UNDERSCORE 164 #define GLFW_KEY_LAST_PRINTABLE GLFW_KEY_UNDERSCORE diff --git a/kitty/glfw.c b/kitty/glfw.c index f1b3ee697..802d4e794 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -1235,6 +1235,7 @@ init_glfw(PyObject *m) { // --- Printable keys ---------------------------------------------------------- ADDC(GLFW_KEY_SPACE); ADDC(GLFW_KEY_APOSTROPHE); + ADDC(GLFW_KEY_PLUS); ADDC(GLFW_KEY_COMMA); ADDC(GLFW_KEY_MINUS); ADDC(GLFW_KEY_PERIOD); @@ -1280,11 +1281,10 @@ init_glfw(PyObject *m) { ADDC(GLFW_KEY_LEFT_BRACKET); ADDC(GLFW_KEY_BACKSLASH); ADDC(GLFW_KEY_RIGHT_BRACKET); + ADDC(GLFW_KEY_UNDERSCORE); ADDC(GLFW_KEY_GRAVE_ACCENT); ADDC(GLFW_KEY_WORLD_1); ADDC(GLFW_KEY_WORLD_2); - ADDC(GLFW_KEY_PLUS); - ADDC(GLFW_KEY_UNDERSCORE); ADDC(GLFW_KEY_LAST_PRINTABLE); // --- Function keys -----------------------------------------------------------