diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2008-11-29 13:22:29 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2008-11-29 13:22:29 -0500 |
commit | 3f168b6c7c4e1ab189eeeead60e40b16fac880b9 (patch) | |
tree | ec1f149a4595808f989282577d600629cb594f04 /src/kbd.c | |
parent | dd3588f8f502b85db4a4a0574d9a7064866cabf5 (diff) | |
download | qemu-seabios-3f168b6c7c4e1ab189eeeead60e40b16fac880b9.tar.gz |
Detect keyboard ctrl-alt-delete and try to reset machine.
Diffstat (limited to 'src/kbd.c')
-rw-r--r-- | src/kbd.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -338,6 +338,9 @@ handle_16(struct bregs *regs) } } +// 16bit reset vector declared in romlayout.S +void reset_vector() __attribute__ ((noreturn)); + #define none 0 #define MAX_SCAN_CODE 0x58 @@ -566,9 +569,12 @@ process_key(u8 scancode) return; default: - if (scancode & 0x80) { - break; /* toss key releases ... */ - } + if (scancode & 0x80) + // toss key releases + break; + if (scancode == 0x53 && (shift_flags & 0x0c) == 0x0c) + // Ctrl+alt+del - reset machine. + reset_vector(); if (scancode > MAX_SCAN_CODE) { dprintf(1, "KBD: int09h_handler(): unknown scancode read: 0x%02x!\n" , scancode); |