Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
commit
3dd3ceb46f
@ -808,7 +808,6 @@ std::array<uint32_t, 256> x11_to_xt_vnc
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0x1D,
|
||||
0x11D,
|
||||
0x2A,
|
||||
|
@ -34,6 +34,7 @@ extern MainWindow* main_window;
|
||||
extern "C"
|
||||
{
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
@ -50,7 +51,7 @@ static QThread* procThread = nullptr;
|
||||
static bool xi2childinit = false;
|
||||
static XIEventMask ximask;
|
||||
static std::atomic<bool> exitfromthread = false;
|
||||
static std::atomic<double> xi2_mouse_x = 0, xi2_mouse_y = 0;
|
||||
static std::atomic<double> xi2_mouse_x = 0, xi2_mouse_y = 0, xi2_mouse_abs_x = 0, xi2_mouse_abs_y = 0;
|
||||
static int xi2opcode = 0;
|
||||
static double prev_rel_coords[2] = { 0., 0. };
|
||||
static Time prev_time = 0;
|
||||
@ -91,6 +92,7 @@ void xinput2_proc()
|
||||
XISetMask(ximask.mask, XI_RawButtonPress);
|
||||
XISetMask(ximask.mask, XI_RawButtonRelease);
|
||||
XISetMask(ximask.mask, XI_RawMotion);
|
||||
if (XKeysymToKeycode(disp, XK_Home) == 69) XISetMask(ximask.mask, XI_Motion);
|
||||
|
||||
XISelectEvents(disp, win, &ximask, 1);
|
||||
|
||||
@ -119,6 +121,18 @@ void xinput2_proc()
|
||||
prev_rel_coords[1] = relative_coords[1];
|
||||
prev_time = rawev->time;
|
||||
}
|
||||
case XI_Motion: {
|
||||
if (XKeysymToKeycode(disp, XK_Home) == 69) {
|
||||
// No chance we will get raw motion events on VNC.
|
||||
const XIDeviceEvent *motionev = (const XIDeviceEvent*)cookie->data;
|
||||
if (xi2_mouse_abs_x != 0 || xi2_mouse_abs_y != 0) {
|
||||
xi2_mouse_x = xi2_mouse_x + (motionev->event_x - xi2_mouse_abs_x);
|
||||
xi2_mouse_y = xi2_mouse_y + (motionev->event_y - xi2_mouse_abs_y);
|
||||
}
|
||||
xi2_mouse_abs_x = motionev->event_x;
|
||||
xi2_mouse_abs_y = motionev->event_y;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user