X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=41b60832fa50f92d165da235a709403b24d034d4;hp=24106461affff97d5be9f3fef5ac0134b6ea4db2;hb=9d23eac9de03f91cf0ac094786ab30cdd589ac49;hpb=343ecd1bed93fa862903ff981ede342825f14401 diff --git a/src/events.c b/src/events.c index 24106461..41b60832 100644 --- a/src/events.c +++ b/src/events.c @@ -698,6 +698,16 @@ static struct byte action; } touch_info[NUM_TOUCH_FINGERS]; +static void SetTouchInfo(int pos, SDL_FingerID finger_id, int counter, + Key key, byte action) +{ + touch_info[pos].touched = (action != JOY_NO_ACTION); + touch_info[pos].finger_id = finger_id; + touch_info[pos].counter = counter; + touch_info[pos].key = key; + touch_info[pos].action = action; +} + static void HandleFingerEvent_VirtualButtons(FingerEvent *event) { int x = event->x * overlay.grid_xsize; @@ -807,11 +817,7 @@ static void HandleFingerEvent_VirtualButtons(FingerEvent *event) } } - touch_info[i].touched = TRUE; - touch_info[i].finger_id = event->fingerId; - touch_info[i].counter = Counter(); - touch_info[i].key = key; - touch_info[i].action = grid_button_action; + SetTouchInfo(i, event->fingerId, Counter(), key, grid_button_action); } else { @@ -823,11 +829,7 @@ static void HandleFingerEvent_VirtualButtons(FingerEvent *event) getKeyNameFromKey(touch_info[i].key), "KEY_RELEASED", i); } - touch_info[i].touched = FALSE; - touch_info[i].finger_id = 0; - touch_info[i].counter = 0; - touch_info[i].key = 0; - touch_info[i].action = JOY_NO_ACTION; + SetTouchInfo(i, 0, 0, 0, JOY_NO_ACTION); } } } @@ -1386,6 +1388,10 @@ static boolean checkTextInputKey(Key key) if (game_status == GAME_MODE_PLAYING) return FALSE; + // if Shift or right Alt key is pressed, handle key as text input + if ((GetKeyModState() & KMOD_TextInput) != KMOD_None) + return TRUE; + // ignore raw keys as text input when not in text input mode if (KSYM_RAW(key) && !textinput_status) return FALSE;