Julow / Unexpected-Keyboard

A lightweight virtual keyboard for developers.
GNU General Public License v3.0
1.52k stars 192 forks source link

[FEATURE REQUEST] Allow to type the alphabet keys before using modify key to add accent marks #431

Open SweetSea-ButImNotSweet opened 1 year ago

SweetSea-ButImNotSweet commented 1 year ago

First I have searched all of the repo so it should not be duplicated

In most languages, when typing a character with accent marks, the modify key will be pressed first then the alphabet key

But this is not the same with Vietnamese, because the alphabet keys will be pressed first then the modify keys

Take a short example: P/s: the QWERTY (Vietnamese) is based on Telex method so you should see they are similar Xin chào các bạn --> Xin chafo casc bajn (in other IMEs/keyboard apps) But right now the modify key must be pressed first then I have to type: Xin ch<swipe up-left f>ao c<swipe up-left s>ac b<swipe up left j>an

This create a inconvenient for me to type because I (or most Vietnameses are familiar with typing alohabet keys first then modify keys)

Hope you will understand

Julow commented 1 year ago

This would be a nice addition. Anyone interested in implementing it?

zuobot commented 1 year ago

+1 for this feature. I myself is Vietnamese, and love Unexpected keyboard for coding purpose and English input. But for Vietnamese input, I found it's really awkward for the current typing method.

The most popular input method in Vietnamese is Telex. (Wikipedia has a nice explanation of this method. To sum up, it's like what @SweetSea-ButImNotSweet mentioned above: Type main alphabet key first, then modifier key later.

I also want to give a hand with my limited programming as a newbie, but don't know where to start. Any advice on what file / function I need to look for @Julow ?

Julow commented 1 year ago

@zuobot Sorry for the slow reply! This feature would probably have to be implemented in KeyEventHandler.java. Pressing a character keys immediately result in a send_text. You would certainly need to remember the last few typed characters, similarly to Autocapitalisation (see _autocap.typed(text);). The different kinds of keys are defined in KeyValue.java.