From e13e854944c6046f39d03cf8c38a4e27254fbcc3 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 12 Oct 2023 05:08:11 +0200 Subject: [PATCH] Added support for a second prefix. --- src/device/keyboard.c | 21 +++++++++++++++------ src/include/86box/86box.h | 6 ++++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/device/keyboard.c b/src/device/keyboard.c index ade4b17e4..5f9986d7b 100644 --- a/src/device/keyboard.c +++ b/src/device/keyboard.c @@ -32,14 +32,18 @@ int keyboard_scan; #ifdef _WIN32 /* Windows: F8+F12 */ -uint16_t key_prefix_1 = 0x042; /* F8 */ -uint16_t key_prefix_2 = 0x000; /* Invalid */ +uint16_t key_prefix_1_1 = 0x042; /* F8 */ +uint16_t key_prefix_1_2 = 0x000; /* Invalid */ +uint16_t key_prefix_2_1 = 0x000; /* Invalid */ +uint16_t key_prefix_2_2 = 0x000; /* Invalid */ uint16_t key_uncapture_1 = 0x058; /* F12 */ uint16_t key_uncapture_2 = 0x000; /* Invalid */ #else /* WxWidgets cannot do two regular keys.. CTRL+END */ -uint16_t key_prefix_1 = 0x01d; /* Left Ctrl */ -uint16_t key_prefix_2 = 0x11d; /* Right Ctrl */ +uint16_t key_prefix_1_1 = 0x01d; /* Left Ctrl */ +uint16_t key_prefix_1_2 = 0x11d; /* Right Ctrl */ +uint16_t key_prefix_2_1 = 0x000; /* Invalid */ +uint16_t key_prefix_2_2 = 0x000; /* Invalid */ uint16_t key_uncapture_1 = 0x04f; /* Numpad End */ uint16_t key_uncapture_2 = 0x14f; /* End */ #endif @@ -369,6 +373,11 @@ keyboard_isfsexit_up(void) int keyboard_ismsexit(void) { - return ((recv_key[key_prefix_1] || recv_key[key_prefix_2]) && - (recv_key[key_uncapture_1] || recv_key[key_uncapture_2])); + if ((key_prefix_2_1 != 0x000) || (key_prefix_2_2 != 0x000)) + return ((recv_key[key_prefix_1_1] || recv_key[key_prefix_1_2]) && + (recv_key[key_prefix_2_1] || recv_key[key_prefix_2_2]) && + (recv_key[key_uncapture_1] || recv_key[key_uncapture_2])); + else + return ((recv_key[key_prefix_1_1] || recv_key[key_prefix_1_2]) && + (recv_key[key_uncapture_1] || recv_key[key_uncapture_2])); } diff --git a/src/include/86box/86box.h b/src/include/86box/86box.h index 9c83843b5..e0ff0e1d9 100644 --- a/src/include/86box/86box.h +++ b/src/include/86box/86box.h @@ -155,8 +155,10 @@ extern int pit_mode; /* (C) force setting PIT mode */ extern int fm_driver; /* (C) select FM sound driver */ /* Keyboard variables for future key combination redefinition. */ -extern uint16_t key_prefix_1; -extern uint16_t key_prefix_2; +extern uint16_t key_prefix_1_1; +extern uint16_t key_prefix_1_2; +extern uint16_t key_prefix_2_1; +extern uint16_t key_prefix_2_2; extern uint16_t key_uncapture_1; extern uint16_t key_uncapture_2;