summaryrefslogtreecommitdiff
path: root/record.cpp
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2015-08-04 02:54:31 +0100
committerFrediano Ziglio <fziglio@redhat.com>2015-08-04 02:54:31 +0100
commit2b525c78c02b6a5c2d7afa5aaa6f930606adcdbc (patch)
tree397f28d6750d3bf0059cde22556ad2aae1f60fdc /record.cpp
parente8e04507d1fd3c34af9c3066671eb6bdddb43247 (diff)
fix sending keys/mouse
use relative positions also
Diffstat (limited to 'record.cpp')
-rw-r--r--record.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/record.cpp b/record.cpp
index 8cc2fd2..e1945a4 100644
--- a/record.cpp
+++ b/record.cpp
@@ -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: