diff options
Diffstat (limited to 'spnav.py')
-rw-r--r-- | spnav.py | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -1,4 +1,8 @@ -from ctypes import cdll, c_int, c_uint, c_void_p, byref, Structure, Union +from ctypes import cdll, c_int, c_uint, c_void_p, py_object, byref, Structure, Union, pythonapi + +# OMG CALLING CPYTHON FUNCTIONS FROM INSIDE PYTHON +pythonapi.PyCObject_AsVoidPtr.restype = c_void_p +pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object] libspnav = cdll.LoadLibrary('libspnav.so') @@ -44,6 +48,13 @@ def spnav_open(): if libspnav.spnav_open() == -1: raise Exception('failed to connect to the space navigator daemon') +def spnav_x11_open(display, window): + display_ptr = pythonapi.PyCObject_AsVoidPtr(display) + libspnav.spnav_x11_open(display_ptr, window) + +def spnav_x11_window(window): + libspnav.spnav_x11_window(window) + def spnav_close(): libspnav.spnav_close() @@ -69,6 +80,14 @@ def spnav_poll_event(): def spnav_remove_events(event_type): return libspnav.spnav_remove_events(event_type) +def spnav_x11_event(xevent): + ev = spnav_event() + ret = libspnav.spnav_x11_event(xevent, byref(ev)) + if ret == 0: + return None + else: + return ev + if __name__ == '__main__': spnav_open() try: |