src/video/x11


Log

Author Commit Date CI Message
Sam Lantinga c8881837 2015-05-28T19:06:07 Improved fix for bug 2096 - Mapping from scancode to keycode doesn't work for remapped modifier keys Zack Middleton The change to the keymap to use SDL_SCANCODE_TO_KEYCODE in SDL_x11keyboard.c causes all SDL scancodes without a Usc4 character to be XOR'd with SDLK_SCANCODE_MASK, but not all key code are suppose to be (as seen in include/SDL_keycodes.h). SDLK_BACKSPACE is not 0x4000002A. I think the full list of keys affected are return, escape, backspace, tab, and delete.
Sam Lantinga 6e67c949 2015-05-28T12:55:01 Fixed bug 2054 - SDL_GetError: "Unknown touch device" Volumetric The "Unknown touch device" message appears because the initial touch device setup loop uses SDL_GetTouch() as a guard for calling SDL_AddTouch(). SDL_GetTouch() will always report "Unknown touch device" since the device hasn't been added yet. The SDL_GetTouch() call is unnecessary since SDL_AddTouch() calls SDL_GetTouchIndex() to verify that the device hasn't been added yet, and SDL_GetTouchIndex() has the benefit of not reporting an error for a device it can't find.
Sam Lantinga 32d6dcdb 2015-05-28T12:48:20 Fixed bug 2096 - Mapping from scancode to keycode doesn't work for remapped modifier keys Jacob Lee If a user has a non-standard keyboard mapping -- say, their caps lock key has been mapped to Ctrl -- then SDL_GetModState() is no longer accurate: it only considers the unmapped keys. This is a regression from SDL 1.2. I think there are two parts to this bug: first, GetModState should use keycodes, rather than scancodes, which is easy enough. Unfortunately, on my system, SDL considers Caps Lock, even when mapped as Control, to be both SDL_SCANCODE_CAPSLOCK and SDLK_CAPSLOCK. The output from checkkeys for it is: INFO: Key pressed : scancode 57 = CapsLock, keycode 0x40000039 = CapsLock modifiers: CAPS Whereas the output for xev is: KeyPress event, serial 41, synthetic NO, window 0x4a00001, root 0x9a, subw 0x0, time 40218333, (144,177), root:(1458,222), state 0x10, keycode 66 (keysym 0xffe3, Control_L), same_screen YES, XKeysymToKeycode returns keycode: 37 XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False I think the problem is that X11_UpdateKeymap in SDL_x11keyboard.c only builds a mapping for keycodes associated with a Unicode character (anything where X11_KeyCodeToUcs returns a value). In the case of caps lock, SDL scancode 57 becomes x11 keycode 66, which becomes x11 keysym 65507(Control_L), which does not have a unicode value. To fix this, I suspect that SDL needs a mapping of the rest of the x11 keysyms to their corresponding SDL key codes.
Sam Lantinga cb24f4de 2015-05-28T10:44:46 Fixed bug 2772 - SDL2 doesn't handle X KeymapNotify events Jason Wyatt Currently the keymapnotify event handling is commented out as FIXME in SDL_x11events.c (It looks like this may have functioned SDL1.2). Not handling this event means that if a window manager shortcut such as ALT+SPACE is used, SDL will send an ALT key down signal, but not an up signal. Also querying SDL about the key state, it believes the ALT key remains pressed. X passes the events keypress (alt), ?focusout?, ?focusin?, keymapnotify.
Sam Lantinga 719bb6fc 2015-05-28T09:52:48 Fixed X11 build, added code to print initial modifiers to checkkeys
Sam Lantinga 0694baf2 2015-05-28T09:33:47 Fixed bug 2736 - X11 doesn't set KMOD_NUM and KMOD_CAPS to system state Zack Middleton Using X11 (on Debian Wheezy), SDL_GetModState() & KMOD_NUM and KMOD_CAPS are not set to system state (numlock/capslock LEDs). Pressing numlock or capslock toggles the mod state, though if num/caps lock is enabled before starting the program it's still reversed from system state. This makes getting KMOD_NUM and KMOD_CAPS in programs unreliable. This can be seen using the checkkeys test program. The function that appears to have handle this in SDL 1.2 is X11_SetKeyboardState. The function call is commented out with "FIXME:" in SDL 2. Using Windows backend through WINE; on first key press if numlock and/or capslock is enabled on system, numlock/capslock SDL_SendKeyboardKey is run and toggles KMOD_NUM/KMOD_CAPS to the correct state. On X11 this does not happen. The attached patch makes X11 backend set keyboard state on window focus if no window was previously focused. It sets all keys to system up/down state and toggles KMOD_NUM/KMOD_CAPS via SDL_SendKeyboardKey to match system if needed. The patch is based on SDL 1.2's X11_SetKeyboardState.
Ryan C. Gordon 2a757825 2015-05-28T00:30:21 X11: Add Xdbe support to message boxes (thanks, Melker!). Without this, message boxes with a lot of text will noticibly flicker as you mouse over buttons. Fixes Bugzilla #2343.
Ryan C. Gordon 80cfccbf 2015-05-26T22:57:42 Back out changeset b80349dd6d40. This change didn't do what I thought it did, sorry.
Ryan C. Gordon c69a5592 2015-05-26T21:29:45 X11: generate clipboard update events (thanks, "chw"!). Partially fixes Bugzilla #2266.
Ryan C. Gordon cc493d71 2015-05-26T21:26:27 X11: use XA_STRING for text SDL puts on the clipboard (thanks, "chw"!). Partially fixes Bugzilla #2266.
Alex Baines ae6555df 2015-05-26T20:22:14 Pump IBus events after X events.
Sam Lantinga 2c4a6ea0 2015-05-26T06:27:46 Updated the copyright year to 2015
Victor Luchits afc97cbd 2015-05-14T14:40:56 Fix duplicate raw mouse events with XInput2 Make XGrabPointer calls in X11_SetWindowGrab and X11_CaptureMouse consistent by passing False to owner_mask along with proper event_mask.
Ryan C. Gordon 589c46dd 2015-05-01T01:20:28 X11: send keypress events before textinput events.
Dimitris Zenios d9d1a1b9 2015-04-26T13:53:46 X11: Use our own cut-buffer for intermediate clipboard storage. XA_CUTBUFFER0 is not defined for holding UTF8 strings.
Ryan C. Gordon b72938c8 2015-04-20T12:22:44 Windows: Always set the system timer resolution to 1ms by default. An existing hint lets apps that don't need the timer resolution changed avoid this, to save battery, etc, but this fixes several problems in timing, audio callbacks not firing fast enough, etc. Fixes Bugzilla #2944.