[SeaBIOS] [PATCH 07/10] kbd: Ignore fake shift keys
Kevin O'Connor
kevin at koconnor.net
Mon Sep 5 20:36:08 CEST 2016
AT keyboards can produce "fake" shift keys on some extended events.
It's not necessary to process these artificial events as the actual
extended keys are detected directly.
Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
---
src/kbd.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/kbd.c b/src/kbd.c
index a75adc3..ff962cf 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -430,10 +430,16 @@ __process_key(u8 scancode)
return;
case 0x2a: /* L Shift press */
case 0xaa: /* L Shift release */
+ if (flags1 & KF1_LAST_E0)
+ // Ignore fake shifts
+ return;
kbd_set_flag(key_release, KF0_LSHIFT, 0, 0);
return;
case 0x36: /* R Shift press */
case 0xb6: /* R Shift release */
+ if (flags1 & KF1_LAST_E0)
+ // Ignore fake shifts
+ return;
kbd_set_flag(key_release, KF0_RSHIFT, 0, 0);
return;
case 0x1d: /* Ctrl press */
--
2.5.5
More information about the SeaBIOS
mailing list