Open jtara1 opened 6 years ago
Sorry, the Linux part has seen little love recently. I'm just finishing some major changes to keyboard
and Linux crashes will be the next top priority.
Thank you for the report.
The problem seems to be that in build_display() "display" is passed as C int to XDefaultRootWindow(). On platforms where pointers don't fit to C int that just doesn't work.
Here is a patch to fix the problem:
--- ./mouse/_nixmouse.py.orig 2018-05-18 14:12:49.039934827 +0300
+++ ./mouse/_nixmouse.py 2018-05-25 15:49:15.298608794 +0300
@@ -7,7 +7,10 @@
import ctypes
import ctypes.util
-from ctypes import c_uint32, c_uint, c_int, byref
+from ctypes import c_uint32, c_uint, c_int, c_void_p, byref
+
+class c_ptr(c_void_p):
+ pass
display = None
window = None
@@ -16,12 +19,11 @@
global display, window, x11
if display and window and x11: return
x11 = ctypes.cdll.LoadLibrary(ctypes.util.find_library('X11'))
+ x11.XOpenDisplay.restype = c_ptr
# Required because we will have multiple threads calling x11,
# such as the listener thread and then main using "move_to".
x11.XInitThreads()
display = x11.XOpenDisplay(None)
- # Known to cause segfault in Fedora 23 64bits, no known workarounds.
- # http://stackoverflow.com/questions/35137007/get-mouse-position-on-linux-pure-python
window = x11.XDefaultRootWindow(display)
def get_position():
Linux j-pc 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux python 3.5 mouse Version: 0.7.0
my code
edit: I realize now that the button is a mouse button, so something like 'left' or 'right' would be valid. Core problem still exists though I believe.
traceback from gdb