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 <[email protected]> --- 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 _______________________________________________ SeaBIOS mailing list [email protected] https://www.coreboot.org/mailman/listinfo/seabios
