From 90d9a5b858ff299779143de55ce4eed9536fedc1 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 12 Oct 2023 04:52:53 +0200 Subject: [PATCH] Moved the mouse uncapture key combination to variables for future reconfigurability. --- src/device/keyboard.c | 26 ++++++++++++++++++-------- src/include/86box/86box.h | 16 +++++++++++----- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/device/keyboard.c b/src/device/keyboard.c index 15eb06035..ade4b17e4 100644 --- a/src/device/keyboard.c +++ b/src/device/keyboard.c @@ -29,6 +29,21 @@ #include "cpu.h" 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_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_uncapture_1 = 0x04f; /* Numpad End */ +uint16_t key_uncapture_2 = 0x14f; /* End */ +#endif + void (*keyboard_send)(uint16_t val); static int recv_key[512]; /* keyboard input buffer */ @@ -350,15 +365,10 @@ keyboard_isfsexit_up(void) return (!recv_key[0x01d] && !recv_key[0x11d] && !recv_key[0x038] && !recv_key[0x138] && !recv_key[0x051] && !recv_key[0x151]); } -/* Do we have F8-F12 in the keyboard buffer? */ +/* Do we have the mouse uncapture combination in the keyboard buffer? */ int keyboard_ismsexit(void) { -#ifdef _WIN32 - /* Windows: F8+F12 */ - return (recv_key[0x042] && recv_key[0x058]); -#else - /* WxWidgets cannot do two regular keys.. CTRL+END */ - return ((recv_key[0x01D] || recv_key[0x11D]) && (recv_key[0x04F] || recv_key[0x14F])); -#endif + return ((recv_key[key_prefix_1] || recv_key[key_prefix_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 62a57344e..9c83843b5 100644 --- a/src/include/86box/86box.h +++ b/src/include/86box/86box.h @@ -146,13 +146,19 @@ extern int enable_discord; /* (C) enable Discord integration */ extern int fixed_size_x; extern int fixed_size_y; -extern double mouse_sensitivity; /* (C) Mouse sensitivity scale */ +extern double mouse_sensitivity; /* (C) Mouse sensitivity scale */ #ifdef _Atomic -extern _Atomic double mouse_x_error; /* Mouse error accumulator - Y */ -extern _Atomic double mouse_y_error; /* Mouse error accumulator - Y */ +extern _Atomic double mouse_x_error; /* Mouse error accumulator - Y */ +extern _Atomic double mouse_y_error; /* Mouse error accumulator - Y */ #endif -extern int pit_mode; /* (C) force setting PIT mode */ -extern int fm_driver; /* (C) select FM sound driver */ +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_uncapture_1; +extern uint16_t key_uncapture_2; extern char exe_path[2048]; /* path (dir) of executable */ extern char usr_path[1024]; /* path (dir) of user data */