(It's just an idea. I did not know where else to post it.)
Let's assume we got an 8 way joystick and we want to play 4 way games. Now, unfortunately, some games will get a little confused when using that 8 way joystick, as they don't recognise the diagonals.
So, we don't want diagonals, and thus decide to add restrictor plates. Great solution, but costly, mechanically troublesome, etcetera.
I was wondering if there was no other solution, and perhaps there is one. This would need either a little 'add-on' board for your controller, or it could be done by the controller software itself (all *pac's and *wiz's may want to take notes now

)
Here are two solutions, the 'reluctant' and 'aggressive' approach.
Method 1: the 'reluctant' approach:
- When moving from a horizontal / vertical to a directly adjacent diagonal we stick with the last input. Only a movement towards a new horizontal / vertical (without a diagonal component) will change the 'direction information'. In other words, cutting a corner in packman means you'll have to be exactly spot on, BUT you're never stuck.
- Hitting the 'opposite' horizontal / vertical will change the direction that way, regardless of a diagonal component.
Method 2: the 'aggressive' approach:
- When moving from a horizontal / vertical to a directly adjacent diagonal means the user wants to change direction. To give the fastest / sharpest input possible, we'll immediately change direction into the expected next horizontal / vertical, ie. we assume that the user is going to move to the next 90 degrees position.
Does this make sense? When reading it back, I think I should reword it perhaps, but I hope you see what I mean.
Such an 'electronic' feature would make a great addition to our encoders / controllers, and could perhaps be realized entirely in the software / drivers (at least for USB modules).
It's just an idea, one could probably test it with a little TTL. Anybody care to comment on it?