Joystick mouse

Joystick mice are usually intended for special applications, like industrial applications or to help disabled people to use computer. But it can be quite comfortable for normal desktop use as well.

Some years ago I got a Genge & Thoma SK 60-200 industrial joystick from my colleague. Wondering what could be done with it, I came up with idea to make a joystick mouse. I used the same HW as in my Atari joystick adapter, only the PIC firmware needed some tweaking. The mouse is seen by the computer as standard HID mouse which works without drivers on any recent OS (Windows, Linux, Mac etc.).

Genge & Thoma SK 60-200 industrial joystick with dust
      boot removed

I decided to install the mouse and buttons directly to my desk at work to get optimum ergonomics. So it was time for some power drilling action:

Joystick mouse install in progress

It might look like the button holes are placed randomly but they are actually well thought. The left button is convenient to use with ring finger while right button is perfect to click with thumb. The finished install looks kinda Mickey Mouse:

Joystick mouse installed in desk

Yes I'm left handed. I can use a regular mouse equally well with either left or right hand, but joysticks I have always used with left hand. The buttons are cheap arcade buttons which have very light spring pressure and clicking micro switch. I have removed the rubber boot from the joystick as it was killing the feel and precision. Just have to be careful no to spill coffee on it...

I have used the joystick mouse for about three years now, together with ordinary mouse. They can both be connected at same time with no problems. I use joystick mouse with left hand and standard mouse with right hand. The joystick mouse is not so good for applications which require accuracy, such as CAD software. But for usual desktop work, browsing etc. I find it very useful. The ergonomics are far better than using a mouse. You notice this when working for long sessions. No wrist ache 'mouse hand', because wrist is in more natural position.

I have also tried to use a trackball, Kensington Expert Mouse, but I didn't like the ergonomics. You have to keep your wrist in uncomfortable position because the ball is so large, and thus high from desk. Perhaps if trackball was integrated in desk it would be much better.


The readout electronics are identical to JAKADAPTER. Any layout version of 2.1 HW can be used. There is also a version which uses only though-hole components which is easy to build. Looking at Jakadapter circuit diagram, the 220 k resistors are not necessary here. Also most of the 5 k resistors could be left out as well, only R5 and R11 are needed. Leaving all resistors installed does not harm operation of joystick mouse, if joystick potentiometers have low resistance compared to 220 k. Then you can use the same adapter also for Atari / Commodore joystick by changing the FW via bootloader.

The joystick which I have used has 5 kohm linear pots on both axes, but other values should work also OK. The ends of the pots are connected to GND and +5V. The pot wiper contact voltage is the read with PIC ADC. Buttons are read as digital inputs, connected between PIC input and ground. All connections can be made to JAKADAPTER connector X1 with following pinout:

X1 connector pin
Joystick mouse connection
Right mouse button
Y-axis pot wiper
Left mouse button
X-axis pot wiper


The firmware is written with CCS PIC C compiler. The firmware including sources and compiled hex is available below. The USB descriptor file which I have modified for this use is not included, as it is CCS copyrighted code. If you have the compiler and need the file, drop me an email. The included .hex file is compiled to be used with this bootloader, so you must first program the bootloader with Pickit3 or ICD3, and then flash the joystick mouse hex file with the bootloader software. Later, if needed, you can enter bootloader mode by keeping left mouse button pressed when connecting USB cable.    (Version 0.4, Jan 11. 2015. Compiled with CCS compiler v5.021)

Currently the firmware is very simple. The center position is calibrated only at startup, so joystick must not be touched when connecting the USB cable or booting up the PC.

page created 11.9.2015
last updated 12.9.2015