ValveSoftware / SteamOS

SteamOS community tracker
1.6k stars 70 forks source link

External keyboard bug on Korean input #884

Open Alex4386 opened 2 years ago

Alex4386 commented 2 years ago

Your system information

Please describe your issue in as much detail as possible:

Describe what you expected should happen and what did happen.

All of the "intermediate-inputs" are inputted into application if I type Korean with external keyboard.

Screenshots

Expected Results:

image

Actual Results:

image

Notice the ㅇ아안 ㄴ녀녕 .
The intermediate inputs for entering , ( ) and 녕 ( ) is all being inputted to the application.

Extra explanations

Korean 2-Set keyboard composes character by getting multiple keystrokes to create a one single character. For example: in order to enter :

  1. Press to make
  2. Press to make This is where input handler comes to play, combining characters, you can use libhangul for implementing this
  3. Press to make
  4. When input handler detects that character is complete input handler returns a finalized character
    • Depending on next keystroke that can not compose using previous character (in this case, ) (Counter example: after can compose into )
    • Leaving the input field entirely

The problem here is ibus-hangul has changed default behavior how intermediate inputs (, , ) is displayed via application (via ibus's surrounding-text), and since application can not handle it (application only supporting xim only), It inputs into application, inputting all intermediate inputs (, , ) and composed input (), ruining user's input.

Steps for reproducing this issue:

  1. Go to Desktop mode
  2. Bring up the SteamDeck's on screen keyboard via STEAM+X, and Press the Globe key to change language to Korean Check the input method was changed to ibus-hangul at the status bar.
  3. Plug in external keyboard
  4. Open up applications that does not support ibus's surrounding-text mode. (e.g. Discord, VSCode (Electron app), Google Chrome, etc.)
  5. Type Korean in any input field in
  6. See application outputting bunch of:
    IBUS-WARNING **: HH:mm:ss.sss: [Application name] has no capability of surrounding-text feature

    and applications are displaying bunch of "intermediate-input" characters

Related Issue

https://github.com/libhangul/ibus-hangul/issues/69

Notes

Possible solution

  1. Use ibus-hangul's buggy preedit-mode based implementation by setting dconf /org/freedesktop/ibus/engine/hangul/preedit-mode to "syllable".
    • This will break current Steamdeck's on screen keyboard
    • This implementation has previously known for constant ignoring of keypresses
  2. Wait for application developers to implement proper surrounding-text support
  3. (RECOMMENDED) Use other implementation of Korean input that has proper fallback support for xim.
Alex4386 commented 1 year ago

Any updates on this? It seems you are now launching SteamDeck to South Korea in this december.
And It seems the Issue is still persistent.