mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-25 23:07:18 +00:00
[client] x11: use XInput for button events if possible
This commit is contained in:
parent
e106f2096b
commit
a1069ddffa
@ -94,6 +94,24 @@ static bool x11Init(SDL_SysWMinfo * info)
|
|||||||
|
|
||||||
#if SDL_VIDEO_DRIVER_X11_XINPUT2
|
#if SDL_VIDEO_DRIVER_X11_XINPUT2
|
||||||
XQueryExtension(x11.display, "XInputExtension", &x11.xinputOp, &event, &error);
|
XQueryExtension(x11.display, "XInputExtension", &x11.xinputOp, &event, &error);
|
||||||
|
|
||||||
|
int num_masks;
|
||||||
|
XIEventMask * mask = XIGetSelectedEvents(x11.display, x11.window, &num_masks);
|
||||||
|
if (!mask)
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to get the XInput event mask");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < num_masks; ++i)
|
||||||
|
{
|
||||||
|
XISetMask(mask[i].mask, XI_ButtonPress );
|
||||||
|
XISetMask(mask[i].mask, XI_ButtonRelease);
|
||||||
|
XISetMask(mask[i].mask, XI_Motion );
|
||||||
|
}
|
||||||
|
|
||||||
|
XISelectEvents(x11.display, x11.window, mask, num_masks);
|
||||||
|
XFree(mask);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Atom NETWM_BYPASS_COMPOSITOR = XInternAtom(x11.display,
|
Atom NETWM_BYPASS_COMPOSITOR = XInternAtom(x11.display,
|
||||||
@ -271,6 +289,26 @@ static bool x11EventFilter(SDL_Event * event)
|
|||||||
|
|
||||||
switch(cookie->evtype)
|
switch(cookie->evtype)
|
||||||
{
|
{
|
||||||
|
case XI_ButtonPress:
|
||||||
|
{
|
||||||
|
XIDeviceEvent *device = cookie->data;
|
||||||
|
app_updateCursorPos(device->event_x, device->event_y);
|
||||||
|
|
||||||
|
app_handleButtonPress(
|
||||||
|
device->detail > 5 ? device->detail - 2 : device->detail);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case XI_ButtonRelease:
|
||||||
|
{
|
||||||
|
XIDeviceEvent *device = cookie->data;
|
||||||
|
app_updateCursorPos(device->event_x, device->event_y);
|
||||||
|
|
||||||
|
app_handleButtonRelease(
|
||||||
|
device->detail > 5 ? device->detail - 2 : device->detail);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
case XI_Motion:
|
case XI_Motion:
|
||||||
{
|
{
|
||||||
if (!app_cursorInWindow())
|
if (!app_cursorInWindow())
|
||||||
|
Loading…
Reference in New Issue
Block a user