From 8965ce0535c1d0e7725318817c053681576ab1fe Mon Sep 17 00:00:00 2001 From: Peter Johanson Date: Mon, 23 Aug 2021 23:21:05 -0400 Subject: [PATCH] fix(hid): More limited consumer page range. * For better compatibility with various HID hosts, restrict our consumer page range to 0x00 to 0xFE. --- app/include/zmk/hid.h | 16 +++++++--------- app/src/hid.c | 6 ++++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index 5aa004c2..8d8662d1 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -116,20 +116,18 @@ static const uint8_t zmk_hid_report_desc[] = { /* LOGICAL_MINIMUM (0) */ HID_GI_LOGICAL_MIN(1), 0x00, - /* LOGICAL_MAXIMUM (0xFFFF) */ - HID_GI_LOGICAL_MAX(2), - 0xFF, + /* LOGICAL_MAXIMUM (0xFF) */ + HID_GI_LOGICAL_MAX(1), 0xFF, HID_LI_USAGE_MIN(1), 0x00, - /* USAGE_MAXIMUM (0xFFFF) */ - HID_LI_USAGE_MAX(2), - 0xFF, + /* USAGE_MAXIMUM (0xFF) */ + HID_LI_USAGE_MAX(1), 0xFF, /* INPUT (Data,Ary,Abs) */ - /* REPORT_SIZE (16) */ + /* REPORT_SIZE (8) */ HID_GI_REPORT_SIZE, - 0x10, + 0x08, /* REPORT_COUNT (ZMK_HID_CONSUMER_NKRO_SIZE) */ HID_GI_REPORT_COUNT, ZMK_HID_CONSUMER_NKRO_SIZE, @@ -158,7 +156,7 @@ struct zmk_hid_keyboard_report { } __packed; struct zmk_hid_consumer_report_body { - uint16_t keys[ZMK_HID_CONSUMER_NKRO_SIZE]; + uint8_t keys[ZMK_HID_CONSUMER_NKRO_SIZE]; } __packed; struct zmk_hid_consumer_report { diff --git a/app/src/hid.c b/app/src/hid.c index 7ab080e5..e64ec606 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -120,11 +120,17 @@ int zmk_hid_keyboard_release(zmk_key_t code) { void zmk_hid_keyboard_clear() { memset(&keyboard_report.body, 0, sizeof(keyboard_report.body)); } int zmk_hid_consumer_press(zmk_key_t code) { + if (code >= 0xFF) { + return -EINVAL; + } TOGGLE_CONSUMER(0U, code); return 0; }; int zmk_hid_consumer_release(zmk_key_t code) { + if (code >= 0xFF) { + return -EINVAL; + } TOGGLE_CONSUMER(code, 0U); return 0; };