From 49f2f342499d4178bc59e2e9b49aab7838133189 Mon Sep 17 00:00:00 2001 From: SarahW Date: Wed, 1 May 2019 21:38:28 +0100 Subject: [PATCH] Fixed CTRL-ALT-DEL menu option broken by recent keyboard changes. --- src/keyboard.c | 19 +++++++++++++++++++ src/keyboard.h | 1 + src/pc.c | 12 ++++++------ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index 820d5ff..26d7280 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -463,3 +463,22 @@ void keyboard_process() } } } + +void keyboard_send_scancode(int code, int is_break) +{ + scancode *scancodes = (AT) ? at_scancodes : scancode_xt; + int d = 0; + + if (!keyboard_scan) return; + + if (!is_break) + { + while (scancodes[code].scancodes_make[d] != 0) + keyboard_send(scancodes[code].scancodes_make[d++]); + } + else + { + while (scancodes[code].scancodes_break[d] != 0) + keyboard_send(scancodes[code].scancodes_break[d++]); + } +} diff --git a/src/keyboard.h b/src/keyboard.h index b48a02d..c4a63e0 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -13,3 +13,4 @@ enum }; void keyboard_set_scancode_set(int set); +void keyboard_send_scancode(int code, int is_break); diff --git a/src/pc.c b/src/pc.c index 1951134..2cbf071 100644 --- a/src/pc.c +++ b/src/pc.c @@ -388,12 +388,12 @@ void resetpc() void resetpc_cad() { - keyboard_send(29); /* Ctrl key pressed */ - keyboard_send(56); /* Alt key pressed */ - keyboard_send(83); /* Delete key pressed */ - keyboard_send(157); /* Ctrl key released */ - keyboard_send(184); /* Alt key released */ - keyboard_send(211); /* Delete key released */ + keyboard_send_scancode(29, 0); /* Ctrl key pressed */ + keyboard_send_scancode(56, 0); /* Alt key pressed */ + keyboard_send_scancode(83, 0); /* Delete key pressed */ + keyboard_send_scancode(29, 1); /* Ctrl key released */ + keyboard_send_scancode(56, 1); /* Alt key released */ + keyboard_send_scancode(83, 1); /* Delete key released */ } void resetpchard()