X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=5bcdd5fb22c723e4aaba848b844e2b4d937f1b03;hp=c743a8b09e5a17b3c7b5e5f36ba04cc695b7cf8e;hb=97d0f78c43d16fbf73ea0438148a4da781c75600;hpb=d7196292a6cc00acc4292f4920cd63fc16ef3068 diff --git a/src/events.c b/src/events.c index c743a8b0..5bcdd5fb 100644 --- a/src/events.c +++ b/src/events.c @@ -412,6 +412,11 @@ void HandleButtonEvent(ButtonEvent *event) event->x, event->y); #endif +#if defined(HAS_SCREEN_KEYBOARD) + if (video.shifted_up) + event->y += video.shifted_up_pos; +#endif + motion_status = FALSE; if (event->type == EVENT_BUTTONPRESS) @@ -867,21 +872,16 @@ void HandleTextEvent(TextEvent *event) GetKeyModState()); #endif -#if defined(PLATFORM_ANDROID) - if (game_status == GAME_MODE_PSEUDO_TYPENAME) - { - HandleTypeName(0, key); - +#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 - // only handle key input with text modifier keys pressed - if (checkTextInputKeyModState()) - { - HandleKey(key, KEY_PRESSED); - HandleKey(key, KEY_RELEASED); - } + // process text input as "classic" (with uppercase etc.) key input event + HandleKey(key, KEY_PRESSED); + HandleKey(key, KEY_RELEASED); } void HandlePauseResumeEvent(PauseResumeEvent *event) @@ -1209,14 +1209,12 @@ void HandleKeysDebug(Key key) if (game_status == GAME_MODE_PLAYING || !setup.debug.frame_delay_game_only) { - boolean mod_key_pressed = ((GetKeyModState() & KMOD_Control) || - (GetKeyModState() & KMOD_Alt) || - (GetKeyModState() & KMOD_Meta)); + boolean mod_key_pressed = (GetKeyModState() != KMOD_None); for (i = 0; i < NUM_DEBUG_FRAME_DELAY_KEYS; i++) { if (key == setup.debug.frame_delay_key[i] && - (mod_key_pressed || !setup.debug.frame_delay_use_mod_key)) + (mod_key_pressed == setup.debug.frame_delay_use_mod_key)) { GameFrameDelay = (GameFrameDelay != setup.debug.frame_delay[i] ? setup.debug.frame_delay[i] : GAME_FRAME_DELAY); @@ -1455,21 +1453,20 @@ void HandleKey(Key key, int key_status) return; } - if ((key == KSYM_minus || - key == KSYM_plus || - key == KSYM_equal || // ("Shift-=" is "+" on US keyboards) - key == KSYM_0) && - ((GetKeyModState() & KMOD_Control) || - (GetKeyModState() & KMOD_Alt) || - (GetKeyModState() & KMOD_Meta)) && + if ((key == KSYM_0 || key == KSYM_KP_0 || + key == KSYM_minus || key == KSYM_KP_Subtract || + key == KSYM_plus || key == KSYM_KP_Add || + key == KSYM_equal) && // ("Shift-=" is "+" on US keyboards) + (GetKeyModState() & (KMOD_Control | KMOD_Meta)) && video.window_scaling_available && !video.fullscreen_enabled) { - if (key == KSYM_0) + if (key == KSYM_0 || key == KSYM_KP_0) setup.window_scaling_percent = STD_WINDOW_SCALING_PERCENT; + else if (key == KSYM_minus || key == KSYM_KP_Subtract) + setup.window_scaling_percent -= STEP_WINDOW_SCALING_PERCENT; else - setup.window_scaling_percent += - (key == KSYM_minus ? -1 : +1) * STEP_WINDOW_SCALING_PERCENT; + setup.window_scaling_percent += STEP_WINDOW_SCALING_PERCENT; if (setup.window_scaling_percent < MIN_WINDOW_SCALING_PERCENT) setup.window_scaling_percent = MIN_WINDOW_SCALING_PERCENT;