]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - converter/ibmpc_usb/ibmpc_usb.c
ibmpc_usb: Fix led_set
[max/tmk_keyboard.git] / converter / ibmpc_usb / ibmpc_usb.c
index c2b2d9ec00ef971e563c645405b5a62aeb373717..52fffc3d245acb1714db9633a6466e1c5aa3a2e7 100644 (file)
@@ -105,6 +105,7 @@ void matrix_init(void)
  *      d. ID is BF BF: Terminal keyboard CodeSet3
  *      e. error on recv: maybe broken PS/2
  */
+uint8_t current_protocol = 0;
 uint16_t keyboard_id = 0x0000;
 keyboard_kind_t keyboard_kind = NONE;
 uint8_t matrix_scan(void)
@@ -141,6 +142,18 @@ uint8_t matrix_scan(void)
         ibmpc_error = IBMPC_ERR_NONE;
     }
 
+    // check ISR state debug
+    if (ibmpc_isr_debug) {
+        xprintf("\nISR:%04X\n", ibmpc_isr_debug);
+        ibmpc_isr_debug = 0;
+    }
+
+    // check protocol AT/XT
+    if (ibmpc_protocol != current_protocol) {
+        xprintf("\nPROTO:%02X\n", ibmpc_protocol);
+        current_protocol = ibmpc_protocol;
+    }
+
     switch (state) {
         case INIT:
             xprintf("I%u ", timer_read());
@@ -354,6 +367,7 @@ void matrix_clear(void)
 
 void led_set(uint8_t usb_led)
 {
+    if (keyboard_kind == NONE) return;
     //if (keyboard_kind != PC_AT) return;
 
     uint8_t ibmpc_led = 0;
@@ -632,12 +646,12 @@ static uint8_t cs2_e0code(uint8_t code) {
         case 0x75: return 0x4F; // cursor up
         case 0x7A: return 0x56; // page down
         case 0x7D: return 0x5E; // page up
-        case 0x7C: return 0x6F; // Print Screen
+        case 0x7C: return 0x7F; // Print Screen
         case 0x7E: return 0x00; // Control'd Pause
 
         case 0x21: return 0x65; // volume down
         case 0x32: return 0x6E; // volume up
-        case 0x23: return 0x7F; // mute
+        case 0x23: return 0x6F; // mute
         case 0x10: return 0x08; // (WWW search)     -> F13
         case 0x18: return 0x10; // (WWW favourites) -> F14
         case 0x20: return 0x18; // (WWW refresh)    -> F15
@@ -718,7 +732,7 @@ static int8_t process_cs2(void)
                     state = INIT;
                     break;
                 case 0x84:  // Alt'd PrintScreen
-                    matrix_make(0x6F);
+                    matrix_make(0x7F);
                     state = INIT;
                     break;
                 case 0xAA:  // Self-test passed
@@ -765,7 +779,7 @@ static int8_t process_cs2(void)
                     state = INIT;
                     break;
                 case 0x84:  // Alt'd PrintScreen
-                    matrix_break(0x6F);
+                    matrix_break(0x7F);
                     state = INIT;
                     break;
                 default: