Helium314 / HeliBoard

Customizable and privacy-conscious open-source keyboard
Apache License 2.0
1.84k stars 67 forks source link

Bad layouts for Indian languages #900

Open tenextractor opened 5 days ago

tenextractor commented 5 days ago

Several layouts for Indian languages are bad, to the point of being borderline unusable. Mainly, this has to do with the lack of a shift key and the handling of independent and dependent vowels.

Each vowel has two forms, an independent form when not attached to a consonant, and a dependent form, when attached to a consonant. Depending on the script, the dependent forms can be either placed to the left of, to the right of, above, below, or on both the left and the right sides of the base consonant.

(from Wikipedia: Brahmic Scripts)

And while both independent and dependent vowels are required, the dependent vowels are more frequent, so in the InScript standard for Indian keyboard layouts, the dependent vowels are on the base state and pressing Shift together with a dependent vowel results in an independent vowel. There are also other characters, accessed by the Shift key. The Hindi layout is a good example of this.

The issue is that many layouts in HeliBoard do not follow this standard completely, and they use long presses to access either dependent vowels or independent vowels and other characters instead of Shift, which considerably increases the effort required to type anything.

For example, to type "বাংলা ভাষা" ("Bengali language") on the Bangla (India) layout, the required input would be: ব + hold আ, move to the left and select া + hold ঁ , move and select ং + ল + hold আ, move and select া + space + hold ব to get ভ + hold আ, move and select া + ষ + hold আ, move and select া Had this layout followed InScript properly it would be (Source for Bangla InScript layout): ব + া + ং + ল + া + space + shift + ব (= ভ) + া + shift + , (= ষ) + া

This is just unacceptable.

I know that these layouts were inherited from AOSP but these layouts are absolutely unusable. There is no reason to have defective layouts like these just because they were inherited from AOSP, they must be changed. The vast majority of Indians convert their language to Latin script and write it with an English QWERTY keyboard anyway, that combined with the issues with these layouts means that I'm sure no one using HeliBoard is using these layouts. And the keys don't need to be completely rearranged, the layouts only need a Shift key and minor adjustments.

Affected layouts:

Layouts that don't resemble InScript, for which further thought is needed on what to do:

The ultimate solution would be to automatically change the dependent and independent vowels based on the context like in GBoard, but that would need complex logic to be integrated into the keyboard, so at least as a temporary solution, the layouts need to be modified with a Shift key.

I know that I am just one person suggesting this change, so I request feedback from @pixincreate and anyone else who has knowledge on Indian languages.

pixincreate commented 5 days ago

With respect to what you've mentioned in the issue description, I do agree, GBoard is designed better to handle native languages.

I would also want to let you know that this is an open source project and is being maintain by contributors in their free time. In order to accommodate the logic to update dependent and independent vowels, will require significant efforts and time being spent on it. And yes, it is not that every language spoken in India is same, so, the logic will have to be tweaked again. This will become a headache for sure.

I raised the PR adding new layout only to address that. After learning that it requires significant efforts, modified the layout such that long pressing the vowels, will give you a part of it that is required for consonant to make it meaningful. This is intuitive IMO.

I guess, it is better to mark this issue as help wanted and let some contributor pick this up if interested.

Feel free to go through the entire PR to see why this decision was made.

tenextractor commented 5 days ago

Thanks, I was just asking for feedback on my proposal to edit the layouts of Indian languages. The current stance is that the old layouts are from AOSP and should not be changed, but I think this should not apply to these layouts as they are just too bad.

I understand that it's an open source project, and my current proposal is just to edit the layouts to better match InScript layouts, for which no logic is needed and just the layouts need to be changed. Contribution is not an issue, I will submit a PR if I get the permission to change the old layouts.

I will try to implement Gboard-like logic as well if time allows, but that is a more long term project and outside the scope of this issue.

pixincreate commented 5 days ago

There might be people who're used to the existing layouts and the intention is to not hamper their usability. I believe additional layouts can be added on top of existing old layouts.

tenextractor commented 5 days ago

In that case, can we make new layouts as the default and mark the old layouts as (Legacy)?

pixincreate commented 5 days ago

That I cannot say, I feel it's better to wait the developer's response on this.

GrimPixel commented 3 days ago

As I mentioned at https://github.com/Helium314/HeliBoard/issues/786, a pie menu works better. https://upload.wikimedia.org/wikipedia/commons/b/b5/Hindi_layout.png

pixincreate commented 3 days ago

As I mentioned at #786, a pie menu works better. https://upload.wikimedia.org/wikipedia/commons/b/b5/Hindi_layout.png

The similar has been implemented in Kannada Extended. For vowels, you would have to long press vowels section.