From 3d5c64feb7eab07c4e10f8eefbf63b8e319cf5f3 Mon Sep 17 00:00:00 2001 From: ASleepyCat Date: Fri, 18 Apr 2025 16:23:00 +0800 Subject: [PATCH] Fix button HID string ranges not being retrieved correctly (#299) ## Description of change Currently, retrieving HID strings using string index minimum/maximum ranges for buttons is broken as it uses the same index for each usage cap. Now it properly ranges over the minimum/maximum ranges. Before: ![image](https://github.com/user-attachments/assets/da8d0162-07d9-4027-9933-2348fbf43a27) After: ![image](https://github.com/user-attachments/assets/c00f81fe-d9d4-43f8-9bdd-d570ef298479) ## Compiling Check CI. ## Testing Tested with Beef Board firmware using string index ranges in the USB HID descriptor. --- src/spice2x/rawinput/rawinput.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spice2x/rawinput/rawinput.cpp b/src/spice2x/rawinput/rawinput.cpp index f9087bf..d400079 100644 --- a/src/spice2x/rawinput/rawinput.cpp +++ b/src/spice2x/rawinput/rawinput.cpp @@ -494,7 +494,7 @@ void rawinput::RawInputManager::devices_scan_rawinput(RAWINPUTDEVICELIST *device // get string index ULONG string_index = 0; if (button_caps.IsStringRange && button_caps.Range.StringMin != 0) { - string_index = button_caps.Range.StringMin + static_cast(button_output_caps_list.size()) - 1; + string_index = button_caps.Range.StringMin + static_cast(button_output_caps_names.size()); } else if (!button_caps.IsStringRange && button_caps.NotRange.StringIndex != 0) { string_index = button_caps.NotRange.StringIndex;