From 8d6181de50133e8b7a0e48e391974cf225326abf Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 22 Apr 2023 08:38:15 +0200 Subject: [PATCH] A small change in device/keyboard_at.c so the keyboard no longer loses track of what command a parameter is intended for when interrupted by another command. --- src/device/keyboard_at.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/device/keyboard_at.c b/src/device/keyboard_at.c index 886016023..19a754d7b 100644 --- a/src/device/keyboard_at.c +++ b/src/device/keyboard_at.c @@ -788,10 +788,9 @@ keyboard_at_write(void *priv) dev->state = DEV_STATE_MAIN_WANT_IN; } - dev->command = val; - - switch (dev->command) { + switch (val) { case 0xed: /* set/reset LEDs */ + dev->command = val; keyboard_at_log("%s: set/reset LEDs\n", dev->name); dev->flags |= FLAG_CTRLDAT; kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */ @@ -811,6 +810,7 @@ keyboard_at_write(void *priv) case 0xf0: /* get/set scan code set */ if (dev->type & FLAG_PS2) { + dev->command = val; keyboard_at_log("%s: scan code set\n", dev->name); dev->flags |= FLAG_CTRLDAT; kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */ @@ -833,6 +833,7 @@ keyboard_at_write(void *priv) break; case 0xf3: /* set command mode */ + dev->command = val; keyboard_at_log("%s: set typematic rate/delay\n", dev->name); dev->flags |= FLAG_CTRLDAT; kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */