thamizha / ekalappai

An opensource keyboard manager
http://thamizha.org/projects.html
18 stars 11 forks source link

"uyirezhuthu" typed after pressing backspace does not join with the previous "mey" #15

Open digital-carver opened 9 years ago

digital-carver commented 9 years ago

If I type கி, then press backspace to remove the vowel, then press the உ key, I expect to get the உ joined with the previous existing vowel to give கு. This is how the Tamil99 mode in Linux's SCIM behaves, for example, and it also seems the most useful thing to do - the current implementation instead leaves us with கஉ in that place, which is rarely the desired result.

digital-carver commented 9 years ago

I notice an interesting approach that the Linux SCIM keyboards actually take, that might be useful here. When you type something using the tamil keyboards (either Phonetic or Tamil99) in SCIM, the current letter being typed appears selected. And as long as it's selected, you can make sub-letter edits, such as for eg. removing the இ from கி and then typing உ to get கு, and so on.

But once you have finished with that letter and the selection is gone (by typing either space or any other letter), it changes to ekalappai's current way of doing things, where the இ can be removed from the previous letter but typing a உ will just create an உ letter rather than changing the previous letter. So you can easily switch between editing the existing letter and creating a new uyir letter in the middle of the word (for poetry or scientific words maybe).

The only disadvantage to SCIM's implementation is that pressing Space just removes the selection from the previous letter and gets out of the subletter edit mode, and to actually type a space character after a word you have to press shift-Space. We can reverse this in ekalappai though, since we would want typing the actual space character more commonly than we would want early completion of the current letter.

The behaviour is pretty tough to describe without showing a demonstration of it - though it's very easy to use in practice - so I hope my description above makes sense to someone.

PS: I've set up a development environment for ekalappai and might get to hacking on such features myself, but I'm putting out a public issue here in case someone else is interested too.