I am personally a proponent of the “one button for one action” principle, yet I concede that it may be handy for a joystick with few buttons to assign macros or use a button as a Shift (so that, when pressed together with this Shift, the other buttons would perform alternative functions). You can do this by means of software developed by the joystick manufacturer for your device model.
Cheap joystick that do not come from the top three brands (Logitech, Saitek and Thrustmaster) along with CH are not generally backed up by exclusive tools for programming their functions.
CH and Thrustmaster are the two names from the mentioned top-tier brands that offer the most advanced and functional software (even though it is not that simple in terms of the learning curve). Besides assigning functions to buttons or recording macros, the software of these companies allows to write scripts and even combine a few compatible devices into a single virtual joystick. Thrustmaster's newest exclusive software T.A.R.G.E.T. is only available for the HOTAS Cougar, HOTAS Warthog and T.16000M whereas the less advanced and older Thrustmapper tool does not support the rest of the company's currently produced products.
Joysticks from Saitek and Logitech are all compatible with the respective software utilities which you can download from the manufacturer's website even if you don't find a CD with it included into the product box. Their software is not that functional, though. You can only use it to reassign buttons and create macros. A few extra options may be available (axes settings for Saitek products, for example).
I have to warn you about a frequently occurring bug with the SST tool (Saitek Smart Technology): the installation process is completed successfully but Smart Technology doesn't appear on the list of installed programs. The solution is simple but not obvious: you have to unpack (e.g. with WinRAR) the distribution file into a folder and restart the installation using a localized language pack rather than the main installer file. This should help install the program correctly.
If your device is not supported by the manufacturer on the software side but you want to reprogram its buttons, you can try using a third-party tool such as JoyToKey or SVMapper.
I’ve written many words above on the various parameters of joysticks. But are there any tools that could help evaluate the quality of their electronics? Yes, there are. You only need two simple programs that do not even have to be installed on your computer. They are called JoyTester2 and FreqMeter.
JoyTester2 serves to test the quality of the electronic (and mechanic, to some extent) parts of a joystick. You can check it out for dead zones, evaluate its sensitivity along each of the axes and determine how linear its response is. When testing a joystick, you usually try to "draw" a divergent spiral with the handle. The pedals and rudder are simply moved to their full extent.
Here are a few examples of using the program:
The screenshot shows the results of an inexpensive Genius MetalStrike 3D joystick. What can it tell us?
The precision numbers in the bottom right corner make it clear that the device is based on an 8-bit controller. There are 256 discrete steps for each axis. That’s in fact the smallest resolution for today’s joysticks but it suffices for piloting in any games provided that the controller works well and the mechanics are okay.
The joystick’s controller isn’t perfect as is indicated by the spiral “drawn” by the handle. The sharp zigzags at near-zero axis positions indicate dead zones whereas the near-straight stretches suggest that the axis polling rate is rather low (this was later reconfirmed by the FreqMeter tool which reported only 27 polls per second). The good news is that the movement range of the handle matches that of the sensors (you can feel it easily while drawing the circle with the joystick) whereas the response is quite linear.
The presence of dead zones can be easily identified by watching the picture being drawn during the test. If the control stick is already deflected but the cross is still in the center, there is a dead zone. A dead zone can be either electronic (i.e. due to some flaws in the controller's firmware) or mechanical (there is some play of the handle near its default central position). There is some mechanical play to almost any serial joystick because high-precision mechanics would be too costly. So, a play of 5 millimeters for the top of the control stick is not really a defect for a serial product. But you should think twice before purchasing a device whose axis plays by more than 1 centimeter, like the Y axis of the Saitek Cyborg X/F.L.Y.5.
Sometimes you may want to create software-based dead zones if permitted by the device driver or the game. This is recommended when axis resistors have worn off and started to tremble in the central or extreme positions. With such trembling resistors, the throttle may change not from 0% to 100% but, for example, from 5% to 97% or one of the control stick axes may deflect sideways in its central position. In the first case you can set a dead zone up at the end of the axis to use its full resolution. In the second case, you can avoid the deflection by putting a dead zone into the center.
On the other hand, a fixed dead zone is a clear downside of some joysticks, such as early versions of Saitek's X52 and most of products from second-tier brands, as it won't allow you to fully enjoy your virtual flight even when the joystick is absolutely new.
Let’s get back to JoyTester2, though. The screenshot above shows you the results of the elder cousin of the MetalStrike 3D. It’s Genius MetalStrike FF where FF stands for force feedback. It is the latter that you can see in the picture. The control accuracy is awful and not just because of force feedback per se but because of its poor implementation. This technology is not that disastrous in Saitek’s EVO Force and Logitech’s Force 3D Pro.
Now this is a picture by Saitek X52 Pro where you can see the spiral trying to acquire a square shape. That’s a clear indication of nonlinear response: the sensors react differently to the same angle of the handle depending on how much the latter is deflected from its central position. This can be a serious problem for an air combat with lots of maneuvering but is not critical in other situations.
Otherwise, we can note that the axis precision equals 1024 per each control stick axis, which corresponds to a 10-bit controller (the screenshot reports 1040 due to measurement inaccuracies). There are no dead zones at the near-zero positions of the axes. On the other hand, we can see some problems with the mechanics with a rather weak central spring: the stick doesn’t show any desire to move strictly along an axis because the corners of the square do not lie on the axes.
This screenshot shows the same Saitek X52 Pro after a simple modification intended to correct the nonlinear response of its axes.
The picture is almost perfect except for the not very regular shape of the spiral (due to my inaccurate hands, I must confess) and the lack of precision in the near-zero zone (the stick moves softly but feels stiff when you cross the central position).
As a matter of fact, you shouldn't think about modifying serial joystick unless you are really into flight sims. I’ve only mentioned it because the simple mod helps get rid of the main downside of Saitek's X52/X52 Pro which are otherwise quite good products.
The final test in JoyTester2 is to show you that the Genius MetalStrike FF is not the worst case possible.
This is a SpeedLink SL-6630 Cougar, a joystick that has nearly any possible disease in its worst form (except for response linearity, but only because the rest of its downsides prevent us from checking that parameter out). We can see a very low axis polling rate, dead zones in the near-zero positions, and discrepancies between the movement ranges of the resistors and the stick. It also has a very bad driver which lowers its sensitivity (the resolution was 256 positions per axis with the generic Windows driver, but the joystick still was no good). I must acknowledge, however, that the electronics of other SpeedLink joysticks I've tried was not that bad as that.
FreqMeter is another testing program for joysticks. It helps estimate the real axis resolution. You can get a notion of this parameter even from JoyTester2 results (as shown in the first example) but FreqMeter is more accurate.
So, you just select one axis, click the start button in FreqMeter, and then move the axis regulator (a control stick or anything else) around. The testing tool measures the number of axis positions reported by the joystick controller and issues the average number of polls per second. As a result, you get a more or less accurate number which is usually far different from the 125 or 1000 polls per second as defined in the USB specifications.
The result is not exact, though. You can only think of it as the minimum the controller is capable of. So you may want to perform the measurement a few times and look for the highest result.
In fact, a polling rate of 50 or 40 polls per second is quite enough to control a plane with comfort. You can hardly tell the difference between 50 and 500 polls per second without any testing tools. A polling rate of 30 polls per second is rather uncomfortable whereas 20 polls per second (like with the above-discussed SpeedLink SL-6630 Cougar) is downright unacceptable – your keyboard is going to be more efficient!
There’s nothing else I can tell you about this tool. Here are a couple of screenshots: one for a Genius MetalStrike 3D and another for a Saitek X62 Pro.