From f8018b22d0bcba97e54652a01e8bdefb15f83c4c Mon Sep 17 00:00:00 2001
From: Peter Johanson <peter@peterjohanson.com>
Date: Mon, 8 Nov 2021 21:21:01 +0000
Subject: [PATCH] fix(hid): Basic consumer code fixes for signed logical max.

* Logical max values are signed, so for the report descriptor, use a two
  byte logical max descriptor item to impart proper 0xFF max logical
  value.
---
 app/include/zmk/hid.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h
index 95b82d46..e23caff9 100644
--- a/app/include/zmk/hid.h
+++ b/app/include/zmk/hid.h
@@ -143,12 +143,14 @@ static const uint8_t zmk_hid_report_desc[] = {
     /* LOGICAL_MINIMUM (0) */
     HID_GI_LOGICAL_MIN(1),
     0x00,
-    /* LOGICAL_MAXIMUM (0xFFFF) */
-    HID_GI_LOGICAL_MAX(1),
+    /* LOGICAL_MAXIMUM (0x00FF)  - little endian, and requires two bytes because logical max is
+       signed */
+    HID_GI_LOGICAL_MAX(2),
     0xFF,
+    0x00,
     HID_LI_USAGE_MIN(1),
     0x00,
-    /* USAGE_MAXIMUM (0xFFFF) */
+    /* USAGE_MAXIMUM (0xFF) */
     HID_LI_USAGE_MAX(1),
     0xFF,
     /* INPUT (Data,Ary,Abs) */