* 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)
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());
void led_set(uint8_t usb_led)
{
+ if (keyboard_kind == NONE) return;
//if (keyboard_kind != PC_AT) return;
uint8_t ibmpc_led = 0;
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
state = INIT;
break;
case 0x84: // Alt'd PrintScreen
- matrix_make(0x6F);
+ matrix_make(0x7F);
state = INIT;
break;
case 0xAA: // Self-test passed
state = INIT;
break;
case 0x84: // Alt'd PrintScreen
- matrix_break(0x6F);
+ matrix_break(0x7F);
state = INIT;
break;
default: