X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=converter%2Fibmpc_usb%2Fibmpc_usb.c;h=52fffc3d245acb1714db9633a6466e1c5aa3a2e7;hb=846f55389afc7d5c6b5f15c21a142b6b4944f187;hp=c2b2d9ec00ef971e563c645405b5a62aeb373717;hpb=6332da2b9537dc93edcba88d05a631d488edac14;p=max%2Ftmk_keyboard.git diff --git a/converter/ibmpc_usb/ibmpc_usb.c b/converter/ibmpc_usb/ibmpc_usb.c index c2b2d9ec..52fffc3d 100644 --- a/converter/ibmpc_usb/ibmpc_usb.c +++ b/converter/ibmpc_usb/ibmpc_usb.c @@ -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: