John Tsiombikas nuclear@mutantstargoat.com
24 July 2009
I just released version 0.4 of my spacenavd user space driver for 6dof input devices, which fixes some long-standing reliability and ease of use issues.
First and foremost, I cleaned up the code, which started initially as a hack, and ended as an unmaintainable mess. I've split and isolated the linux specific parts so that I may add support for other operating systems in the future (specifically I'd like to find the chance to add freebsd support soon).
I've also dropped the dodgy 30sec polling cycle to acquire the device if it’s
disconnected, which had the effect of being able to use the device at some
seemingly random time after plugging it in, and started using the
KOBJECT_UEVENT
netlink socket to get asyncronous notification of hotplug events
from the kernel. Now the device lights up and is ready to use immediatly upon
plugging it in the USB port.
More importantly, I lifted the responsibility of notifying the daemon that X
has started and it may connect and start listening for X11 clients from the
user. By using the excellent inotify API to detect when the X server's socket
is created in /tmp/.X11-unix
, the daemon is now able to wake up and connect to
the X server automatically as soon as it's started up.
And finally, now spacenavd actively grabs the device when it starts, which solves the problem of the X server trying to use it as a mouse, without having to resort to messing around with the user's HAL config files, to make hald ignore it.
To celebrate this milestone release, the free spacenav project now has a newly redesigned web site, which may help attract more attention compared to the previous plain-text web page. Thanks go to cybernoid for the new web site.
This was initially posted in my old wordpress blog. Visit the original version to see any comments.