From ae3de27ebbfd90e5f394e35fe2f7b94c8546eaa0 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 4 Dec 2016 13:48:22 +0200 Subject: [PATCH] Keyboard connected/disconnected update. --- cia.cpp | 13 ++++++++++++- custom.cpp | 4 +++- include/cia.h | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/cia.cpp b/cia.cpp index 28800054..fbc29e37 100644 --- a/cia.cpp +++ b/cia.cpp @@ -670,6 +670,8 @@ static void sendrw (void) int resetwarning_do (int canreset) { + if (!currprefs.keyboard_connected) + return 0; if (resetwarning_phase || regs.halted > 0) { /* just force reset if second reset happens during resetwarning */ if (canreset) { @@ -795,8 +797,13 @@ void CIAB_tod_handler (int hoffset) } } -void keyboard_connected(void) +void keyboard_connected(bool connect) { + if (connect) { + write_log(_T("Keyboard connected\n")); + } else { + write_log(_T("Keyboard disconnected\n")); + } kbstate = 0; kblostsynccnt = 0; resetwarning_phase = 0; @@ -855,6 +862,10 @@ void CIA_hsync_posthandler (bool ciahsync, bool dotod) if ((hsync_counter & 15) == 0) check_keyboard(); } + } else { + while (keys_available()) { + get_next_key(); + } } } diff --git a/custom.cpp b/custom.cpp index 75394e15..f945ec6f 100644 --- a/custom.cpp +++ b/custom.cpp @@ -9946,7 +9946,9 @@ void check_prefs_changed_custom (void) currprefs.collision_level = changed_prefs.collision_level; if (!currprefs.keyboard_connected && changed_prefs.keyboard_connected) { // send powerup sync - keyboard_connected(); + keyboard_connected(true); + } else if (currprefs.keyboard_connected && !changed_prefs.keyboard_connected) { + keyboard_connected(false); } currprefs.keyboard_connected = changed_prefs.keyboard_connected; diff --git a/include/cia.h b/include/cia.h index dc29ac9d..46892d9d 100644 --- a/include/cia.h +++ b/include/cia.h @@ -36,6 +36,6 @@ extern int parallel_direct_read_status (uae_u8*); extern void rtc_hardreset (void); -extern void keyboard_connected(void); +extern void keyboard_connected(bool); #endif /* UAE_CIA_H */ -- 2.47.3