fix(hid): More limited consumer page range.

* For better compatibility with various HID hosts, restrict our
  consumer page range to 0x00 to 0xFE.
This commit is contained in:
Peter Johanson 2021-08-23 23:21:05 -04:00
parent 9e189d5be7
commit 8965ce0535
2 changed files with 13 additions and 9 deletions

View file

@ -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 {

View file

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