daemon3000 / InputManager

Custom InputManager for Unity
Other
587 stars 88 forks source link

Dual shift key issue #42

Closed shaderbytes closed 6 years ago

shaderbytes commented 6 years ago

Unity has had a bug in using dual shift keys for 10 years already , I finally thought i will look for some alternative solution because they are never fixing it, while testing your first sample seen "01 - Controls Menu" "Example_1" I bind a new binding to use multiple shift keys to test , i made forward be left shift and one of the horizontals be right shift. Just to find out you custom input system suffers from the very same bug as unity. The bug is press the first shift , all is good , press the second shift while holding the first shift, all is good , now release the second shift - all is not good!!. The key release is not picked up. When you relase the first shift now you will see it fire the release for both shifts. If does not matter in what order you do this , leading left or leading right , the second pressed shift key release is not detected but when the first pressed shift is released ( if the second shift was pressed during its down time ) then both release events are fired.

So that sucks, I dont know how your tool is built but it is now obvious it is not a serious low level plugin capturing key events itself .. it is using the broken Unity system somehow. How else can you have the exact same bug? This is not keyboard ghosting , dual shift works fine in any other application except for unity and it has being broken like this and forum posts and bug reports and still they dont fix it.

Anyway cool you have some free tool , i would have been awesome if it worked , just perhaps put a disclaimer up somewhere in the info that your tool suffers from the same input bugs as unity

daemon3000 commented 6 years ago

This plugin started out as a simple wrapper around Unity's input to allow me to rebind keys at runtime so no it doesn't capture key events or anything low level like that. The only thing I don't use Unity's input for is gamepad support which is done through XInputDotNet.