From 083a008b66a71ab27e0005e12729c89e88e0c70a Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 25 Apr 2022 18:05:13 +0900 Subject: [PATCH] adb: Fix for set LED ADB Manager documents p.5-28 > Register 2 contains sixteen bits; be sure to change only the three bits > that represent the three LED lights. https://developer.apple.com/library/archive/documentation/mac/pdf/Devices/ADB_Manager.pdf iMate reads register2 before setting LED state for this. https://github.com/tmk/tmk_keyboard/wiki/Apple-Desktop-Bus#set-led --- tmk_core/protocol/adb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tmk_core/protocol/adb.c b/tmk_core/protocol/adb.c index 0b66da7b..d8132b3b 100644 --- a/tmk_core/protocol/adb.c +++ b/tmk_core/protocol/adb.c @@ -285,7 +285,9 @@ void adb_host_kbd_led(uint8_t addr, uint8_t led) // Listen Register2 // upper byte: not used // lower byte: bit2=ScrollLock, bit1=CapsLock, bit0=NumLock - adb_host_listen(addr, 2, 0, led & 0x07); + uint16_t reg2 = adb_host_talk(addr, 2); + _delay_us(400); + adb_host_listen(addr, 2, reg2 >> 8, (reg2 & 0xF8) | (led & 0x07)); }