From 2157644ab1ebf407e07d811f4084f9895ab274a4 Mon Sep 17 00:00:00 2001 From: Alexander V <2143332-krolaka@users.noreply.gitlab.com> Date: Fri, 7 Mar 2025 08:33:24 +0200 Subject: [PATCH] Add simple fix for support hator skyfall/rockfall keyboards to winbond controller --- .../RGBController_WinbondGamingKeyboard.cpp | 19 +++++++++++++++---- .../WinbondGamingKeyboardController.cpp | 9 +++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp b/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp index fddeffd2..1e136aac 100644 --- a/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp +++ b/Controllers/WinbondGamingKeyboardController/RGBController_WinbondGamingKeyboard.cpp @@ -230,7 +230,7 @@ static layout_values winbond_gaming_keyboard_60_layouts = } }; -static void InitLayouts(layout_values& keyboard_layouts, KEYBOARD_SIZE kb_size) +static void InitLayouts(layout_values& keyboard_layouts, KEYBOARD_SIZE kb_size, std::string vendor) { /*-------------------------------------------------------------------*\ | using kvs ("keyvals" or sth like that) as an alias for | @@ -341,13 +341,22 @@ static void InitLayouts(layout_values& keyboard_layouts, KEYBOARD_SIZE kb_size) | 8-1 = (Num7, Num8, Num9, Num+ ?), 12 = CapsLock, ??, 14 = A, S, D, F | \*-----------------------------------------------------------------------*/ - // P, Ü/[, +/], US-Backslash + // P, Ü/[, +/] if(kb_size & KEYBOARD_ZONE_MAIN) { - for(int i=0; i <= 3; ++i) + for(int i=0; i <= 2; ++i) { kvs.push_back( KV(3,i) ); } + // Backslash + if(vendor != "Hator") + { + kvs.push_back( KV(3,3) ); + } + else + { + kvs.push_back( KV(3,4) ); + } } // Del, End, PgDown @@ -732,6 +741,8 @@ void RGBController_WinbondGamingKeyboard::SetupZones() layout_values* layouts = &winbond_gaming_keyboard_full_layouts; KEYBOARD_SIZE kb_size = controller->GetSize(); + std::string vendor = controller->GetVendor(); + if(kb_size == KEYBOARD_SIZE_TKL) { layouts = &winbond_gaming_keyboard_tkl_layouts; @@ -747,7 +758,7 @@ void RGBController_WinbondGamingKeyboard::SetupZones() if(layouts->default_values.empty()) { - InitLayouts(*layouts, kb_size); + InitLayouts(*layouts, kb_size, vendor); } KeyboardLayoutManager new_kb(controller->GetLayout(), kb_size, *layouts); diff --git a/Controllers/WinbondGamingKeyboardController/WinbondGamingKeyboardController.cpp b/Controllers/WinbondGamingKeyboardController/WinbondGamingKeyboardController.cpp index 4e52682a..114997af 100644 --- a/Controllers/WinbondGamingKeyboardController/WinbondGamingKeyboardController.cpp +++ b/Controllers/WinbondGamingKeyboardController/WinbondGamingKeyboardController.cpp @@ -74,6 +74,15 @@ void WinbondGamingKeyboardController::SetNameVendorDescription(const hid_device_ } } + else if((name.find("Rockfall") != std::string::npos) || (name.find("Skyfall") != std::string::npos)) + { + vendor = "Hator"; + layout = KEYBOARD_LAYOUT_ANSI_QWERTY; + if(name.find("TKL") != std::string::npos) + { + kb_size = KEYBOARD_SIZE_TKL; + } + } else { vendor = "Winbond";