[client] kb: add support for missing key mappings

Fixes #1321
This commit is contained in:
Geoffrey McRae
2026-07-30 10:03:14 +10:00
parent 8fb355e6b7
commit deb447c3ce
2 changed files with 142 additions and 3 deletions

View File

@@ -723,7 +723,7 @@ void core_resetOverlayInputState(void)
g_state.io->MouseDown[ImGuiMouseButton_Left ] = false;
g_state.io->MouseDown[ImGuiMouseButton_Right ] = false;
g_state.io->MouseDown[ImGuiMouseButton_Middle] = false;
for(int key = ImGuiKey_NamedKey_BEGIN; key < ImGuiKey_NamedKey_END; key++)
for(int key = 0; key < KEY_MAX; key++)
if (linux_to_imgui[key])
ImGuiIO_AddKeyEvent(g_state.io, linux_to_imgui[key], false);
}

View File

@@ -117,7 +117,7 @@ const uint32_t linux_to_ps2[KEY_MAX] =
[KEY_KPENTER] /* = USB 88 */ = 0x00E01C,
[KEY_RIGHTCTRL] /* = USB 228 */ = 0x00E01D,
[KEY_KPSLASH] /* = USB 84 */ = 0x00E035,
[KEY_SYSRQ] /* = USB 70 */ = 0x00E037,
[KEY_SYSRQ] /* = USB 70 */ = 0x000054,
[KEY_RIGHTALT] /* = USB 230 */ = 0x00E038,
[KEY_HOME] /* = USB 74 */ = 0x00E047,
[KEY_UP] /* = USB 82 */ = 0x00E048,
@@ -138,9 +138,34 @@ const uint32_t linux_to_ps2[KEY_MAX] =
[KEY_LEFTMETA] /* = USB 227 */ = 0x00E05B,
[KEY_RIGHTMETA] /* = USB 231 */ = 0x00E05C,
[KEY_COMPOSE] /* = USB 101 */ = 0x00E05D,
[KEY_POWER] /* = USB 102 */ = 0x00E05E,
[KEY_F13] /* = USB 104 */ = 0x00005D,
[KEY_F14] /* = USB 105 */ = 0x00005E,
[KEY_F15] /* = USB 106 */ = 0x00005F,
[KEY_F16] /* = USB 107 */ = 0x000055,
[KEY_F17] /* = USB 108 */ = 0x00E003,
[KEY_F18] /* = USB 109 */ = 0x00E077,
[KEY_F19] /* = USB 110 */ = 0x00E004,
[KEY_F20] /* = USB 111 */ = 0x00005A,
[KEY_F21] /* = USB 112 */ = 0x000074,
[KEY_F22] /* = USB 113 */ = 0x00E079,
[KEY_F23] /* = USB 114 */ = 0x00006D,
[KEY_F24] /* = USB 115 */ = 0x00006F,
[KEY_OPEN] /* = USB 116 */ = 0x000064,
[KEY_HELP] /* = USB 117 */ = 0x00E075,
[KEY_MENU] /* = USB 118 */ = 0x00E01E,
[KEY_FRONT] /* = USB 119 */ = 0x00E00C,
[KEY_AGAIN] /* = USB 121 */ = 0x00E005,
[KEY_UNDO] /* = USB 122 */ = 0x00E007,
[KEY_CUT] /* = USB 123 */ = 0x00E03C,
[KEY_COPY] /* = USB 124 */ = 0x00E078,
[KEY_PASTE] /* = USB 125 */ = 0x000065,
[KEY_KPJPCOMMA] /* = USB 140 */ = 0x00005C,
[KEY_KATAKANA] /* = USB 146 */ = 0x000078,
[KEY_HIRAGANA] /* = USB 147 */ = 0x000077,
[KEY_ZENKAKUHANKAKU] /* = USB 148 */ = 0x000076,
[KEY_KPLEFTPAREN] /* = USB 182 */ = 0x00E076,
[KEY_KPRIGHTPAREN] /* = USB 183 */ = 0x00E07B,
[KEY_PRINT] /* = USB 70 */ = 0x00E037,
[KEY_MUTE] /* = USB 127 */ = 0x00E020,
[KEY_VOLUMEUP] /* = USB 128 */ = 0x00E030,
@@ -149,6 +174,19 @@ const uint32_t linux_to_ps2[KEY_MAX] =
[KEY_PLAYPAUSE] /* = USB 232 */ = 0x00E022,
[KEY_PREVIOUSSONG] /* = USB 234 */ = 0x00E010,
[KEY_STOPCD] /* = USB 233 */ = 0x00E024,
[KEY_EJECTCD] /* = USB 236 */ = 0x00006C,
[KEY_WWW] /* = USB 240 */ = 0x00E002,
[KEY_BACK] /* = USB 241 */ = 0x00E06A,
[KEY_FORWARD] /* = USB 242 */ = 0x00E069,
[KEY_STOP] /* = USB 243 */ = 0x00E068,
[KEY_FIND] /* = USB 244 */ = 0x00E041,
[KEY_SCROLLUP] /* = USB 245 */ = 0x000075,
[KEY_SCROLLDOWN] /* = USB 246 */ = 0x00E00F,
[KEY_EDIT] /* = USB 247 */ = 0x00E008,
[KEY_SLEEP] /* = USB 248 */ = 0x00E05F,
[KEY_SCREENLOCK] /* = USB 249 */ = 0x00E012,
[KEY_REFRESH] /* = USB 250 */ = 0x00E067,
[KEY_CALC] /* = USB 251 */ = 0x00E021,
};
const char * linux_to_str[KEY_MAX] =
@@ -268,9 +306,34 @@ const char * linux_to_str[KEY_MAX] =
[KEY_LEFTMETA] = "KEY_LEFTMETA",
[KEY_RIGHTMETA] = "KEY_RIGHTMETA",
[KEY_COMPOSE] = "KEY_COMPOSE",
[KEY_POWER] = "KEY_POWER",
[KEY_F13] = "KEY_F13",
[KEY_F14] = "KEY_F14",
[KEY_F15] = "KEY_F15",
[KEY_F16] = "KEY_F16",
[KEY_F17] = "KEY_F17",
[KEY_F18] = "KEY_F18",
[KEY_F19] = "KEY_F19",
[KEY_F20] = "KEY_F20",
[KEY_F21] = "KEY_F21",
[KEY_F22] = "KEY_F22",
[KEY_F23] = "KEY_F23",
[KEY_F24] = "KEY_F24",
[KEY_OPEN] = "KEY_OPEN",
[KEY_HELP] = "KEY_HELP",
[KEY_MENU] = "KEY_MENU",
[KEY_FRONT] = "KEY_FRONT",
[KEY_AGAIN] = "KEY_AGAIN",
[KEY_UNDO] = "KEY_UNDO",
[KEY_CUT] = "KEY_CUT",
[KEY_COPY] = "KEY_COPY",
[KEY_PASTE] = "KEY_PASTE",
[KEY_KPJPCOMMA] = "KEY_KPJPCOMMA",
[KEY_KATAKANA] = "KEY_KATAKANA",
[KEY_HIRAGANA] = "KEY_HIRAGANA",
[KEY_ZENKAKUHANKAKU] = "KEY_ZENKAKUHANKAKU",
[KEY_KPLEFTPAREN] = "KEY_KPLEFTPAREN",
[KEY_KPRIGHTPAREN] = "KEY_KPRIGHTPAREN",
[KEY_PRINT] = "KEY_PRINT",
[KEY_MUTE] = "KEY_MUTE",
[KEY_VOLUMEUP] = "KEY_VOLUMEUP",
@@ -279,6 +342,19 @@ const char * linux_to_str[KEY_MAX] =
[KEY_PLAYPAUSE] = "KEY_PLAYPAUSE",
[KEY_PREVIOUSSONG] = "KEY_PREVIOUSSONG",
[KEY_STOPCD] = "KEY_STOPCD",
[KEY_EJECTCD] = "KEY_EJECTCD",
[KEY_WWW] = "KEY_WWW",
[KEY_BACK] = "KEY_BACK",
[KEY_FORWARD] = "KEY_FORWARD",
[KEY_STOP] = "KEY_STOP",
[KEY_FIND] = "KEY_FIND",
[KEY_SCROLLUP] = "KEY_SCROLLUP",
[KEY_SCROLLDOWN] = "KEY_SCROLLDOWN",
[KEY_EDIT] = "KEY_EDIT",
[KEY_SLEEP] = "KEY_SLEEP",
[KEY_SCREENLOCK] = "KEY_SCREENLOCK",
[KEY_REFRESH] = "KEY_REFRESH",
[KEY_CALC] = "KEY_CALC",
};
const char * linux_to_display[KEY_MAX] =
@@ -398,9 +474,34 @@ const char * linux_to_display[KEY_MAX] =
[KEY_LEFTMETA] = "LWin",
[KEY_RIGHTMETA] = "RWin",
[KEY_COMPOSE] = "Compose",
[KEY_POWER] = "Power",
[KEY_F13] = "F13",
[KEY_F14] = "F14",
[KEY_F15] = "F15",
[KEY_F16] = "F16",
[KEY_F17] = "F17",
[KEY_F18] = "F18",
[KEY_F19] = "F19",
[KEY_F20] = "F20",
[KEY_F21] = "F21",
[KEY_F22] = "F22",
[KEY_F23] = "F23",
[KEY_F24] = "F24",
[KEY_OPEN] = "Open",
[KEY_HELP] = "Help",
[KEY_MENU] = "Menu",
[KEY_FRONT] = "Front",
[KEY_AGAIN] = "Again",
[KEY_UNDO] = "Undo",
[KEY_CUT] = "Cut",
[KEY_COPY] = "Copy",
[KEY_PASTE] = "Paste",
[KEY_KPJPCOMMA] = "KPJPComma",
[KEY_KATAKANA] = "Katakana",
[KEY_HIRAGANA] = "Hiragana",
[KEY_ZENKAKUHANKAKU] = "ZenkakuHankaku",
[KEY_KPLEFTPAREN] = "KPLeftParen",
[KEY_KPRIGHTPAREN] = "KPRightParen",
[KEY_PRINT] = "Print",
[KEY_MUTE] = "Mute",
[KEY_VOLUMEUP] = "VolumeUp",
@@ -409,6 +510,19 @@ const char * linux_to_display[KEY_MAX] =
[KEY_PLAYPAUSE] = "PlayPause",
[KEY_PREVIOUSSONG] = "PreviousSong",
[KEY_STOPCD] = "StopMedia",
[KEY_EJECTCD] = "Eject",
[KEY_WWW] = "WWW",
[KEY_BACK] = "Back",
[KEY_FORWARD] = "Forward",
[KEY_STOP] = "Stop",
[KEY_FIND] = "Find",
[KEY_SCROLLUP] = "ScrollUp",
[KEY_SCROLLDOWN] = "ScrollDown",
[KEY_EDIT] = "Edit",
[KEY_SLEEP] = "Sleep",
[KEY_SCREENLOCK] = "ScreenLock",
[KEY_REFRESH] = "Refresh",
[KEY_CALC] = "Calculator",
};
const int linux_to_imgui[KEY_MAX] =
@@ -427,6 +541,16 @@ const int linux_to_imgui[KEY_MAX] =
[KEY_BACKSPACE ] = ImGuiKey_Backspace,
[KEY_SPACE ] = ImGuiKey_Space,
[KEY_ENTER ] = ImGuiKey_Enter,
[KEY_LEFTCTRL ] = ImGuiKey_LeftCtrl,
[KEY_LEFTSHIFT ] = ImGuiKey_LeftShift,
[KEY_LEFTALT ] = ImGuiKey_LeftAlt,
[KEY_LEFTMETA ] = ImGuiKey_LeftSuper,
[KEY_RIGHTCTRL ] = ImGuiKey_RightCtrl,
[KEY_RIGHTSHIFT] = ImGuiKey_RightShift,
[KEY_RIGHTALT ] = ImGuiKey_RightAlt,
[KEY_RIGHTMETA ] = ImGuiKey_RightSuper,
[KEY_COMPOSE ] = ImGuiKey_Menu,
[KEY_MENU ] = ImGuiKey_Menu,
[KEY_0 ] = ImGuiKey_0,
[KEY_1 ] = ImGuiKey_1,
[KEY_2 ] = ImGuiKey_2,
@@ -475,6 +599,18 @@ const int linux_to_imgui[KEY_MAX] =
[KEY_F10 ] = ImGuiKey_F10,
[KEY_F11 ] = ImGuiKey_F11,
[KEY_F12 ] = ImGuiKey_F12,
[KEY_F13 ] = ImGuiKey_F13,
[KEY_F14 ] = ImGuiKey_F14,
[KEY_F15 ] = ImGuiKey_F15,
[KEY_F16 ] = ImGuiKey_F16,
[KEY_F17 ] = ImGuiKey_F17,
[KEY_F18 ] = ImGuiKey_F18,
[KEY_F19 ] = ImGuiKey_F19,
[KEY_F20 ] = ImGuiKey_F20,
[KEY_F21 ] = ImGuiKey_F21,
[KEY_F22 ] = ImGuiKey_F22,
[KEY_F23 ] = ImGuiKey_F23,
[KEY_F24 ] = ImGuiKey_F24,
[KEY_APOSTROPHE] = ImGuiKey_Apostrophe,
[KEY_COMMA ] = ImGuiKey_Comma,
[KEY_MINUS ] = ImGuiKey_Minus,
@@ -483,6 +619,7 @@ const int linux_to_imgui[KEY_MAX] =
[KEY_SEMICOLON ] = ImGuiKey_Semicolon,
[KEY_EQUAL ] = ImGuiKey_Equal,
[KEY_LEFTBRACE ] = ImGuiKey_LeftBracket,
[KEY_BACKSLASH ] = ImGuiKey_Backslash,
[KEY_RIGHTBRACE] = ImGuiKey_RightBracket,
[KEY_GRAVE ] = ImGuiKey_GraveAccent,
[KEY_CAPSLOCK ] = ImGuiKey_CapsLock,
@@ -506,5 +643,7 @@ const int linux_to_imgui[KEY_MAX] =
[KEY_KPMINUS ] = ImGuiKey_KeypadSubtract,
[KEY_KPPLUS ] = ImGuiKey_KeypadAdd,
[KEY_KPENTER ] = ImGuiKey_KeypadEnter,
[KEY_KPEQUAL ] = ImGuiKey_KeypadEqual
[KEY_KPEQUAL ] = ImGuiKey_KeypadEqual,
[KEY_BACK ] = ImGuiKey_AppBack,
[KEY_FORWARD ] = ImGuiKey_AppForward,
};