- Home /
Why does GetKeyDown("[5]") fail?
Unity 3.0 - Testing in the Editor Game Window
the first 3 key strokes capture work great:
if (Input.GetKeyDown("home")) { //keypad 'Home'
//do something... that works fine
}
if (Input.GetKeyDown("page up")) { //keypad 'PgUp"
//do something... that works fine
}
if (Input.GetKeyDown("5")) { //this is the Alphanumeric '5'
//do something... that works fine
}
this line fails: but no errors (this is the keypad '5' not the 'Alpha5')
if (Input.GetKeyDown("[5]")) {
//do something...this code never executes
}
Can someone explain why the keypad 5 does not work? I have read the may pages that treat keyboard keys capture, in vain. If I try various syntax instead of "[5]" the compiler complains that the Input Key Name is unknown. Thus the compiler agrees with the keycode, but the stroke on the keypad 5 is not captured.
Thank you.
Answer by Mike 3 · Nov 01, 2010 at 09:01 PM
I'd just start using the KeyCode enumeration version instead - you get compile time warnings instead of runtime ones (which are not compiler errors, they're just Debug.LogError messages)
if (Input.GetKeyDown(KeyCode.Keypad5)) {}
if (Input.GetKeyDown(KeyCode.Alpha5)) {}
Even though "[5]" looks correct though, could be something silly like numlock not being on?
you beat me to it... I kept investigating and came back to state that my numlock was OFF LOL...(silly indeed). Thank you.
...but now the problem is how to capture the $$anonymous$$eypad5 if NumLock must be OFF... hmmm is it even possible?
Perhaps remapping the keypad keys to the numlock state so the arrow key still function via Input.GetAxis
I am going to put this one on the back-burner(tooo many changes to make if remap) and use $$anonymous$$eyCode.$$anonymous$$eypadEnter ins$$anonymous$$d, or any other key on the keypad that are live while numlock is OFF.