Also, if I have a joystick, how do I make it work?
Let's say its a Bluetooth or Wi-Fi joystick.
Does it use a general driver or protocol, or does it need a custom driver or daemon or server?
I have written a program to enumerate amd configure usb joysticks on Linux. It does not not support force feedback - sorry.
Basically it uses the js device files to interface with the usb joysticks.
It also employs Qt and a bit of C++11, oh and threading.
My purpose was to learn a bit of Qt, C++11 and threading, not to mention Linux, and to have a useful bit of software on my machine to calibrate my joysticks. It can save and load joystick configuration data.
Yes, the code is not brilliant and being a hypocritical software engineer, it is not well documented.