Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pyonekeymouse/unix.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyonekeymouse/unix.py')
-rwxr-xr-xpyonekeymouse/unix.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/pyonekeymouse/unix.py b/pyonekeymouse/unix.py
new file mode 100755
index 0000000..9f9afc2
--- /dev/null
+++ b/pyonekeymouse/unix.py
@@ -0,0 +1,88 @@
+# -*- coding: iso-8859-1 -*-
+from Xlib.display import Display
+from Xlib import X
+from Xlib.protocol import event
+import Xlib.ext.xtest
+
+from pymouse import PyMouseMeta
+
+display = Display(":0")
+root = display.screen().root
+
+class PyMouse(PyMouseMeta):
+
+ def press(self, x, y, button = 1):
+ focus = display.get_input_focus().focus
+ rel = focus.translate_coords(root, x, y)
+ button_list = [None, X.Button1, X.Button3, X.Button2]
+
+ try:
+ mousePress = event.ButtonPress(
+ time=X.CurrentTime,
+ root=root,
+ window=focus,
+ same_screen=1,
+ child=X.NONE,
+ root_x=x,
+ root_y=y,
+ event_x=rel.x,
+ event_y=rel.y,
+ state=0,
+ detail=button_list[button]
+ )
+ focus.send_event(mousePress)
+
+ except:
+ pass
+
+ display.sync()
+
+ def release(self, x, y, button = 1):
+ focus = display.get_input_focus().focus
+ rel = focus.translate_coords(root, x, y)
+ button_list = [None, X.Button1, X.Button3, X.Button2]
+
+ try:
+ mouseRealease = event.ButtonRelease(
+ time=X.CurrentTime,
+ root=root,
+ window=focus,
+ same_screen=1,
+ child=X.NONE,
+ root_x=x,
+ root_y=y,
+ event_x=rel.x,
+ event_y=rel.y,
+ state=1,
+ detail=button_list[button]
+ )
+ focus.send_event(mouseRealease)
+
+ except:
+ pass
+
+ display.sync()
+
+ def click(self, x, y, button = 1):
+ try:
+ self.press(x, y, button)
+ self.release(x, y, button)
+ except:
+ # Using xlib-xtest fake input
+ self.move(x, y) # I believe you where not setting the position
+ Xlib.ext.xtest.fake_input (display, X.ButtonPress, button+1) #Unix-xlib starts from 1
+
+ display.sync()
+
+ def move(self, x, y):
+ root.warp_pointer(x, y)
+ display.sync()
+
+ def position(self):
+ coord = display.screen().root.query_pointer()._data
+ return coord["root_x"], coord["root_y"]
+
+ def screen_size(self):
+ width = display.screen().width_in_pixels
+ height = display.screen().height_in_pixels
+ return width, height