adds some debug flags for GDB support
This commit is contained in:
@ -41,6 +41,7 @@ void init_kb(void)
|
||||
puts("Initializing keyboard driver!");
|
||||
#endif
|
||||
keyb_state.ready = false;
|
||||
keyb_state.waiting_for_commands = true;
|
||||
init_queue(&kb_cmd_queue);
|
||||
|
||||
keyb_state.leds = 0;
|
||||
@ -49,11 +50,19 @@ void init_kb(void)
|
||||
queue_kb_command(KEYB_CMD_ENABLE_SCANNING);
|
||||
|
||||
queue_kb_command(KEYB_CMD_SET_TYPEMATIC);
|
||||
queue_kb_command(0x1F);
|
||||
queue_kb_command(0x1F);
|
||||
|
||||
queue_kb_command(KEYB_CMD_DO_SCAN_CODE);
|
||||
/**
|
||||
* TODO: look into this further,
|
||||
* this is setting scan code 2, but the scan code this results in (on my hardware) is scan code set 1 according to https://wiki.osdev.org/PS/2_Keyboard
|
||||
*/
|
||||
queue_kb_command(0x2); // lets use scan code set 1
|
||||
|
||||
send_kb_commands();
|
||||
|
||||
keyb_state.ready = true;
|
||||
keyb_state.waiting_for_commands = false;
|
||||
|
||||
|
||||
#ifdef __TESTING__
|
||||
@ -92,13 +101,30 @@ void send_kb_commands(void)
|
||||
|
||||
|
||||
kb_key_code_t decode_scancode(uint8_t scancode)
|
||||
{return (kb_key_code_t) scancode;}
|
||||
{
|
||||
switch (scancode) {
|
||||
case KEYB_RESP_ERR:
|
||||
case KEYB_RESP_SELF_TEST_PASSED:
|
||||
case KEYB_RESP_ECHO:
|
||||
case KEYB_RESP_ACK:
|
||||
case KEYB_RESP_SELF_TEST_FAILED:
|
||||
case KEYB_RESP_SELF_TEST_FAILED_TWO:
|
||||
case KEYB_RESP_RESEND:
|
||||
case KEYB_RESP_ERR_TWO:
|
||||
keyb_state.waiting_for_commands = false;
|
||||
return KEY_NONE;
|
||||
default:
|
||||
keyb_state.waiting_for_commands = false;
|
||||
return (kb_key_code_t) scancode;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
key_press_t do_keypress(kb_key_code_t keycode)
|
||||
{
|
||||
key_press_t packet;
|
||||
|
||||
if (!keyb_state.ready) {
|
||||
if (!keyb_state.ready || keycode == KEY_NONE) {
|
||||
packet.key_code = KEY_NONE;
|
||||
return packet;
|
||||
}
|
||||
|
Reference in New Issue
Block a user