-
- //kprintf(KINFO "%x\n", scancode & 0xff);
-
- switch (kbd_state.state)
- {
- case KBD_STATE_KWAIT:
- if (scancode == 0xf0) { // release code
- kbd_state.state = KBD_STATE_KRELEASED;
- } else if (scancode == 0xe0) {
- kbd_state.state = KBD_STATE_KSPECIAL;
- kbd_state.translation_table = scancode_set2_ex;
- } else {
+#endif
+
+#ifdef KBD_DBGLOG
+ kprintf(KDEBUG "%x\n", scancode & 0xff);
+#endif
+
+ switch (kbd_state.state) {
+ case KBD_STATE_KWAIT:
+ if (scancode == 0xf0) { // release code
+ kbd_state.state = KBD_STATE_KRELEASED;
+ } else if (scancode == 0xe0) {
+ kbd_state.state = KBD_STATE_KSPECIAL;
+ kbd_state.translation_table = scancode_set2_ex;
+ } else {
+ key = kbd_state.translation_table[scancode];
+ kbd_buffer_key_event(key, scancode, KBD_KEY_FPRESSED);
+ }
+ break;
+ case KBD_STATE_KSPECIAL:
+ if (scancode == 0xf0) { // release code
+ kbd_state.state = KBD_STATE_KRELEASED;
+ } else {
+ key = kbd_state.translation_table[scancode];
+ kbd_buffer_key_event(key, scancode, KBD_KEY_FPRESSED);
+
+ kbd_state.state = KBD_STATE_KWAIT;
+ kbd_state.translation_table = scancode_set2;
+ }
+ break;
+ case KBD_STATE_KRELEASED: