Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -r e605ca133ac6 src/video/x11/SDL_x11events.c
- --- a/src/video/x11/SDL_x11events.c Sat Aug 24 09:43:14 2013 -0400
- +++ b/src/video/x11/SDL_x11events.c Sun Aug 25 01:23:34 2013 +0200
- @@ -269,10 +269,19 @@
- XEvent xevent;
- int i;
- XClientMessageEvent m;
- + KeyCode prefilter_keycode = 0;
- + int prefilter_type = 0;
- SDL_zero(xevent); /* valgrind fix. --ryan. */
- XNextEvent(display, &xevent);
- + /* before filtering the event (which will modify it in case of dead
- + keys), store the original keycode so we can generate a SDL_KEYDOWN/UP
- + event for it anyway */
- + if(xevent.type == KeyPress || xevent.type == KeyRelease) {
- + prefilter_keycode = xevent.xkey.keycode;
- + prefilter_type = xevent.type;
- + }
- /* filter events catchs XIM events and sends them to the correct
- handler */
- if (XFilterEvent(&xevent, None) == True) {
- @@ -280,6 +289,14 @@
- printf("Filtered event type = %d display = %d window = %d\n",
- xevent.type, xevent.xany.display, xevent.xany.window);
- #endif
- +
- + /* in case this was a keypress/release event, send it to SDL
- + anyway, because we want events for dead keys too. */
- + if(prefilter_keycode != 0) {
- + SDL_SendKeyboardKey(prefilter_type == KeyPress ? SDL_PRESSED : SDL_RELEASED,
- + videodata->key_layout[prefilter_keycode]);
- + }
- +
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement