Korean characters disassembly issue
Before beginning I am aware that Apple's input methods have a TON of issues, so I just wish it's not their fault which makes it unapproachable for inidividual developers.
When typing Korean characters in WebSSH the result is different from other terminal: the characters won't assemble to create full character. It just remains consonant and vowels.
Please refer to the screencapture attached below. First line is typed in macbook with terminal application named Hyper and second on iPad with WebSSH
Originally posted by @Canorus in https://github.com/isontheline/pro.webssh.net/discussions/1367
Hi @Canorus 👋
WebSSH lacks good support for keyboard input other than latin based ones 😓
Instead of pressing left and right symbols to make composition, does the use of "swipe" could be a solution? 👇
https://github.com/user-attachments/assets/aed19093-d1e9-4716-8744-dc3172405f39
My main problem is that when you press one symbol it is sent directly to the server. But if you are doing composition you need to remove past symbol to have a new complex one. It's too late symbol is already sent.
I know that WebSSH should / must improve its keyboard logic but right now I can't rewrite it.
Do you think that a such solution (below) could be viable? 👇
Far from perfect but it could work
Hey thank you for coming up with multiple workarounds.
As a Korean native speaker most IME issues occur within char input as Korean IM takes Korean Character from the first place whereas other CJK langauges takes Alphabet as input and then converts them into respective characters. However, in this case, as issue occurs from the characters being sent over to server directly, all CJK languages should be impacted. Therefore I think it’s best to create some kind of toggle inside config panel that would delay the transmission of certain range of characters when enabled, and handle the input ‘locally’. For example, characters between U+3130 and U+318F should expect other characters for combination etc. They can be sent over to server when other keys(arrows, space, return etc.) are pressed. Oh wait, this can’t be applied to CJ languages: they accept Alphabets.
I think modal should be the way to go for the time being.
Swipe input can be an option, but most use case of WebSSH, I assume, would be on iPadOS (maybe with bt keyboard connected) which swipe input is not supported. So I don’t think swipe input is a very helpful workaround. Popup modal would be a better quick patch, but it would give worse user experience(i. e. it requires user to lift off hand from keyboard to press the modal button on screen or use additional keyboard shortcut for modal trigger) so I think it also needs to be avoided in the long term.
Hi @Canorus 👋
Thank you so much for taking the time to explain how the input methods work for Korean and other CJK languages—it’s super insightful and really helps me understand the root of the problem. Your idea of having a toggle to delay the transmission of certain character ranges until a “commit” key is pressed (like arrows, space, or return) makes a lot of sense, especially for IME composition handling.
I agree that a popup modal might work as a temporary fix, but it’s not ideal for keyboard-focused users. I’ll look into how I can implement a local buffer or composition mode that works seamlessly—without breaking the regular workflow or adding too much friction. I’m also going to dig deeper into how other terminal apps manage this, to see if there’s a more elegant solution for handling IME composition events.
Thanks again for your clear explanations and for helping me make WebSSH better for all CJK language users. If you have more ideas or notice anything new, please keep sharing!
Have a nice day ☀️ Arnaud
Hey @Canorus 👋
I think I got it 👇
https://github.com/user-attachments/assets/f1c422ee-bbe2-47c3-b859-b6aff7bc4da2
Beta release will be available tomorrow
@Canorus Now available inside latest beta release : https://testflight.apple.com/join/QSrBK59z
thank you so much for tracking this doewn this quickly. attached is video I mentioned from Flight beta feedback. Input candidates does not appear over keyboard. https://d.pr/v/91OzCb
Strange, perhaps I have made a mistake on deploy. Sorry for the delay, I'm double checking what's wrong
@Canorus Please try 29.7.1526 : https://testflight.apple.com/join/QSrBK59z
you are amazing you are incredible are you genius
yes it has its limitation - requires hand leave the (external) keyboard - but this can be a really nice kind of quick patch for quite a time. thank you thank you so much!! @isontheline
You’re welcome @Canorus Thank you so much for your feedback and support!
I will improve WebSSH over time for full keyboard (external) support.