There were several keys not mapped in the keyboard scancode to "keycode" mapping functions. This series adds in a number of additional keyboard mappings. I used the Phoenix "System BIOS for IBM PC/XT/AT Computers and Compatibles" book as a reference for the mappings.
Albert - can you test if this series fixes your issue with the SysReq key?
I've also uploaded the series to: https://github.com/KevinOConnor/seabios/tree/testing
FYI, I've found on my Linux/X-Windows setup that QEMU doesn't always pass the correct keycodes for SysReq and Break to the guest. But, I've tested on real hardware to confirm that the keyboard mappings are correct.
-Kevin
Kevin O'Connor (10): kbd: Implement 101-key keyboard keycode mapping kbd: Implement extended keycode mappings for keypad-enter and keypad-/ kbd: Suppress keys without mappings kbd: Merge bda->kbd_flag0 and bda->kbd_flag1 kbd: Extract out shift flag setting into new function kbd: Move checking for special keys in __process_keys() into switch kbd: Ignore fake shift keys usb-hid: Generate Ctrl+Break and Alt+SysReq keys kbd: Generate interrupt events for SysReq, PrtScr, and Break post: Map int 0x05 to entry point
src/hw/usb-hid.c | 50 +++++--- src/kbd.c | 383 ++++++++++++++++++++++++++++++------------------------- src/post.c | 1 + src/romlayout.S | 2 + src/std/bda.h | 26 +++- 5 files changed, 268 insertions(+), 194 deletions(-)