]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
ibm4704_usb: Fix scan code range for Alps 102-key
authortmk <hasu@tmk-kbd.com>
Fri, 19 Feb 2016 22:14:43 +0000 (07:14 +0900)
committertmk <hasu@tmk-kbd.com>
Fri, 19 Feb 2016 22:14:43 +0000 (07:14 +0900)
converter/ibm4704_usb/ibm4704.txt
converter/ibm4704_usb/matrix.c

index e2d42f08fda64e5da8e9b6721b2d436ac7785b9b..73c8a3b9ff2bf3a1fc014237e91ff97675ab1555 100644 (file)
@@ -152,12 +152,16 @@ Keyobard sends these bytes to host.
     FD  Command out of bound                    00d8h
         Key out of bound
     7E  Read/Parity error in receive from host  00bch
+    80-FB? scan code(make)
+    00-7B? scan code(break)
+    note: Alps model spits scan code 7B(FB) at least.
 
 
 Set Key Flag command(FC)
 ------------------------
 After 'Power on Reset' firmware enters this command mode and waits for data from host,
 so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF'.
+With Alps models you need to send 'FC' command to enter this mode.
 
 Data sent from host:
 
@@ -166,8 +170,8 @@ Data sent from host:
          |   `-----`--- scan code
          `------------- enable bit(0: enable repeat, 1: enable break)
 
-    00-7  Enable repeat
-    80-F9   Enable break(FA-FF are used as other commands, see above.)
+    00-7B?  Enable repeat
+    80-FB?  Enable break
     FE      Resend(011ah) no need to use
     FF      End(0114h) exits FC command mode.
 
@@ -178,5 +182,5 @@ Response from keyboard:
 Examples:
     To enable break code of all keys.
 
-    FC 80 81 ... F7 FF
+    FC 80 81 ... FB FF
 
index 5b91d49f81debc56baae4162f6eccb1c091234f6..f25452d596c0c47e32d6e705b1a4920aae8efe2c 100644 (file)
@@ -106,8 +106,8 @@ uint8_t matrix_scan(void)
     if (code==0xFF) {
         // Not receivd
         return 0;
-    } else if ((code&0x7F) >= 0x7A) {
-        // 0xFF-FA and 0x7F-7A is not scancode
+    } else if ((code&0x7F) >= 0x7C) {
+        // 0xFF-FC and 0x7F-7C is not scancode
         xprintf("Error: %02X\n", code);
         matrix_clear();
         return 0;