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
- Error "Light baking failed with error code 5 (Convergence data not available while rendering lightmaps)" thrown in Console when generating lighting for specific GameObjects
- Copy and Paste options for an Animation Property value are disabled in the Right click contextual menu
- Asset is not found when searching the Label "NewLabel" in Search Window
- "Compute dispatch: missing texture ID..." and "Compute dispatch: missing UAV ID..." warnings are thrown after changing the platform in High Definition 3D template
- Text is culled by size when Content Size Fitter is small and rich text is used
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.