From bab8f9678c78d241526c416722dc1d320ff17b29 Mon Sep 17 00:00:00 2001 From: kenji Date: Fri, 8 Aug 2025 07:53:36 -0400 Subject: [PATCH] Fix volume scroll wheel --- build/hyperx_kb_rgb.uf2 | Bin 164352 -> 170496 bytes hyperx_elite2.c | 75 ++++++++++++++++++++++++---------------- hyperx_elite2.h | 2 +- main_device.c | 15 ++++---- main_host.c | 1 + 5 files changed, 55 insertions(+), 38 deletions(-) diff --git a/build/hyperx_kb_rgb.uf2 b/build/hyperx_kb_rgb.uf2 index 22a23fb3a4c6113c3455fd2bbd3a79c4beb9dd81..eb60347921ce4707dce6b4edb263b672d3bc7506 100644 GIT binary patch delta 42630 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 S*f?x|aHWb}Dy)h5=>Gx*63ZL_ diff --git a/hyperx_elite2.c b/hyperx_elite2.c index fe7b316..790c6b1 100644 --- a/hyperx_elite2.c +++ b/hyperx_elite2.c @@ -11,8 +11,7 @@ static bool sending = false; static absolute_time_t lastTime; static bool backlight = false; -static const unsigned int SKIP_INDICES[] = { 23, 29, 41, 47, 70, 71, 76, 87, 88, 93, 99, 100, 102, 108, 113, 123 }; -// added play/pause (123) +static const unsigned int SKIP_INDICES[] = { 23, 29, 41, 47, 70, 71, 76, 87, 88, 93, 99, 100, 102, 108, 113 }; static unsigned char buf[BUF_SIZE]; static uint8_t buf_idx=0; @@ -100,8 +99,8 @@ void send_color(uint8_t dev_addr, uint8_t instance, uint8_t report_id, uint8_t r } else { // start by sending color init byte for the current key buf[buf_idx] = 0x81; - // turn rewind and fast forward keys to white - if(color_idx==105 || color_idx== 108) { + // turn rewind, play, and fast forward keys to white + if(color_idx==105 || color_idx==108 || color_idx==109) { buf[buf_idx + 1] = 0x20; buf[buf_idx + 2] = 0x20; buf[buf_idx + 3] = 0x20; @@ -185,32 +184,50 @@ void startADC() { // process media key presses and prepare HID Consumer Control byte void send_media(uint8_t const* report, uint16_t len) { (void) len; - switch(report[2]) { - case 0xB0: // set next button to vol up - mediabit = 4; - break; - case 0xB1: // set prev button to vol down - mediabit = 5; - break; - case 0xB3: // play/pause - mediabit = 2; - break; - case 0xB5: // mute - mediabit = 3; - if (report[3]) { - mute = !mute; - } - break; - default: - return; + if ( report[0]==0x05 ) { + switch(report[2]) { + case 0xB0: // next + mediabit = 0; + break; + case 0xB1: // prev + mediabit = 1; + break; + case 0xB3: // play/pause + mediabit = 2; + break; + case 0xB5: // mute + mediabit = 3; + if (report[3]) { + mute = !mute; + } + break; + default: + return; + } + if (report[3]) { + SET_KEYBIT(mediakeys, mediabit); + } else { + CLEAR_KEYBIT(mediakeys, mediabit); + } + // set flag to send media keys during the next sending round + sendmedia = true; + } else if ( report[0]==0x03 ) { + switch(report[1]) { + case 0xE9: // vol up + SET_KEYBIT(mediakeys, 4); + break; + case 0xEA: // vol down + SET_KEYBIT(mediakeys, 5); + break; + case 0x00: // none + CLEAR_KEYBIT(mediakeys, 4); + CLEAR_KEYBIT(mediakeys, 5); + break; + default: + return; + } + sendmedia = true; } - if (report[3]) { - SET_KEYBIT(mediakeys, mediabit); - } else { - CLEAR_KEYBIT(mediakeys, mediabit); - } - // set flag to send media keys during the next sending round - sendmedia = true; } // process new HID reports from the keyboard and set them up to forward to host diff --git a/hyperx_elite2.h b/hyperx_elite2.h index d125425..da8ba67 100644 --- a/hyperx_elite2.h +++ b/hyperx_elite2.h @@ -5,7 +5,7 @@ enum { HYPERX_KEYBOARD_VID = 0x0951, HYPERX_ELITE2_PID = 0x1711, - NUM_KEYS = 128, + NUM_KEYS = 129, BUF_SIZE = 64, NUM_PACKETS = 10, NKRO_BUF_SIZE = 15, diff --git a/main_device.c b/main_device.c index cb9981f..06a7170 100644 --- a/main_device.c +++ b/main_device.c @@ -82,13 +82,12 @@ void tud_hid_set_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_ // Return zero will cause the stack to STALL request uint16_t tud_hid_get_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen) { - // TODO not Implemented - (void) instance; - (void) report_id; - (void) report_type; - (void) buffer; - (void) reqlen; + // TODO not Implemented + (void) instance; + (void) report_id; + (void) report_type; + (void) buffer; + (void) reqlen; - - return 0; + return 0; } diff --git a/main_host.c b/main_host.c index 20c64f9..03ab954 100644 --- a/main_host.c +++ b/main_host.c @@ -24,6 +24,7 @@ void core1_main() { pio_usb_configuration_t pio_cfg = PIO_USB_DEFAULT_CONFIG; pio_cfg.alarm_pool = (void*) alarm_pool_create(2,1); tuh_configure(1, TUH_CFGID_RPI_PIO_USB_CONFIGURATION, &pio_cfg); + tuh_hid_set_default_protocol(HID_PROTOCOL_REPORT); tuh_init(1);