From 2779eb4f912353e4705d18dc4418d48cf8cf4840 Mon Sep 17 00:00:00 2001 From: Werner Sembach Date: Wed, 4 Jun 2025 13:49:41 +0200 Subject: [PATCH] Properly setup key names --- .../RGBController_HIDLampArray.cpp | 246 +++++++++++++++++- 1 file changed, 242 insertions(+), 4 deletions(-) diff --git a/Controllers/HIDLampArrayController/RGBController_HIDLampArray.cpp b/Controllers/HIDLampArrayController/RGBController_HIDLampArray.cpp index 65343ca8f..379715c89 100644 --- a/Controllers/HIDLampArrayController/RGBController_HIDLampArray.cpp +++ b/Controllers/HIDLampArrayController/RGBController_HIDLampArray.cpp @@ -10,7 +10,7 @@ \*---------------------------------------------------------*/ #include "RGBController_HIDLampArray.h" - +#include "RGBControllerKeyNames.h" #include /**------------------------------------------------------------------*\ @@ -46,10 +46,240 @@ RGBController_HIDLampArray::~RGBController_HIDLampArray() delete controller; } +/*---------------------------------------------------------*\ +| HID Usage Tables 1.6 -> 10 Keyboard/Keypad Page (0x07) | +\*---------------------------------------------------------*/ +#define HID_KEYBOARD_USAGE_IDS_COUNT 0xE9 + +static const char *HIDUsageIDsToKeyNames[HID_KEYBOARD_USAGE_IDS_COUNT] = +{ + KEY_EN_UNUSED, // Reserved + KEY_EN_UNUSED, // Keyboard ErrorRollOver + KEY_EN_UNUSED, // Keyboard POSTFail + KEY_EN_UNUSED, // Keyboard ErrorUndefined + KEY_EN_A, // Keyboard a and A + KEY_EN_B, // Keyboard b and B + KEY_EN_C, // Keyboard c and C + KEY_EN_D, // Keyboard d and D + KEY_EN_E, // Keyboard e and E + KEY_EN_F, // Keyboard f and F + KEY_EN_G, // Keyboard g and G + KEY_EN_H, // Keyboard h and H + KEY_EN_I, // Keyboard i and I + KEY_EN_J, // Keyboard j and J + KEY_EN_K, // Keyboard k and K + KEY_EN_L, // Keyboard l and L + KEY_EN_M, // Keyboard m and M + KEY_EN_N, // Keyboard n and N + KEY_EN_O, // Keyboard o and O + KEY_EN_P, // Keyboard p and P + KEY_EN_Q, // Keyboard q and Q + KEY_EN_R, // Keyboard r and R + KEY_EN_S, // Keyboard s and S + KEY_EN_T, // Keyboard t and T + KEY_EN_U, // Keyboard u and U + KEY_EN_V, // Keyboard v and V + KEY_EN_W, // Keyboard w and W + KEY_EN_X, // Keyboard x and X + KEY_EN_Y, // Keyboard y and Y + KEY_EN_Z, // Keyboard z and Z + KEY_EN_1, // Keyboard 1 and ! + KEY_EN_2, // Keyboard 2 and @ + KEY_EN_3, // Keyboard 3 and # + KEY_EN_4, // Keyboard 4 and $ + KEY_EN_5, // Keyboard 5 and % + KEY_EN_6, // Keyboard 6 and ∧ + KEY_EN_7, // Keyboard 7 and & + KEY_EN_8, // Keyboard 8 and * + KEY_EN_9, // Keyboard 9 and ( + KEY_EN_0, // Keyboard 0 and ) + KEY_EN_ANSI_ENTER, // Keyboard Return (ENTER) + KEY_EN_ESCAPE, // Keyboard ESCAPE + KEY_EN_BACKSPACE, // Keyboard DELETE (Backspace) + KEY_EN_TAB, // Keyboard Tab + KEY_EN_SPACE, // Keyboard Spacebar + KEY_EN_MINUS, // Keyboard - and (underscore) + KEY_EN_EQUALS, // Keyboard = and + + KEY_EN_LEFT_BRACKET, // Keyboard [ and { + KEY_EN_RIGHT_BRACKET, // Keyboard ] and } + KEY_EN_BACK_SLASH, // Keyboard \ and | + KEY_EN_POUND, // Keyboard Non-US # and ˜ + KEY_EN_SEMICOLON, // Keyboard ; and : + KEY_EN_QUOTE, // Keyboard ‘ and “ + KEY_EN_BACK_TICK, // Keyboard Grave Accent and Tilde + KEY_EN_COMMA, // Keyboard , and < + KEY_EN_PERIOD, // Keyboard . and > + KEY_EN_FORWARD_SLASH, // Keyboard / and ? + KEY_EN_CAPS_LOCK, // Keyboard Caps Lock + KEY_EN_F1, // Keyboard F1 + KEY_EN_F2, // Keyboard F2 + KEY_EN_F3, // Keyboard F3 + KEY_EN_F4, // Keyboard F4 + KEY_EN_F5, // Keyboard F5 + KEY_EN_F6, // Keyboard F6 + KEY_EN_F7, // Keyboard F7 + KEY_EN_F8, // Keyboard F8 + KEY_EN_F9, // Keyboard F9 + KEY_EN_F10, // Keyboard F10 + KEY_EN_F11, // Keyboard F11 + KEY_EN_F12, // Keyboard F12 + KEY_EN_PRINT_SCREEN, // Keyboard PrintScreen + KEY_EN_SCROLL_LOCK, // Keyboard Scroll Lock + KEY_EN_PAUSE_BREAK, // Keyboard Pause + KEY_EN_INSERT, // Keyboard Insert + KEY_EN_HOME, // Keyboard Home + KEY_EN_PAGE_UP, // Keyboard PageUp + KEY_EN_DELETE, // Keyboard Delete Forward + KEY_EN_END, // Keyboard End + KEY_EN_PAGE_DOWN, // Keyboard PageDown + KEY_EN_RIGHT_ARROW, // Keyboard RightArrow + KEY_EN_LEFT_ARROW, // Keyboard LeftArrow + KEY_EN_DOWN_ARROW, // Keyboard DownArrow + KEY_EN_UP_ARROW, // Keyboard UpArrow + KEY_EN_NUMPAD_LOCK, // Keypad Num Lock and Clear + KEY_EN_NUMPAD_DIVIDE, // Keypad / + KEY_EN_NUMPAD_TIMES, // Keypad * + KEY_EN_NUMPAD_MINUS, // Keypad - + KEY_EN_NUMPAD_PLUS, // Keypad + + KEY_EN_NUMPAD_ENTER, // Keypad ENTER + KEY_EN_NUMPAD_1, // Keypad 1 and End + KEY_EN_NUMPAD_2, // Keypad 2 and Down Arrow + KEY_EN_NUMPAD_3, // Keypad 3 and PageDn + KEY_EN_NUMPAD_4, // Keypad 4 and Left Arrow + KEY_EN_NUMPAD_5, // Keypad 5 + KEY_EN_NUMPAD_6, // Keypad 6 and Right Arrow + KEY_EN_NUMPAD_7, // Keypad 7 and Home + KEY_EN_NUMPAD_8, // Keypad 8 and Up Arrow + KEY_EN_NUMPAD_9, // Keypad 9 and PageUp + KEY_EN_NUMPAD_0, // Keypad 0 and Insert + KEY_EN_NUMPAD_PERIOD, // Keypad . and Delete + KEY_EN_BACK_SLASH, // Keyboard Non-US \ and | + KEY_EN_UNUSED, // Keyboard Application + KEY_EN_POWER, // Keyboard Power + KEY_EN_NUMPAD_EQUAL, // Keypad = + KEY_EN_F13, // Keyboard F13 + KEY_EN_F14, // Keyboard F14 + KEY_EN_F15, // Keyboard F15 + KEY_EN_F16, // Keyboard F16 + KEY_EN_F17, // Keyboard F17 + KEY_EN_F18, // Keyboard F18 + KEY_EN_F19, // Keyboard F19 + KEY_EN_F20, // Keyboard F20 + KEY_EN_F21, // Keyboard F21 + KEY_EN_F22, // Keyboard F22 + KEY_EN_F23, // Keyboard F23 + KEY_EN_F24, // Keyboard F24 + KEY_EN_UNUSED, // Keyboard Execute + KEY_EN_UNUSED, // Keyboard Help + KEY_EN_MENU, // Keyboard Menu + KEY_EN_UNUSED, // Keyboard Select + KEY_EN_UNUSED, // Keyboard Stop + KEY_EN_UNUSED, // Keyboard Again + KEY_EN_UNUSED, // Keyboard Undo + KEY_EN_UNUSED, // Keyboard Cut + KEY_EN_UNUSED, // Keyboard Copy + KEY_EN_UNUSED, // Keyboard Paste + KEY_EN_UNUSED, // Keyboard Find + KEY_EN_MEDIA_MUTE, // Keyboard Mute + KEY_EN_MEDIA_VOLUME_UP, // Keyboard Volume Up + KEY_EN_MEDIA_VOLUME_DOWN, // Keyboard Volume Down + KEY_EN_UNUSED, // Keyboard Locking Caps Lock + KEY_EN_UNUSED, // Keyboard Locking Num Lock + KEY_EN_UNUSED, // Keyboard Locking Scroll Lock + KEY_EN_NUMPAD_PERIOD, // Keypad Comma + KEY_EN_NUMPAD_EQUAL, // Keypad Equal Sign + KEY_JP_RO, // Keyboard International1 + KEY_JP_KANA, // Keyboard International2 + KEY_JP_YEN, // Keyboard International3 + KEY_JP_HENKAN, // Keyboard International4 + KEY_JP_MUHENKAN, // Keyboard International5 + KEY_EN_COMMA, // Keyboard International6 + KEY_JP_ZENKAKU, // Keyboard International7 + KEY_EN_UNUSED, // Keyboard International8 + KEY_EN_UNUSED, // Keyboard International9 + KEY_KR_HAN, // Keyboard LANG1 + KEY_KR_HANJA, // Keyboard LANG2 + KEY_JP_KATAKANA, // Keyboard LANG3 + KEY_JP_HIRAGANA, // Keyboard LANG4 + KEY_JP_ZENKAKU, // Keyboard LANG5 + KEY_EN_UNUSED, // Keyboard LANG6 + KEY_EN_UNUSED, // Keyboard LANG7 + KEY_EN_UNUSED, // Keyboard LANG8 + KEY_EN_UNUSED, // Keyboard LANG9 + KEY_EN_UNUSED, // Keyboard Alternate Erase + KEY_EN_UNUSED, // Keyboard SysReq/Attention + KEY_EN_UNUSED, // Keyboard Cancel + KEY_EN_UNUSED, // Keyboard Clear + KEY_EN_UNUSED, // Keyboard Prior + KEY_EN_UNUSED, // Keyboard Return + KEY_EN_UNUSED, // Keyboard Separator + KEY_EN_UNUSED, // Keyboard Out + KEY_EN_UNUSED, // Keyboard Oper + KEY_EN_UNUSED, // Keyboard Clear/Again + KEY_EN_UNUSED, // Keyboard CrSel/Props + KEY_EN_UNUSED, // Keyboard ExSel + KEY_EN_UNUSED, // AF Reserved + KEY_EN_UNUSED, // Keypad 00 + KEY_EN_UNUSED, // Keypad 000 + KEY_EN_UNUSED, // Thousands Separator + KEY_EN_UNUSED, // Decimal Separator + KEY_EN_UNUSED, // Currency Unit + KEY_EN_UNUSED, // Currency Sub-unit + KEY_EN_UNUSED, // Keypad ( + KEY_EN_UNUSED, // Keypad ) + KEY_EN_UNUSED, // Keypad { + KEY_EN_UNUSED, // Keypad } + KEY_EN_UNUSED, // Keypad Tab + KEY_EN_UNUSED, // Keypad Backspace + KEY_EN_UNUSED, // Keypad A + KEY_EN_UNUSED, // Keypad B + KEY_EN_UNUSED, // Keypad C + KEY_EN_UNUSED, // Keypad D + KEY_EN_UNUSED, // Keypad E + KEY_EN_UNUSED, // Keypad F + KEY_EN_UNUSED, // Keypad XOR + KEY_EN_UNUSED, // Keypad ∧ + KEY_EN_UNUSED, // Keypad % + KEY_EN_UNUSED, // Keypad < + KEY_EN_UNUSED, // Keypad > + KEY_EN_UNUSED, // Keypad & + KEY_EN_UNUSED, // Keypad && + KEY_EN_UNUSED, // Keypad | + KEY_EN_UNUSED, // Keypad || + KEY_EN_UNUSED, // Keypad : + KEY_EN_UNUSED, // Keypad # + KEY_EN_UNUSED, // Keypad Space + KEY_EN_UNUSED, // Keypad @ + KEY_EN_UNUSED, // Keypad ! + KEY_EN_UNUSED, // Keypad Memory Store + KEY_EN_UNUSED, // Keypad Memory Recall + KEY_EN_UNUSED, // Keypad Memory Clear + KEY_EN_UNUSED, // Keypad Memory Add + KEY_EN_UNUSED, // Keypad Memory Subtract + KEY_EN_UNUSED, // Keypad Memory Multiply + KEY_EN_UNUSED, // Keypad Memory Divide + KEY_EN_UNUSED, // Keypad +/- + KEY_EN_UNUSED, // Keypad Clear + KEY_EN_UNUSED, // Keypad Clear Entry + KEY_EN_UNUSED, // Keypad Binary + KEY_EN_UNUSED, // Keypad Octal + KEY_EN_UNUSED, // Keypad Decimal + KEY_EN_UNUSED, // Keypad Hexadecimal + KEY_EN_UNUSED, // DF Reserved + KEY_EN_LEFT_CONTROL, // Keyboard LeftControl + KEY_EN_LEFT_SHIFT, // Keyboard LeftShift + KEY_EN_LEFT_ALT, // Keyboard LeftAlt + KEY_EN_LEFT_WINDOWS, // Keyboard Left GUI + KEY_EN_RIGHT_CONTROL, // Keyboard RightControl + KEY_EN_RIGHT_SHIFT, // Keyboard RightShift + KEY_EN_RIGHT_ALT, // Keyboard RightAlt + KEY_EN_RIGHT_WINDOWS, // Keyboard Right GUI +}; + void RGBController_HIDLampArray::SetupZones() { zone new_zone; - new_zone.name = "LampArray"; + new_zone.name = ZONE_EN_KEYBOARD; new_zone.type = ZONE_TYPE_MATRIX; new_zone.leds_count = controller->GetLampCount(); new_zone.leds_min = new_zone.leds_count; @@ -79,10 +309,18 @@ void RGBController_HIDLampArray::SetupZones() zones.push_back(new_zone); - for(unsigned int led_idx = 0; led_idx < new_zone.leds_count; led_idx++) + for(std::size_t lamp_idx = 0; lamp_idx < controller->GetLamps().size(); lamp_idx++) { led new_led; - new_led.name = "Test LED"; + + if(controller->GetLamps()[lamp_idx].LampKey < HID_KEYBOARD_USAGE_IDS_COUNT) + { + new_led.name = HIDUsageIDsToKeyNames[controller->GetLamps()[lamp_idx].LampKey]; + } + else + { + new_led.name = KEY_EN_UNUSED; + } leds.push_back(new_led); }