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; };