ibus / ibus

Intelligent Input Bus for Linux/Unix
https://github.com/ibus/ibus/wiki
GNU Lesser General Public License v2.1
865 stars 179 forks source link

Vietnamese Telex is not flexible enough #2445

Open KSXGitHub opened 1 year ago

KSXGitHub commented 1 year ago

When I want to type the phrase Xin chào mọi người on Android and Windows, I usually type Xin chaof moij nguoiwf (diacritic after each word). This typing order emulates Vietnamese handwriting order.

But ibus forces me to type Xin chafo moji nguwowfi (diacritic after every character) which is very awkward and unnatural.

Request: Please make the handwriting order possible.


Current workaround: ibus-unikey and ibus-bamboo provide better typing experience, but having to install extra packages is an inconvenience and an unnecessary bother that would make Linux appears unfriendly to Vietnamese.

mike-fabian commented 1 year ago

I will have a look.

mike-fabian commented 1 year ago

Actually, chaof and moij work for me, only nguoiwf does not work.

When using vi-telex either with ibus-m17n or with ibus-typing-booster (does not matter with which of these two, the results seem to be the same), I get:

chaof ➡️ chào moij ➡️ mọi nguoiwf ➡️ nguoìw

KSXGitHub commented 1 year ago

@mike-fabian Interesting, your results differ from mine: I got xin chaò moị nguoiwf when trying built-in Vietnamese Telex.

System Information:

I enabled vi-telex on ibus by going to GNOME Settings → Keyboards → Input Sources, then add Vietnamese (Telex):

screenshot

KSXGitHub commented 1 year ago

BTW, what is the purpose of ibus-m17n? Its README doesn't tell me anything other than it's a M17N engine.

mike-fabian commented 1 year ago

The Vietnamese (Telex) you see in that list is actually the "Telex" table from ibus-table.

You see that if you click on the ⋮ menu and choose "Preferences”, you see that this is a table of ibus-table, see the window title of the setup tool:

Screenshot

mike-fabian commented 1 year ago

The source for the telex table is here:

https://github.com/mike-fabian/ibus-table-others/blob/main/tables/telex.txt

As you can see, these ibus-table tables are kind of primitive, there are just 3 colums like this:

UW  Ư   0
UW\ Ư   0
UWF Ừ   0
UWS Ứ   0
UWR Ử   0
UWX Ữ   0
UWJ Ự   0

First column is the input, second column is the output, the third column is not even used here (it is used for prioritizing results which are not unique, mostly for Chinese but not used for this Vietnamese telex table, the third column is always 0 here).

As ibus-table just does primitive tables like this, no logic like whether vowels came before is possible.

But in my screenshot you can also see

Vietnamese (vi-telex (m17n))

just below the “Vietnamese (Telex)” line.

I thought that was what you meant with “vi-telex”, this ibus-m17n input method is actually called “vi-telex”, not just “Telex”.

mike-fabian commented 1 year ago

Here I opened the setup tool of “Vietnamese (vi-telex (m17n))”, this is a completely different ibus engine, it is ibus-m17n, not ibus-table:

Screenshot

mike-fabian commented 1 year ago

Both ibus-table and ibus-m17n offer a lot of different input methods for many languages.

ibus-m17n offers all the input methods contained in the m17n-db package, i.e. all the files ending with .mim in the /usr/share/m17n/ directory if you have m17n-db installed.

If you look into the file:

/usr/share/m17n/vi-telex.mim

you see that it does complicated stuff written in a Lisp dialect. It does far more than the primitive telex table of ibus-table.

mike-fabian commented 1 year ago

BTW, what is the purpose of ibus-m17n? Its README doesn't tell me anything other than it's a M17N engine.

