X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=834b4232b28ccbe96c7360931b52c2d829c7404f;hp=84449933d1d06a0c7a1d0511b5493bb2dbe08ac6;hb=2174ec0a6b545b47aaea3153ef9a67993fc59a93;hpb=4364ff8e4807cbe290f6e7451e2ca203ef84adf9 diff --git a/src/events.c b/src/events.c index 84449933..834b4232 100644 --- a/src/events.c +++ b/src/events.c @@ -464,7 +464,7 @@ static void SetPlayerMouseAction(int mx, int my, int button) local_player->mouse_action.ly = ly; local_player->mouse_action.button = button; - if (tape.recording && tape.pausing && tape.use_mouse) + if (tape.recording && tape.pausing && tape.use_mouse_actions) { // un-pause a paused game only if mouse button was newly pressed down if (new_button) @@ -1375,18 +1375,19 @@ static void HandleButtonOrFinger(int mx, int my, int button) { if (strEqual(setup.touch.control_type, TOUCH_CONTROL_FOLLOW_FINGER)) HandleButtonOrFinger_FollowFinger(mx, my, button); - else if (game.use_mouse_events && valid_mouse_event) + else if (game.use_mouse_actions && valid_mouse_event) SetPlayerMouseAction(mx, my, button); } } -static boolean checkTextInputKeyModState(void) +static boolean checkTextInputKey(Key key) { // when playing, only handle raw key events and ignore text input if (game_status == GAME_MODE_PLAYING) return FALSE; - return ((GetKeyModState() & KMOD_TextInput) != KMOD_None); + // else handle all printable keys as text input + return KSYM_PRINTABLE(key); } void HandleTextEvent(TextEvent *event) @@ -1404,16 +1405,12 @@ void HandleTextEvent(TextEvent *event) GetKeyModState()); #endif -#if !defined(HAS_SCREEN_KEYBOARD) - // non-mobile devices: only handle key input with modifier keys pressed here - // (every other key input is handled directly as physical key input event) - if (!checkTextInputKeyModState()) - return; -#endif - - // process text input as "classic" (with uppercase etc.) key input event - HandleKey(key, KEY_PRESSED); - HandleKey(key, KEY_RELEASED); + if (checkTextInputKey(key)) + { + // process printable keys (with uppercase etc.) in text input mode + HandleKey(key, KEY_PRESSED); + HandleKey(key, KEY_RELEASED); + } } void HandlePauseResumeEvent(PauseResumeEvent *event) @@ -1470,8 +1467,8 @@ void HandleKeyEvent(KeyEvent *event) HandleKeyModState(keymod, key_status); - // only handle raw key input without text modifier keys pressed - if (!checkTextInputKeyModState()) + // process all keys if not in text input mode or if non-printable keys + if (!checkTextInputKey(key)) HandleKey(key, key_status); } @@ -2098,7 +2095,7 @@ void HandleKey(Key key, int key_status) if (stored_player[pnr].snap_action) stored_player[pnr].action |= JOY_BUTTON_SNAP; - if (tape.recording && tape.pausing && !tape.use_mouse) + if (tape.recording && tape.pausing && tape.use_key_actions) { if (tape.single_step) { @@ -2633,7 +2630,7 @@ void HandleJoystick(void) return; } - if (tape.recording && tape.pausing && !tape.use_mouse) + if (tape.recording && tape.pausing && tape.use_key_actions) { if (tape.single_step) {