From 5a31b2e438a26fb29c7a93d7f47dec76228f1f7c Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Tue, 7 Apr 2015 21:54:53 +0200 Subject: Implement set_cursor_position() on X11 --- src/x11/ffi.rs | 4 ++++ src/x11/window/mod.rs | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/x11/ffi.rs b/src/x11/ffi.rs index e33ea24..c58647f 100644 --- a/src/x11/ffi.rs +++ b/src/x11/ffi.rs @@ -1485,6 +1485,10 @@ extern "C" { pointer_mode: libc::c_int, keyboard_mode: libc::c_int, confine_to: Window, cursor: Cursor, time: Time) -> libc::c_int; pub fn XUngrabPointer(dpy: *mut Display, time: Time); + + pub fn XWarpPointer(display: *mut Display, src_w: Window, dest_w: Window, src_x: libc::c_int, + src_y: libc::c_int, src_width: libc::c_uint, src_height: libc::c_uint, + dest_x: libc::c_int, dest_y: libc::c_int); } /* diff --git a/src/x11/window/mod.rs b/src/x11/window/mod.rs index 7121ac6..d58b2d2 100644 --- a/src/x11/window/mod.rs +++ b/src/x11/window/mod.rs @@ -825,7 +825,11 @@ impl Window { 1.0 } - pub fn set_cursor_position(&self, _x: i32, _y: i32) -> Result<(), ()> { - unimplemented!(); + pub fn set_cursor_position(&self, x: i32, y: i32) -> Result<(), ()> { + unsafe { + ffi::XWarpPointer(self.x.display, 0, self.x.window, 0, 0, 0, 0, x, y); + } + + Ok(()) } } -- cgit v1.2.3