Search Issue Tracker
By Design
Votes
0
Found in
2019.4
2020.3
2020.3.17f1
2021.1
2021.2
2022.1
Issue ID
1365684
Regression
No
Keycodes Less, Greater, LeftParen, RightParen are not being registered when using GetKeyDown
How to reproduce:
1. Open project "KeyCodes.zip"
2. Open "SampleScene" Scene (Assets>Scenes>SampleScene)
3. Enter the Play Mode
4. Open the Console window
5. Focus the Game window
6. Press the "K", "<"(Less), ">"(Greater), ","(Comma), "."(Period), "("(LeftParen), ")"(RightParen) keys
Expected result: Keys "<"(Less), ">"(Greater), "("(LeftParen), ")"(RightParen) are registered
Actual result: Keys "<"(Less), ">"(Greater), "("(LeftParen), ")"(RightParen) are not registered
Reproducible with: 2019.4.30f1, 2020.3.18f1, 2021.1.22f1, 2021.2.0b12, 2022.1.0a9
Notes:
-Keys ","(Comma) and "."(Period) are working
-When pressing Shift and Comma which should be "<"(Less) Editor registers Comma
-When pressing Shift and Period which should be ">"(Greater) Editor registers Period
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- “FMOD failed to set the software format to the custom sample rate…” warnings are thrown as System Sample Rate value is being changed in Audio section of Project Settings window
- VFX Marquee selection does match the visual indicator
- “Invalid AABB aabb” errors are spammed when “Infinity” value is entered in Collider Component fields
- Editor Role does not sync with the MPPM Play Mode Scenario Role when entering Play mode
- Long asset names cause overlap with the “Find” function in search result tabs
Resolution Note:
In general broad sense, keyboard keycodes cannot be used for text input, because that will not work for many languages, for example try entering emoji's for example: there are no keycodes for emoji, or try using non-Latin keyboard, like for Japanese language.
Keycodes should only be representing hardware buttons on the keyboard, that way creating game controls like WASD and shortcuts is possible regardless what your current system language is selected. Meaning keycodes should be layout independent.
Currently UnityEngine.Input contains a very old bug, where keycodes where not layout independent on most platforms. We recently fixed it by introducing "Use Physical Keys" checkbox in Project Settings -> Input Manager in 2021. You can also use input system package to get access to layout independent keycodes. Going forward, Less/Greater/LeftParent/RightParent/many others will most likely be deprecated and removed.
So assuming Less/Greater/LeftParent/RightParent were needed for text entering purposes, the correct way to do it is via UnityEngine.Input.imeCompositionMode and UnityEngine.Input.compositionString, that way users of the app can enter text in any language. To sanity check text input implementation try entering emoji's or text in non-Latin languages.