I understand how it works (or at least I think I do) and why people consider it cheating; what I’m saying is that that’s just how keyboards usually work and the reason why they don’t always work that way in games is an intentional decision.
Don’t believe me? Open up a word processor. Hold the A key. Notice how it starts entering a line of As? Now, while holding the A key, press and hold the D key. It should start entering a line of Ds. Then, when you release the D key but keep holding the A key, it should start entering a line of As again (at least that’s what used to happen). This is the most likely to work if your keyboard has true n-key rollover, but it may still work regardless.
If that doesn’t work, try a different key combo, your keyboard may be losing inputs due to conflicting inputs (or word processors may have changed how they deal with simultaneous keypresses). Cheap keyboards will combine sets of keys to cut down on complexity and cost, however it can result in some key combos becoming impossible to input. That’s why n-key rollover is awesome.
So why does holding strafe left/right (and forward/back) result in null combinations?
I suspect that it’s due to controller support. Instead of having a series of if-then statements which directly translate a keypress into movement (something a lot of new game developers do), they’re likely translating keypresses into a 2d vector which gets applied to your character’s movement speed. An “A” press would correspond to “1”, a “D” press would result in “-1”. These get combined and become “0”.
Why do it that way?
Because controllers use analog input, so you aren’t going to get a “1” or “-1” without fully tilting the stick. However, a half-tilt shouldn’t result in a “1”, it should result in a “(-)0.5”. That “0.5” is then multiplied by the player’s move speed and (optionally) the player’s current vector gets interpolated to the new vector.
So what is the keyboard doing that stops the null state from occurring?
It’s basically overriding the A key when the D key is pressed (not sure if it’s actually “lifting” the A key or just throwing away the input, either works) or vice versa; and then pressing the A key again when the D key is released (assuming the A key is still being held). You can make a macro to simulate this behavior.
As far as sensitivity thresholds go, so what? People have been able to do that with analog sticks (and sometimes analog triggers, depending on the game) for like, forever. Hell, you used to be able to mix controller, keyboard and mouse controls to get analog movement and mouse control (like those standalone “macro/num pads” with the thumb stick). I dunno if it’s still possible or if driver changes have nullified it, but regardless, imo analog keyboards are overdue. Getting mad about it is like someone getting mad about mouse-look in the 90s.