It is an ibus engine to support all m17n-db input methods, i.e. all the input methods defined in the /usr/share/m17n/*.mim files.

All the files /usr/share/m17n/*.mim can be used by two ibus engines:

ibus-m17n is simpler, more primitive. ibus-typing-booster has much more features like word completion and spellchecking.

mike-fabian commented 1 year ago

In this video I type chaof, moij, and nguoiwf with ibus-m17n, with ibus-typing-booster, and with ibus-unikey:

https://user-images.githubusercontent.com/2330175/189739253-677c0559-0b50-41f3-8ea7-3673781601e8.mp4

mike-fabian commented 1 year ago

In the video you can see that all 3 ibus engines get

chaof ➡️ chào moij ➡️ mọi

correct, but only ibus-unikey gets

nguoiwf ➡️ người

correct, ibus-m17n and ibus-typing-booster do

nguoiwf ➡️ nguoìw

mike-fabian commented 1 year ago

I would say forget about ibus-table and “Vietnamese (Telex)”.

But vi-telex in ibus-m17n and ibus-typing-booster is already pretty close to doing the correct thing.

We “only” need to improve /usr/share/m17n/vi-telex.mim to get this right, then it will work both in ibus-m17n and ibus-typing-booster.

Improving /usr/share/m17n/vi-telex.mim is probably not trivial, but it should certainly be possible.

KSXGitHub commented 1 year ago

I shouldn't have put vi-telex in the title. So can this ibus-table be improved? Or was it too primitive?

KSXGitHub commented 1 year ago

If ibus-table was too primitive, I propose removing it as it provides an inferior out-of-the-box experience compared to other platforms such as Windows and Android (this probably applies for other languages as well). Instead, the system should points user towards installing additional typing package such as ibus-unikey, ibus-bamboo, or ibus-typing-booster. Though I don't know if this is an ibus problem or a distribution/DE problem.

KSXGitHub commented 1 year ago

Checking the package list reveals that it was a distribution problem: My distro ships ibus-table by default.

mike-fabian commented 1 year ago

I shouldn't have put vi-telex in the title. So can this ibus-table be improved? Or was it too primitive?

I think it is basically impossible to improve ibus-table to do a decent job for Vietnamese.

mike-fabian commented 1 year ago

Checking the package list reveals that it was a distribution problem: My distro ships ibus-table by default.

That is OK, ibus-table is good for some languages (e.g. it has some good stuff for Chinese).

The different tables for ibus-table are usually in different additional packages. For example on Fedora there is:

[mfabian@fedora ~]$ rpm -qa | grep ^ibus-table
ibus-table-chinese-1.8.9-2.fc37.noarch
ibus-table-extraphrase-1.3.9.20110826-21.fc37~bootstrap.noarch
ibus-table-chinese-array-1.8.9-2.fc37.noarch
ibus-table-chinese-cangjie-1.8.9-2.fc37.noarch
ibus-table-chinese-cantonese-1.8.9-2.fc37.noarch
ibus-table-chinese-cantonyale-1.8.9-2.fc37.noarch
ibus-table-chinese-easy-1.8.9-2.fc37.noarch
ibus-table-chinese-erbi-1.8.9-2.fc37.noarch
ibus-table-chinese-quick-1.8.9-2.fc37.noarch
ibus-table-chinese-scj-1.8.9-2.fc37.noarch
ibus-table-chinese-stroke5-1.8.9-2.fc37.noarch
ibus-table-chinese-wu-1.8.9-2.fc37.noarch
ibus-table-chinese-wubi-haifeng-1.8.9-2.fc37.noarch
ibus-table-chinese-wubi-jidian-1.8.9-2.fc37.noarch
ibus-table-chinese-yong-1.8.9-2.fc37.noarch
ibus-table-code-1.3.13-2.fc37.noarch
ibus-table-cyrillic-1.3.13-2.fc37.noarch
ibus-table-latin-1.3.13-2.fc37.noarch
ibus-table-mathwriter-1.3.13-2.fc37.noarch
ibus-table-mongol-1.3.13-2.fc37.noarch
ibus-table-others-1.3.13-2.fc37.noarch
ibus-table-translit-1.3.13-2.fc37.noarch
ibus-table-tv-1.3.13-2.fc37.noarch
ibus-table-1.16.12-1.fc37.noarch
ibus-table-devel-1.16.12-1.fc37.noarch
ibus-table-tests-1.16.12-1.fc37.noarch
[mfabian@fedora ~]$ 

The Vietnamese tables are in ibus-table-tv-1.3.13-2.fc37.noarch:

[mfabian@fedora ~]$ rpm  -ql ibus-table-tv-1.3.13-2.fc37.noarch
/usr/share/ibus-table/icons/telex.png
/usr/share/ibus-table/icons/thai.png
/usr/share/ibus-table/icons/viqr.png
/usr/share/ibus-table/icons/vni.png
/usr/share/ibus-table/tables/telex.db
/usr/share/ibus-table/tables/thai.db
/usr/share/ibus-table/tables/viqr.db
/usr/share/ibus-table/tables/vni.db
[mfabian@fedora ~]$ 

tv seems to mean Thai and Vietnamese as this package contains a few Vietnamese and a Thai table to be used with ibus-table. I wonder who came up with the strange package name tv.

So it is no problem for you if ibus-table is installed by default, just the package(s) containing the Vietnamese tables (telex.db, viqr.db, vni.db) should not be installed by default.

mike-fabian commented 1 year ago

If ibus-table was too primitive, [...] (this probably applies for other languages as well).

For some languages ibus-table is good. I think some of the Chinese tables are pretty good.

mike-fabian commented 1 year ago

ibus-unikey, ibus-bamboo, or ibus-typing-booster.

On Fedora, we don’t have ibus-bamboo (yet), might be nice if somebody packaged that.

We have ibus-unikey and ibus-m17n and ibus-typing-booster, all 3 seem to do a decent job for Vietnamese although ibus-unikey seems to be better.

But it looks to me that ibus-m17n and ibus-typing-booster can be improved to be equally good as ibus-unikey.

We would just need to improve the file /usr/share/m17n/vi-telex.mim, it is used by both ibus-m17n and ibus-typing-booster, i.e. improving that file improves both.

zenfas commented 1 year ago

@mike-fabian Can you take a look at ibus-bamboo at github.com/bambooengine, this new engine fix some issue on unikey also. I think need to improve vi-vni.mim and vi-telex.mim (just few people use vi-viqr.mim) in m17n-db first. Currently, I see not flexible with "ou", I list some words: quới (telex: quoiws or quowsi, vni: quoi71 or quo71i) , thưởng (telex: thuongwr or thuowrng or thuwowrng or thuwowngr, vnix: thuong73 or thu7o73ng or thu7o7ng3), thuở (telex: thouwr, vni: thou73)