]> xenbits.xensource.com Git - people/andrewcoop/seabios.git/commitdiff
kbd: Ignore fake shift keys
authorKevin O'Connor <kevin@koconnor.net>
Mon, 5 Sep 2016 15:56:03 +0000 (11:56 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Mon, 12 Sep 2016 14:22:10 +0000 (10:22 -0400)
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@koconnor.net>
src/kbd.c

index b00853ffe209450000c13dff1b5f744e725bf9f3..b93d9d211c728fb0f731ee12c39a8b2766882f21 100644 (file)
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -428,10 +428,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 */