← easystroke

Implement function to fake motion events

02e6758112df14dbac6b95f11e3f65c47b8fead3 · Thomas Jaeger · Jan 23, 2010 03:43

+8 · 2 files changed

  • grabber.cc +7 −0
  • grabber.h +1 −0
diff --git a/grabber.cc b/grabber.cc
index 9ae5187..1a32431 100644
--- a/grabber.cc
+++ b/grabber.cc
@@ -418,6 +418,13 @@ void Grabber::XiDevice::grab_button(ButtonInfo &bi, bool grab) {
 	}
 }
 
+void Grabber::XiDevice::fake_motion(int x, int y) {
+	XDevice fake_dev;
+	fake_dev.device_id = dev;
+	int axes[2] = { x, y };
+	XTestFakeDeviceMotionEvent(dpy, &fake_dev, False, 0, axes, 2, 0);
+}
+
 void Grabber::grab_xi(bool grab) {
 	if (!xi_grabbed == !grab)
 		return;
diff --git a/grabber.h b/grabber.h
index 7823969..8d97dcd 100644
--- a/grabber.h
+++ b/grabber.h
@@ -78,6 +78,7 @@ public:
 		}
 		void grab_device(bool grab);
 		void grab_button(ButtonInfo &bi, bool grab);
+		void fake_motion(int x, int y);
 	};
 
 	typedef std::map<XID, boost::shared_ptr<XiDevice> > DeviceMap;