joyevmouse converts joystick events to mouse events, making it possible to use a joystick as a mouse. joyevmouse uses the rather nice evdev and uinput infrastructure of the linux kernel.
This means that joyevmouse runs entirely in userspace - it does not run as a kernel driver or need a patch joyevmouse has been written rather quickly and is only tested on one device. So it may have some rough edges.
This project is released under the GNU General Public License.
· Joyevmouse requires a kernel built with evdev and uinput support and the corresponding device files. On most distributions the evdev and uinput modules should be available, but /dev/input/event? and /dev/misc/uinput may need to be created - check. At the time of writing, uinput can be created like this
# mknod /dev/misc/uinput c 10 223
while the event? files can be created like this
# i=0 ; while [ $i -lt 8 ] ; do mknod /dev/input$i 13 $[64+i] ; i=$[i+1] ; done
The /dev/MAKEDEV script or various hotplug subsystems may also create these with the correct incantations.
# make install
Joyevmouse needs to be invoked with the correct /dev/input/event? file as parameter. By default Joyevmouse will exit if the given device does not have the correct capabilities, so it should be possible to try it on each of the files in sequence. Joyevmouse will also print out the name of the input device - this should provide a clue. There may be ways of integrating it with various messy hotplug subsystems, but I lack the patience.
The below runs joyevmouse on the fourth input device
# joyevmouse /dev/input/event3
Once joyevmouse is running, move the joystick through its full range in both dimensions, then back to neutral and press the handbrake button (by default this is configured to be the base button). After that the system should be ready to use. Whenever the mouse pointer drifts in the neutral position press the handbrake button again. The system is adaptive and should stop the mouse cursor from drifting after a few handbrakes.
What's New in This Release:
· This release makes joystick axes configurable, makes movement delay configurable, changes movement heuristics slightly, adds suggestions to some error messages, and reorganises the internals.