diff options
author | Stan Seibert <stan@mtrr.org> | 2011-08-09 12:40:53 -0400 |
---|---|---|
committer | Stan Seibert <stan@mtrr.org> | 2011-08-09 12:40:53 -0400 |
commit | 57b7eb0f16e47ed673cd5a80ac064634436baecd (patch) | |
tree | 7402cee54b1f41a7d7d644daf265462816fdb4d1 | |
parent | edd78c209c88a652691cc5602b37d79085fee795 (diff) | |
download | chroma-57b7eb0f16e47ed673cd5a80ac064634436baecd.tar.gz chroma-57b7eb0f16e47ed673cd5a80ac064634436baecd.tar.bz2 chroma-57b7eb0f16e47ed673cd5a80ac064634436baecd.zip |
Update spnav ctypes wrapper to support X11-based communication.
-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: |