diff options
author | Frediano Ziglio <fziglio@redhat.com> | 2015-08-04 02:54:31 +0100 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-08-04 02:54:31 +0100 |
commit | 2b525c78c02b6a5c2d7afa5aaa6f930606adcdbc (patch) | |
tree | 397f28d6750d3bf0059cde22556ad2aae1f60fdc /record.cpp | |
parent | e8e04507d1fd3c34af9c3066671eb6bdddb43247 (diff) |
fix sending keys/mouse
use relative positions also
Diffstat (limited to 'record.cpp')
-rw-r--r-- | record.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -70,7 +70,7 @@ get_win_pos(void) XWindowAttributes attr; XGetWindowAttributes(dpy, win, &attr); - if (!XTranslateCoordinates(dpy, win, DefaultRootWindow(dpy), attr.x, attr.y, &win_x, &win_y, &child)) { + if (!XTranslateCoordinates(dpy, win, DefaultRootWindow(dpy), 0, 0, &win_x, &win_y, &child)) { fprintf(stderr, "Error XTranslateCoordinates\n"); exit(EXIT_FAILURE); } @@ -94,15 +94,11 @@ handle_xi_mouse(XIDeviceEvent* ev) if (!inside) return; - unsigned mask = 0; - for (unsigned n = 0; n < ev->buttons.mask_len && n < 4; ++n) - mask |= ev->buttons.mask[n] << (n*8u); - Record r(ev->evtype); - r.add_field(1, mouse_x); - r.add_field(2, mouse_y); + r.add_field(1, mouse_x - x); + r.add_field(2, mouse_y - y); r.add_field(3, ev->mods.effective); - r.add_field(4, mask); + r.add_field(4, ev->detail); if (verbose == 1) printf("Mouse moved at (%d,%d)\n", mouse_x, mouse_y); @@ -112,8 +108,8 @@ static void handle_xi_keys(XIDeviceEvent* ev) { Record r(ev->evtype); - r.add_field(1, ev->root_x); - r.add_field(2, ev->root_y); + r.add_field(1, ev->root_x - x); + r.add_field(2, ev->root_y - y); r.add_field(3, ev->mods.effective); r.add_field(4, ev->detail); } @@ -179,7 +175,8 @@ handle_xev(XEvent *ev) has_focus = 1; break; case FocusOut: - if (ev->xfocus.window == win) + if (ev->xfocus.window == win + && ev->xfocus.mode != NotifyWhileGrabbed) has_focus = 0; break; case EnterNotify: |