Search Issue Tracker

Won't Fix

Votes

2

Found in [Package]

1.1.0-preview.2

Issue ID

1303996

Regression

No

[New Input System] IsPressed() function will return true every frame when switching writing style using Japanese IME

Package: Input System

-

How to reproduce:
1. Have Japanese IME installed
2. Open the attached "Keyboard" project
3. Open the Scene "SampleScene"
4. Enter the Play Mode
5. Change the keyboard input to Japanese IME
6. In the Game view press on the text field
7. Press "Shift" + "CapsLock" to change the typing style

Expected results: A message in the Console window is printed only once for the "CapsLock"
Actual results: A message for "CapsLock" being pressed will be printed every frame until the "CapsLock" is pressed again

Reproducible with: 1.0.0-preview.5, 1.1.0-preview.2 (2019.4.18f1, 2020.1.17f1, 2020.2.2f1, 2021.1.0b2, 2021.2.0a1)
Could not test with: 1.0.0-preview.4 and earlier because the "IsPressed()" function was not yet introduced

Notes:
- The issue is not reproducible when using "Keyboard.current.capsLockKey.wasPressedThisFrame" function
- Pressing the "CapsLock" will stop it from being printed
- The issue is reproducible when pressing these key combinations:
Ctrl + CapsLock (CapsLock will get stuck)
Ctrl+ BackQuote (BackQuote will get stuck)
Alt + CapsLock (CapsLock will get stuck)

  1. Resolution Note:

    This is due to an unfortunate quirk (or bug) with Window key events.

    When the Japanese keyboard is selected, Windows fails to dispatch a WM_INPUT message for CAPSLOCK key release while a modifier key (Shift, Ctrl, Alt) is held down. That is, Unity doesn't receive a "key up" event from the OS indicating CAPSLOCK was released in this scenario and therefore continues to report the key is pressed.

    There's not much we can do about this right now.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.