Why not just have built in software recalibration?
If a neutral joystick is supposed to output (0,0). Ask the user to take their hands off the joystick for a min, if its default is sending out (-1, -5), then adjust the values by that amount.
If a neutral joystick is supposed to output (0,0). Ask the user to take their hands off the joystick for a min, if its default is sending out (-1, -5), then adjust the values by that amount.
Unfortunately, recalibration only "fixes" minor stick drift and, due to how the sticks wear, drift tends to go from "minor" to "major" really quickly.
The issue is that the stick will eventually report an increasingly unpredictable position. So it's not an issue of it predictably reporting (-1, -5) at rest, it's more like random values from -5 to 5 in both axes. This also affects the direction when actually pressing the stick so pushing the stick "north" may cause you to move N, NNW, _or_ NNE and unpredictably so.