Close

The configuration tool

A project log for Programmable ambidextrous joystick mouse

A flexible and accessible pointing device

ndbNDB 08/30/2020 at 10:540 Comments

To be a programmable device, it needs a tool to do the programming! I wrote the configuration tool in Python using Tkinter for the UI so that it would be largely cross platform. The device is calibrated and reprogrammed as a serial device.

These are the available input ‘events’ the device raises:

JOY AXIS X+, JOY AXIS X-, JOY AXIS Y+, JOY AXIS Y-, JOY AXIS RECENTRE, JOY AXIS BUTTON, TOP BUTTON PRESS, SCROLL BUTTON PRESS, BOTTOM BUTTON PRESS, MODE BUTTON PRESS, SCROLL WHEEL-, SCROLL WHEEL+

And these are the ‘actions’ you can arbitrarily map to them:

"Do Nothing", "Cursor move right", "Cursor move left", "Cursor move up", "Cursor move down", "Scroll vertically down", "Scroll vertically up", "Scroll horizontally right", "Scroll horizontally left", "Single click button 1", "Single click button 2", "Single click button 3", "Double click button 1", "Double click button 2", "Double click button 3", "Toggle button 1 on/off", "Toggle button 2 on/off", "Toggle button 3 on/off", "Release button 1", "Release button 2", "Release button 3", "Hold button 1", "Hold button 2", "Hold button 3", "Swap vert/horiz scroll", "Swap single/double click", "Release all buttons", "Next preset"

It’s nice once you get to the stage when you are able to fiddle with the event handling, tweak the acceleration values and being able to instantly try it out.

The 'landing' tab of the tool. You can calibrate the joystick here and adjust the deadzones. Some global settings are also set here which override the presets where applicable.

Drop downs list the available actions next to the hardware events. You can also toggle feedback events.

Linear acceleration works well most of the time.

But you can have more abrupt movements if you prefer, or smoothed out movements.

These speed settings are just for demonstration, I don't recommend using them.

Using Python and Tkinter make running the tool across platforms quite easy. Extra considerations for MacOS are required though, the default font is a bit tiny and the spacing isn't perfect.

Discussions