diff --git a/Controllers/RazerController/RGBController_Razer.cpp b/Controllers/RazerController/RGBController_Razer.cpp index 9fab2740..41d264ca 100644 --- a/Controllers/RazerController/RGBController_Razer.cpp +++ b/Controllers/RazerController/RGBController_Razer.cpp @@ -240,9 +240,10 @@ void RGBController_Razer::SetupZones() for(unsigned int i = 0; i < device_list[device_index]->keymap_size; i++) { - if(zone_id == device_list[device_index]->keymap[i].zone && - row_id == device_list[device_index]->keymap[i].row && - col_id == device_list[device_index]->keymap[i].col) + if(zone_id == device_list[device_index]->keymap[i].zone && + row_id == device_list[device_index]->keymap[i].row && + col_id == device_list[device_index]->keymap[i].col && + layout_type & device_list[device_index]->keymap[i].layout) { new_led->name = device_list[device_index]->keymap[i].name; not_found = false; diff --git a/Controllers/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController.cpp index f17728c2..88bebfc4 100644 --- a/Controllers/RazerController/RazerController.cpp +++ b/Controllers/RazerController/RazerController.cpp @@ -55,6 +55,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_BLACKWIDOW_2019_PID: case RAZER_BLACKWIDOW_V3_MINI_WIRED_PID: case RAZER_BLADE_2021_BASE_V2_PID: + case RAZER_BLADE_14_2022_PID: case RAZER_CYNOSA_V2_PID: case RAZER_ORNATA_CHROMA_V2_PID: case RAZER_ORNATA_V3_PID: @@ -133,6 +134,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_BASILISK_V3_PRO_BLUETOOTH_PID: case RAZER_BASE_STATION_CHROMA_PID: case RAZER_BASE_STATION_V2_CHROMA_PID: + case RAZER_BLADE_14_2022_PID: case RAZER_CHARGING_PAD_CHROMA_PID: case RAZER_CHROMA_HDK_PID: case RAZER_CORE_X_PID: @@ -213,6 +215,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_BLADE_2021_BASE_PID: case RAZER_BLADE_2021_BASE_V2_PID: case RAZER_BLADE_14_2021_PID: + case RAZER_BLADE_14_2022_PID: case RAZER_BLADE_PRO_2016_PID: case RAZER_BLADE_PRO_2017_PID: case RAZER_BLADE_PRO_2017_FULLHD_PID: @@ -583,6 +586,7 @@ bool RazerController::SupportsWave() case RAZER_BLADE_2021_BASE_PID: case RAZER_BLADE_2021_BASE_V2_PID: case RAZER_BLADE_14_2021_PID: + case RAZER_BLADE_14_2022_PID: case RAZER_BLADE_PRO_2016_PID: case RAZER_BLADE_PRO_2017_PID: case RAZER_BLADE_PRO_2017_FULLHD_PID: @@ -1221,7 +1225,6 @@ unsigned char RazerController::GetKeyboardLayoutType() return RAZER_LAYOUT_TYPE_ANSI; case RAZER_KEYBOARD_LAYOUT_GREEK: // Unconfirmed - case RAZER_KEYBOARD_LAYOUT_GERMAN: // Unconfirmed case RAZER_KEYBOARD_LAYOUT_FRENCH: case RAZER_KEYBOARD_LAYOUT_UK: case RAZER_KEYBOARD_LAYOUT_NORDIC: @@ -1238,6 +1241,9 @@ unsigned char RazerController::GetKeyboardLayoutType() case RAZER_KEYBOARD_LAYOUT_JAPAN: // Unconfirmed return RAZER_LAYOUT_TYPE_JIS; + case RAZER_KEYBOARD_LAYOUT_GERMAN: + return RAZER_LAYOUT_TYPE_QWERTZ; + default: return RAZER_LAYOUT_TYPE_ALL; } @@ -1253,7 +1259,7 @@ std::string RazerController::GetKeyboardLayoutName() switch(layout) { case RAZER_KEYBOARD_LAYOUT_US: return "US (ANSI)"; - case RAZER_KEYBOARD_LAYOUT_GERMAN: return "German (ISO)"; // Unconfirmed + case RAZER_KEYBOARD_LAYOUT_GERMAN: return "German (QWERTZ)"; case RAZER_KEYBOARD_LAYOUT_GREEK: return "Greek (ISO)"; // Unconfirmed case RAZER_KEYBOARD_LAYOUT_FRENCH: return "French (ISO)"; case RAZER_KEYBOARD_LAYOUT_RUSSIAN: return "Russian (ANSI)"; // Unconfirmed diff --git a/Controllers/RazerController/RazerController.h b/Controllers/RazerController/RazerController.h index 60eb5a89..a7c3f6f6 100644 --- a/Controllers/RazerController/RazerController.h +++ b/Controllers/RazerController/RazerController.h @@ -137,8 +137,10 @@ enum RAZER_LAYOUT_TYPE_ANSI = 0x01, RAZER_LAYOUT_TYPE_ISO = 0x02, RAZER_LAYOUT_TYPE_JIS = 0x04, + RAZER_LAYOUT_TYPE_QWERTZ = 0x08, - RAZER_LAYOUT_TYPE_ALL = RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS + RAZER_LAYOUT_TYPE_ALL = RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO + | RAZER_LAYOUT_TYPE_JIS | RAZER_LAYOUT_TYPE_QWERTZ }; /*---------------------------------------------------------*\ diff --git a/Controllers/RazerController/RazerControllerDetect.cpp b/Controllers/RazerController/RazerControllerDetect.cpp index ec869f0b..66d6703c 100644 --- a/Controllers/RazerController/RazerControllerDetect.cpp +++ b/Controllers/RazerController/RazerControllerDetect.cpp @@ -277,6 +277,7 @@ REGISTER_HID_DETECTOR_IPU("Razer Ornata V3 X", Det REGISTER_HID_DETECTOR_IPU("Razer Blade (2016)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2016_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blade (Late 2016)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_LATE_2016_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blade 14 (2021)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_14_2021_PID, 0x02, 0x01, 0x02); +REGISTER_HID_DETECTOR_IPU("Razer Blade 14 (2022)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_14_2022_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blade 15 (2018 Advanced)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2018_ADVANCED_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blade 15 (2018 Base)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2018_BASE_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blade 15 (2018 Mercury)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2018_MERCURY_PID, 0x02, 0x01, 0x02); diff --git a/Controllers/RazerController/RazerDevices.cpp b/Controllers/RazerController/RazerDevices.cpp index 80db0805..f7143263 100644 --- a/Controllers/RazerController/RazerDevices.cpp +++ b/Controllers/RazerController/RazerDevices.cpp @@ -579,6 +579,107 @@ static const razer_key blade_14_2021_keymap[] = { 0, 5, 15, KEY_EN_DOWN_ARROW, RAZER_LAYOUT_TYPE_ALL }, }; +#define BLADE_14_2022_KEYMAP_SIZE (sizeof(blade_14_2022_keymap) / sizeof(blade_14_2022_keymap[0])) + +static const razer_key blade_14_2022_keymap[] = +{ + /*-------------------------------------------------------------------------------------------------------------*\ + | Zone, Row, Column, Key Layout Type | + \*-------------------------------------------------------------------------------------------------------------*/ + { 0, 0, 1, KEY_EN_ESCAPE, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 2, KEY_EN_F1, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 3, KEY_EN_F2, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 4, KEY_EN_F3, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 5, KEY_EN_F4, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 6, KEY_EN_F5, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 7, KEY_EN_F6, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 8, KEY_EN_F7, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 9, KEY_EN_F8, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 10, KEY_EN_F9, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 11, KEY_EN_F10, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 12, KEY_EN_F11, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 13, KEY_EN_F12, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 14, KEY_EN_DELETE, RAZER_LAYOUT_TYPE_ALL }, + { 0, 0, 15, KEY_EN_POWER, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 1, KEY_EN_BACK_TICK, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 1, 1, KEY_JP_CHEVRON, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 1, 2, KEY_EN_1, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 3, KEY_EN_2, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 4, KEY_EN_3, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 5, KEY_EN_4, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 6, KEY_EN_5, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 7, KEY_EN_6, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 8, KEY_EN_7, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 9, KEY_EN_8, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 10, KEY_EN_9, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 11, KEY_EN_0, RAZER_LAYOUT_TYPE_ALL }, + { 0, 1, 12, KEY_EN_MINUS, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 1, 12, KEY_DE_ESZETT, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 1, 13, KEY_EN_EQUALS, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 1, 13, KEY_EN_BACK_TICK, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 1, 15, KEY_EN_BACKSPACE, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 1, KEY_EN_TAB, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 2, KEY_EN_Q, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 3, KEY_EN_W, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 4, KEY_EN_E, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 5, KEY_EN_R, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 6, KEY_EN_T, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 7, KEY_EN_Y, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 2, 7, KEY_EN_Z, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 2, 8, KEY_EN_U, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 9, KEY_EN_I, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 10, KEY_EN_O, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 11, KEY_EN_P, RAZER_LAYOUT_TYPE_ALL }, + { 0, 2, 12, KEY_EN_LEFT_BRACKET, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 2, 12, KEY_DE_DIAERESIS_U, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 2, 13, KEY_EN_RIGHT_BRACKET, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 2, 13, KEY_EN_PLUS, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 2, 15, KEY_EN_ANSI_BACK_SLASH, RAZER_LAYOUT_TYPE_ANSI }, + { 0, 3, 1, KEY_EN_CAPS_LOCK, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 2, KEY_EN_A, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 3, KEY_EN_S, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 4, KEY_EN_D, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 5, KEY_EN_F, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 6, KEY_EN_G, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 7, KEY_EN_H, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 8, KEY_EN_J, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 9, KEY_EN_K, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 10, KEY_EN_L, RAZER_LAYOUT_TYPE_ALL }, + { 0, 3, 11, KEY_EN_SEMICOLON, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 3, 11, KEY_DE_DIAERESIS_O, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 3, 12, KEY_EN_QUOTE, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 3, 12, KEY_DE_DIAERESIS_A, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 3, 13, KEY_EN_POUND, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 3, 15, KEY_EN_ANSI_ENTER, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 1, KEY_EN_LEFT_SHIFT, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 2, KEY_EN_ISO_BACK_SLASH, RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 4, 2, KEY_NORD_ANGLE_BRACKET, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 4, 3, KEY_EN_Z, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 4, 3, KEY_EN_Y, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 4, 4, KEY_EN_X, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 5, KEY_EN_C, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 6, KEY_EN_V, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 7, KEY_EN_B, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 8, KEY_EN_N, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 9, KEY_EN_M, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 10, KEY_EN_COMMA, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 11, KEY_EN_PERIOD, RAZER_LAYOUT_TYPE_ALL }, + { 0, 4, 12, KEY_EN_FORWARD_SLASH, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS }, + { 0, 4, 12, KEY_EN_MINUS, RAZER_LAYOUT_TYPE_QWERTZ }, + { 0, 4, 15, KEY_EN_RIGHT_SHIFT, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 1, KEY_EN_LEFT_CONTROL, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 2, KEY_EN_LEFT_FUNCTION, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 3, KEY_EN_LEFT_WINDOWS, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 5, KEY_EN_LEFT_ALT, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 7, KEY_EN_SPACE, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 9, KEY_EN_RIGHT_ALT, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 11, KEY_EN_RIGHT_CONTROL, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 12, KEY_EN_LEFT_ARROW, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 13, KEY_EN_UP_ARROW, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 14, KEY_EN_RIGHT_ARROW, RAZER_LAYOUT_TYPE_ALL }, + { 0, 5, 15, KEY_EN_DOWN_ARROW, RAZER_LAYOUT_TYPE_ALL }, +}; + #define BLADE_17_PRO_2021_KEYMAP_SIZE (sizeof(blade_17_pro_2021_keymap) / sizeof(blade_17_pro_2021_keymap[0])) static const razer_key blade_17_pro_2021_keymap[] = @@ -4088,6 +4189,41 @@ static const razer_device blade_14_2021_device = BLADE_14_2021_KEYMAP_SIZE }; +/*-------------------------------------------------------------*\ +| Razer Blade 14 (2022) 1532:028C | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 16 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone blade_14_2022_zone = +{ + ZONE_EN_KEYBOARD, + ZONE_TYPE_MATRIX, + 6, + 16 +}; + +static const razer_device blade_14_2022_device = +{ + "Razer Blade 14 (2022)", + RAZER_BLADE_14_2022_PID, + DEVICE_TYPE_KEYBOARD, + true, + 6, + 16, + { + &blade_14_2022_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + blade_14_2022_keymap, + BLADE_14_2022_KEYMAP_SIZE +}; + /*-------------------------------------------------------------*\ | Razer Book 13 (2020) | | | @@ -8464,6 +8600,7 @@ const razer_device* razer_device_list[] = &blade_15_2021_base_device, &blade_15_2021_base_v2_device, &blade_14_2021_device, + &blade_14_2022_device, &book_13_2020_device, &blade_pro_2016_device, &blade_pro_2017_device, diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h index 35e6626c..ba88cd69 100644 --- a/Controllers/RazerController/RazerDevices.h +++ b/Controllers/RazerController/RazerDevices.h @@ -63,6 +63,7 @@ #define RAZER_BLADE_2021_BASE_V2_PID 0x027A #define RAZER_BLADE_14_2021_PID 0x0270 +#define RAZER_BLADE_14_2022_PID 0x028C #define RAZER_BLADE_PRO_2016_PID 0x0210 #define RAZER_BLADE_PRO_2017_PID 0x0225 diff --git a/RGBController/RGBControllerKeyNames.cpp b/RGBController/RGBControllerKeyNames.cpp index 8e5d98f4..4c80076f 100644 --- a/RGBController/RGBControllerKeyNames.cpp +++ b/RGBController/RGBControllerKeyNames.cpp @@ -30,6 +30,7 @@ const char* KEY_EN_F12 = "Key: F12"; const char* KEY_EN_PRINT_SCREEN = "Key: Print Screen"; const char* KEY_EN_SCROLL_LOCK = "Key: Scroll Lock"; const char* KEY_EN_PAUSE_BREAK = "Key: Pause/Break"; +const char* KEY_EN_POWER = "Key: Power"; const char* KEY_EN_BACK_TICK = "Key: `"; const char* KEY_EN_1 = "Key: 1"; @@ -43,6 +44,7 @@ const char* KEY_EN_8 = "Key: 8"; const char* KEY_EN_9 = "Key: 9"; const char* KEY_EN_0 = "Key: 0"; const char* KEY_EN_MINUS = "Key: -"; +const char* KEY_EN_PLUS = "Key: +"; const char* KEY_EN_EQUALS = "Key: ="; const char* KEY_EN_BACKSPACE = "Key: Backspace"; const char* KEY_EN_INSERT = "Key: Insert"; @@ -162,3 +164,8 @@ const char* KEY_NORD_BACKSLASH = "Key: \\/`/´"; const char* KEY_NORD_CHEVRON = "Key: ^/~"; const char* KEY_NORD_QUOTE = "Key: '/*"; const char* KEY_NORD_ANGLE_BRACKET = "Key: "; + +const char* KEY_DE_ESZETT = "Key: ß"; +const char* KEY_DE_DIAERESIS_A = "Key: Ä"; +const char* KEY_DE_DIAERESIS_O = "Key: Ö"; +const char* KEY_DE_DIAERESIS_U = "Key: Ü"; diff --git a/RGBController/RGBControllerKeyNames.h b/RGBController/RGBControllerKeyNames.h index 9f9940b9..acf1c616 100644 --- a/RGBController/RGBControllerKeyNames.h +++ b/RGBController/RGBControllerKeyNames.h @@ -30,6 +30,7 @@ extern const char* KEY_EN_F12; extern const char* KEY_EN_PRINT_SCREEN; extern const char* KEY_EN_SCROLL_LOCK; extern const char* KEY_EN_PAUSE_BREAK; +extern const char* KEY_EN_POWER; extern const char* KEY_EN_BACK_TICK; extern const char* KEY_EN_1; @@ -43,6 +44,7 @@ extern const char* KEY_EN_8; extern const char* KEY_EN_9; extern const char* KEY_EN_0; extern const char* KEY_EN_MINUS; +extern const char* KEY_EN_PLUS; extern const char* KEY_EN_EQUALS; extern const char* KEY_EN_BACKSPACE; extern const char* KEY_EN_INSERT; @@ -162,3 +164,8 @@ extern const char* KEY_NORD_BACKSLASH; extern const char* KEY_NORD_CHEVRON; extern const char* KEY_NORD_QUOTE; extern const char* KEY_NORD_ANGLE_BRACKET; + +extern const char* KEY_DE_ESZETT; +extern const char* KEY_DE_DIAERESIS_A; +extern const char* KEY_DE_DIAERESIS_O; +extern const char* KEY_DE_DIAERESIS_U; diff --git a/qt/DeviceView.cpp b/qt/DeviceView.cpp index 406ccb94..45d70c6e 100644 --- a/qt/DeviceView.cpp +++ b/qt/DeviceView.cpp @@ -99,6 +99,7 @@ static const std::map led_label_lookup = { KEY_EN_F12, { "F12" , "F12", }}, { KEY_EN_BACK_TICK, { "`" , "`", }}, { KEY_EN_MINUS, { "-" , "-", }}, + { KEY_EN_PLUS, { "+" , "+", }}, { KEY_EN_EQUALS, { "=" , "=", }}, { KEY_EN_LEFT_BRACKET, { "[" , "[", }}, { KEY_EN_RIGHT_BRACKET, { "]" , "]", }}, @@ -165,6 +166,7 @@ static const std::map led_label_lookup = { KEY_EN_MEDIA_MUTE, { "Mte" , "\xF0\x9F\x94\x87", }}, // 🔇 { KEY_EN_MEDIA_VOLUME_DOWN, { "Vl-" , "\xF0\x9F\x94\x88", }}, // 🔉 { KEY_EN_MEDIA_VOLUME_UP, { "Vl+" , "\xF0\x9F\x94\x89", }}, // 🔊 + { KEY_EN_POWER, { "Pwr" , "\xE2\x8F\xBB", }}, // ⏻ { KEY_JP_RO, { "_" , "_", }}, { KEY_JP_EJ, { "E/J" , "E/J", }}, { KEY_JP_ZENKAKU, { "Zen" , "\xE5\x8D\x8A\xE8" @@ -199,6 +201,10 @@ static const std::map led_label_lookup = { KEY_NORD_CHEVRON, { "^/~" , "^/~", }}, { KEY_NORD_QUOTE, { "'/*" , "'/*", }}, { KEY_NORD_ANGLE_BRACKET, { "" , "" }}, + { KEY_DE_ESZETT, { "ß" , "\xc3\x9F", }}, + { KEY_DE_DIAERESIS_A, { "Ä" , "\xC3\x84", }}, + { KEY_DE_DIAERESIS_O, { "Ö" , "\xC3\x96", }}, + { KEY_DE_DIAERESIS_U, { "Ü" , "\xC3\x9C" }}, }; void DeviceView::setController(RGBController * controller_ptr)