]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - protocol/adb.c
Fix keymap to adjust new keyboard.c.
[max/tmk_keyboard.git] / protocol / adb.c
index 116f612721abcad03c8da8866122ee9ffe34d2a6..d7105b3a9ae5b44564088f2923ea290da7c67113 100644 (file)
@@ -38,6 +38,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #include <stdbool.h>
 #include <util/delay.h>
 #include <avr/io.h>
+#include <avr/interrupt.h>
 #include "adb.h"
 
 
@@ -85,8 +86,13 @@ uint16_t adb_host_kbd_recv(void)
         return 0;               // No data to send
     if (!read_bit())            // Startbit(1)
         return -2;
+
+    // ad hoc fix: without block inerrupt read wrong bit occasionally and get keys stuck
+    cli();
     data = read_byte();
     data = (data<<8) | read_byte();
+    sei();
+
     if (read_bit())             // Stopbit(0)
         return -3;
     return data;
@@ -381,7 +387,6 @@ Keyboard Data(Register0)
     You can read the state from PSW line(active low) however
     the switch has a special scancode 0x7F7F, so you can
     also read from Data line. It uses 0xFFFF for release scancode.
-    Release code seems to delay about some 100ms. Due to Mac soft power?
 
 Keyboard LEDs & state of keys(Register2)
     This register hold current state of three LEDs and nine keys.