1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-16 18:30:32 +00:00

Improve repeat behaviour.

This commit is contained in:
Thomas Harte 2023-12-31 15:21:20 -05:00
parent 4f846ef8d0
commit a58f643b4d

View File

@ -341,9 +341,8 @@ template <Analyser::Static::AppleII::Target::Model model> class ConcreteMachine:
repeat_is_pressed = is_pressed; repeat_is_pressed = is_pressed;
if constexpr (!is_iie()) { if constexpr (!is_iie()) {
if(is_pressed && !is_repeat) { if(is_pressed && (!is_repeat || pressed_character)) {
value = last_key; keyboard_input = uint8_t(last_pressed_character | 0x80);
break;
} }
} }
return true; return true;
@ -398,10 +397,13 @@ template <Analyser::Static::AppleII::Target::Model model> class ConcreteMachine:
} }
if(is_pressed) { if(is_pressed) {
last_key = value; last_pressed_character = pressed_character = value;
keyboard_input = uint8_t(value | 0x80); keyboard_input = uint8_t(value | 0x80);
key_is_down = true; key_is_down = true;
} else { } else {
if(value == pressed_character) {
pressed_character = 0;
}
if((keyboard_input & 0x3f) == value) { if((keyboard_input & 0x3f) == value) {
key_is_down = false; key_is_down = false;
} }
@ -418,7 +420,8 @@ template <Analyser::Static::AppleII::Target::Model model> class ConcreteMachine:
} }
} }
char last_key = 0; char pressed_character = 0, last_pressed_character = 0;
bool repeat_is_pressed = false; bool repeat_is_pressed = false;
bool shift_is_pressed = false; bool shift_is_pressed = false;
bool control_is_pressed = false; bool control_is_pressed = false;