Page 1 of 1

CE hidden input buffering

Posted: Sun Nov 19, 2017 1:44 am
by Personwithhat2
Hey there,

There's some hidden input buffering, easily reproduced using the FPS template, (typical WASD controls):

Press Left + Backward + Right (at the same time, and hold all 3 keys).

Now press (and hold) forward. Does it trigger? Nope.

Now let go of Backward. Forward triggers as if it's just been pressed!


I've traced this all the way down, BaseInput doesn't have it triggered etc. so I think it's input-device level buffering.

Could someone please explain what's going on? Is it just my keyboard? Some weird Windows 10 quirk? You can still press and trigger other buttons sigh......

Re: CE hidden input buffering

Posted: Sun Nov 19, 2017 6:37 am
by fury22uk
If you're talking about original fps template, they use bit flags for wasd inputs. And opposite directions nullify themselves in UpdateMovementRequest. Cause for example.. move left applies velocity.x -= 1.f and move right does velocity.x += 1.f. the end velocity is 0 then. Same goes to forward end backward. So if you hold backwards and press forwards, velocity.y will be 0, and when you release backwards, velocity.y will be 1. This method is updated every frame.

Re: CE hidden input buffering

Posted: Sun Nov 19, 2017 6:51 am
by Personwithhat2
Nope.

If you hold backward + forward = they cancel each other.

BUT what I'm saying is that the 'forward' button doesn't get triggered (so you keep moving backward and what not). It's a delay not on the level of action-maps but somewhere deeper.

Re: CE hidden input buffering

Posted: Mon Dec 04, 2017 5:47 pm
by Cry-Flare
Hi there,

This is more likely due to your keyboards rollover limitations.

You can check your n-key rollover limitations by using Microsoft's online testing page here;
https://www.microsoft.com/appliedscienc ... gDemo.mspx

It is mostly due to the way the keyboard trace layers are setup, certain keys use the same trace path underneath to detect key presses, this is why sometimes with water damage, a certain set of keys is broken, where as other keys are fine.

More information on the wiki site here;
https://en.wikipedia.org/wiki/Rollover_(key)

Re: CE hidden input buffering

Posted: Tue Dec 05, 2017 5:58 pm
by Personwithhat2
Ah my bad!

Didn't know about this, thanks for clarifying!

Re: CE hidden input buffering

Posted: Thu Feb 15, 2018 3:12 pm
by fury22uk
Did you resolve this issue? I experience exactly same issue. Tried on a few keyboards of different branch

Re: CE hidden input buffering

Posted: Fri Feb 16, 2018 9:29 am
by Cry-Flare
This problem is not a CE issue, as explained in the previous post it is a hardware limitation of your keyboard device(s).

Re: CE hidden input buffering

Posted: Fri Feb 16, 2018 1:03 pm
by ivanhawkes
I have a Corsair K95 RGB which has no rollover key limitation. It's a pretty pricey mechanical keyboard - you get what you pay for. I went and tested the issue you are having with my codebase. I was able to hold down a whole bunch of keys and still get events through on others e.g. crouch while holding down WASD, etc.

The Windows driver can also be a source of problems, if not written well enough. In the bad old days they would often only hold up to 10 keystrokes, and then the bell would ring when the buffer overflowed, leading to a ding ding ding noise if you held down a key after a lock up.

Most keyboards should be able to deal with more than 3-4 keys being held so maybe you are just unlucky or spent a little too little on a keyboard.

Any of the mid-range gamer keyboards should have a lot more rollover potential than the one you are using.