Add scancode command

This commit is contained in:
Jeremy Soller 2019-11-07 14:26:04 -07:00
parent 387811a882
commit 89fb9dca12
No known key found for this signature in database
GPG Key ID: E988B49EE78A7FB1

View File

@ -11,6 +11,7 @@ enum KbcState {
KBC_STATE_NORMAL,
KBC_STATE_WRITE_CONFIG,
KBC_STATE_SET_LEDS,
KBC_STATE_SCANCODE,
};
void kbc_event(struct Kbc * kbc) {
@ -62,6 +63,17 @@ void kbc_event(struct Kbc * kbc) {
case 0xED:
printf(" set leds\n");
state = KBC_STATE_SET_LEDS;
kbc_keyboard(kbc, 0xFA);
break;
case 0xEE:
printf(" echo\n");
// Hey, this is easy. I like easy commands
kbc_keyboard(kbc, 0xEE);
break;
case 0xF0:
printf(" get/set scancode\n");
state = KBC_STATE_SCANCODE;
kbc_keyboard(kbc, 0xFA);
break;
case 0xF4:
printf(" enable scanning\n");
@ -74,6 +86,7 @@ void kbc_event(struct Kbc * kbc) {
case 0xFF:
printf(" self test\n");
kbc_keyboard(kbc, 0xFA);
while (kbc_status(kbc) & KBC_STS_OBF) {}
// Yep, everything is still good, I promise
kbc_keyboard(kbc, 0xAA);
break;
@ -88,6 +101,16 @@ void kbc_event(struct Kbc * kbc) {
state = KBC_STATE_NORMAL;
kbc_keyboard(kbc, 0xFA);
break;
case KBC_STATE_SCANCODE:
printf(" get/set scancode\n");
state = KBC_STATE_NORMAL;
switch (data) {
case 0x02:
printf(" set scancode set 2\n");
break;
}
kbc_keyboard(kbc, 0xFA);
break;
}
}
}