Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bad layouts for Indian languages #900

Open
tenextractor opened this issue Jun 23, 2024 · 9 comments
Open

Bad layouts for Indian languages #900

tenextractor opened this issue Jun 23, 2024 · 9 comments
Labels
bug Something isn't working

Comments

@tenextractor
Copy link
Contributor

tenextractor commented Jun 23, 2024

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:

  • Bangla (India)
  • Kannada (India) and Kannada Extended
  • Marathi (India)
  • Tamil (India and Singapore)
  • Telugu (India)

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

  • Malayalam (India)

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.

@tenextractor tenextractor added the bug Something isn't working label Jun 23, 2024
@pixincreate
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Contributor

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
Copy link
Contributor Author

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

@pixincreate
Copy link
Contributor

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

@GrimPixel
Copy link

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

@pixincreate
Copy link
Contributor

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.

@tenextractor
Copy link
Contributor Author

tenextractor commented Sep 1, 2024

For South Indian languages, the best implementation is described in https://www.youtube.com/watch?v=kNwVybjm3h8 . It has been implemented for Kannada, Tamil and Telugu in Redefinable Keyboard.

@RHJihan
Copy link
Contributor

RHJihan commented Feb 19, 2025

#1374 should solve this issue for Bengali (India).
#1373 will introduce the Baishakhi layout for Bengali (India).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants