[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