Advertisement
Guest User

Untitled

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