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

Rework of UK and RU standard layout plus added extended layout (similar to PC keyboard) as optional #1215

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

Quantom2
Copy link

@Quantom2 Quantom2 commented Nov 17, 2024

As a native UK and RU speaker and newcomer from other keyboard apps, I found RU and, mostly, UK layouts so much uncomfortable, in comparing to others, so I come and make rework of exiting layouts

I maked this changes:

  1. Fill language locale_key_texts for both RU and UK, where alternate letter exists.
    1.1) Update it bazed on Helium replys.
  2. Reworked baze layout, adding more useful popups and variants.
  3. Make both RU and UK layouts fully capable to multilanuage typing by 1) and 2), its now possible to fully type UK sentense on RU layout and vice versa.
    3.1) Now this is fully optional, using multilanguage typing.
  4. Added extended layouts to more customizable expirience (they similar to some other layouts). Reused extended layout class from Hungarian. No impact on performance.
    4.1) There is eazy way to re-add old baze layout for UK, It could be done later or can br done now, waiting for reply.

More detail explanation of all changes are in this commit, or in diff compare below.

The changes are final an fully tested by me localy. Keyboard works properly.

All changes are in way described in this guidelines

Why this changes should be in baze Heliboard

Ukrainan:
As a native speaker, usage of 'ї' when it attached as popup to 'і' are not comfortable, because 'ї' it is not just vatiant of 'і', this is separate letter, with separate sound, and it used quite often. For exmple, our analog to english 'she's' or 'belongs to she' is literaly written as 'її'. Not only one, but two of this letter! And, we use he/she much more common in speaking, than in english, so this are much more suitable and overall just less time consuming when you have separate 'ї' letter, instead of 'hold on 'і', choose 'ї', repeat it again to type 'її'. ' Additionaly, keyboard have space for this – third row are anyway densier that 1 even with additional 'ї' key. And lastly, all other keyboards on market added 'ї' as separate letter long time ago with no problem and this make life only easier to native ukrainian speakers.
Additionaly, I had provided old popup with 'ї' to'і', for making change less problematic, but it have problems described there

Ukrainian and Russian both:
The additional locale_key_texts for both languages just overall make typing more flexible and allow proper usage of multilanguage typing now. There no harm in this, only benefits.
Updated. Now multylanguage popups will show only if you already selected multilanguage typing, othervise you will not see this.

Additional hints to layouts provided are added to be consistent with other keyboards on market, that have same options in popups and many people find it wery comfortable to use.
Resolved, now it should work for anyone who updates from 2.2 and below, 'cause now redundant popups is disabled by default

Additional Extended layouts added for more flexibility in overall usage. Since it re-uses already exiting class and code, all work fine with no problems at all, and just add more options, for example ' or ъ as separate keys (refering to nowdays GBoard layout and Samsung Keyboard, with are popular)

Test release provided in my fork, you can download it and see all changes at one. Illustrations to changes awill be provided in below comment within few minutes.

…ar to PC keyboard) as optional;

Rework standard UK and RU keyboards:
UA)
- Added 'ї' as separate letter (it used much more often, just to be optional key in popups)
- Added [ { } } popups to fill empty hint space (similar to PC layout)
- Added ' (apostrofee) suggestion onto 'є' key (similar to oter keyboards and to PC layout)
RU)
Added siggestion to 'ъ' on 'х' key (similar to other keyboards, anyway there was no popups at all)
- Added [ { } } popups to fill empty hint space (similar to PC layout)
- Added 'э́' suggestion similar to other keyboards
Both)
- Improvements to multilanguage typing (now this is possible to sue UK-RU or RU-UK pair, I added letters from other language as popups)
Added)
- UK Extended with separate ' key (used less often than 'ї', but still used pretty often)
- RU Extended, with separate 'ъ' key (similar to full desk PC layout)

(Maybe i forgot something)
@Quantom2
Copy link
Author

Old baze layouts for comparing:
Ukrainian:
зображення_2024-11-17_131228064
Russian:
зображення_2024-11-17_131256324

New baze layouts with new hints, popups and locale_key_texts variants
Ukrainian:
зображення_2024-11-17_131344857
Russian:
зображення_2024-11-17_131405055

New extended layouts:
Ukrainan:
зображення_2024-11-17_131435765
Russian:
зображення_2024-11-17_131454326

Changes in language and layout selector:
зображення_2024-11-17_131526223
Changes in Ukrainian layouts selection:
зображення_2024-11-17_131553379
Changes in Russian layouts selection:
зображення_2024-11-17_131608982

P.S. Sorry for mine custom theme, but all of that work axact the same in baze themes

@Helium314
Copy link
Owner

Thank you very much for providing a detailed explanation and reasoning of your PR!
I am typically rather opposed to making changes to existing (default) layouts, but adding the ї to the Ukrainian keyboard seems to make sense. Though when users are complaining about the extra key (as it makes other keys smaller), then I might revert this addition later.

The additional locale_key_texts for both languages just overall make typing more flexible and allow proper usage of multilanguage typing now. There no harm in this, only benefits.

Here I'm not convinced. Enabling multilingual typing already combines locale_key_texts from all enabled languages, so there is no need for forcing letters of another language to appear when not using multilingual typing. I've had multiple complaints by users who only want to have letters of their chosen language, and I don't want to knowingly create more reasons for complaining.
My idea would be to make use of the more_popups_*.txt files instead. They were designed only for latin alphabet, but there is no technical reason to not use them for cyrillic.

I see you have э э́ є in both Russian layouts, and є э in both Ukrainian layouts. Wouldn't this be a better fit for locale_key_texts instead of the individual layouts (including consideration of using more_popups_*.txt)?

First and maybe temporary fix for multilanguage hints for not show them if you dont use multilanguage
@Quantom2
Copy link
Author

Quantom2 commented Jan 19, 2025

Made a bunch of test builds and expiriments, and because my prewious almost written detailed message was lost, i will write all shorter, sorry.

Though when users are complaining about the extra key (as it makes other keys smaller), then I might revert this addition later.

I may suggest re-add old UK layout re-using existing class of subtype_generic_compact. that made for hindi and only used by them, the same as i re-used subtype_generic_extended class that was used only by hungarian. The only downside of it will be that there are no hints to users that there are old layout that just named compact, so i dont know how it worth, add new 'subtype_generic_old' format or etc for that, ore re-use 'subtype_generic_compact' witch be a lot easier (and have proper translation too)

Here I'm not convinced. Enabling multilingual typing already combines locale_key_texts from all enabled languages, so there is no need for forcing letters of another language to appear when not using multilingual typing. I've had multiple complaints by users who only want to have letters of their chosen language, and I don't want to knowingly create more reasons for complaining.

After i test it i had an idea, tryed, and this worked. I simply added additional keys to RU letters into UK locale texts (e.g 'ы і ї', letter 'ы' don't exist in UK, so if multitype don't enabled it doesen't show up everywhere. But when you combine them, locale texts combines and boom - RU than show you wanted 'ы і ї', witch stored in UK locale texts! So no one will be harmed - those who dont want dont see them, and those who want multilanguage will see them.

P.S. this appears to me only as a temporary solution, i can think of separate set of locale texts that will be applyed ONLY if selected multilanguage typing, something that can be called like 'ru-UK' (where all lowercase indicate that this is two LANGUAGES, when 'uk_UK' indicate (now) separate LAYOUT). What you think about this?

My idea would be to make use of the more_popups_*.txt files instead. They were designed only for latin alphabet, but there is no technical reason to not use them for cyrillic.

I don't found any documentation about more popups, and no any buttons that allow me use that. BTW that not so much problem, the proplem is that I want include special hints that use DIFERENT sounds/charctaers, not a variations, but different. For example, i wanna place ы as a hint onto і when UK-RU multilanguage typing is enabled, because there are always 'ы' in ru, so the muscule memory will force me to press there, where in UK placed 'і'. So why don't include that so muscule memory dont make me waste time (type 'і', erease it, type 'ы' from a popup on 'и'? (little explanetion. 'ы' and 'и' are different variations of one sound in RU, when 'і' and 'и' it is DIFFERENT sounds in UK. So by logic i should place it onto 'и', but that result in troubles with muscule memory described below. I didnt mean to not include 'ы' on 'и' and only 'ы' on 'і', i mean to include BOTH ways so it can be helpfull for two types of users, those who hard rely on muscle memory like me, and those who like to update it:)

Any further suggestions if welcome off course)

P.P.S. I upload updated version of my changes into my git fork, you can see how i made changes to locale texts, i added new row only for be used in multitype, e.g:
locale_texts_lang.txt

-[locale for lang]

-[locale for lang 2 multitype]

-[lable as it was]

@Helium314
Copy link
Owner

Made a bunch of test builds and expiriments, and because my prewious almost written detailed message was lost, i will write all shorter, sorry.

Sorry to hear that, such loss of written text can be very annoying. There are some browser addons against this, like https://github.com/wildskyf/TextareaCache and https://stephanmahieu.github.io/fhc-home/.

I may suggest re-add old UK layout re-using existing class of subtype_generic_compact.

That's a good point, I'll consider it in case someone doesn't like the separat ї key. How to deal with it depends on how soon / how many people want the old layout. But anyway that's not really relevant now.

I simply added additional keys to RU letters into UK locale texts (e.g 'ы і ї', letter 'ы' don't exist in UK, so if multitype don't enabled it doesen't show up everywhere

It's not a really clean solution, but very simple so I thinks it's ok. And I don't expect it to have negative side effects.

P.S. this appears to me only as a temporary solution, i can think of separate set of locale texts that will be applyed ONLY if selected multilanguage typing, something that can be called like 'ru-UK' (where all lowercase indicate that this is two LANGUAGES, when 'uk_UK' indicate (now) separate LAYOUT). What you think about this?

Hmm this doesn't really fit in my opinion, and adds more complexity for dealing with a very special case.

From what you write (specific hints in specific places, muscle memory) it seems more like you want some ru/uk layout specialized for multilingual typing? Maybe it would make more sense to add something like that?

@SkeLLLa
Copy link
Contributor

SkeLLLa commented Feb 4, 2025

There's are no ы and э in Ukrainian, so I don't think that it's a good idea of adding non-existing symbols to popup keys.

However moving ї to separate symbol might be a good idea, since it's quiet widespread. But might be better to have it as an alternative layout as well, since people who used to auto-correction or ai-assisted input just put і and autocorrect replaces it to proper ї

@Quantom2
Copy link
Author

Quantom2 commented Feb 5, 2025

Sorry for late ansver, i was in vacation so my PC left behind with all over.

From what you write (specific hints in specific places, muscle memory) it seems more like you want some ru/uk layout specialized for multilingual typing? Maybe it would make more sense to add something like that?

No, i personally didn't use multilanguage typing in Heliboard at all, I just have a motto 'do it well or don't do at all', that in this case, if there are such feature like multilanguage typing i wanna make sure that my changes in layout and locale text will work with his as best as it only could, perhaps I don't use this feature.

That's a good point, I'll consider it in case someone doesn't like the separate ї key. How to deal with it depends on how soon / how many people want the old layout. But anyway that's not really relevant now.

Okay, there's no problem with that. I consider this means you approve my reworked layouts so they are finished and no future discussion about this or what? Just... I don't really know what to do with all of this, that my first open source sideways commit...

However moving ї to separate symbol might be a good idea, since it's quiet widespread. But might be better to have it as an alternative layout as well, since people who used to auto-correction or ai-assisted input just put і and autocorrect replaces it to proper ї

This is respond to two quotes abowe at the same time. I think that separate 'ї' key must be the baze layout because this is like nowadays standart? We have separate 'ї' key in all modern layouts, PC layout, all popular keyboard (closed source) apps have one think in common in the way of separate 'ї' key (and some have reparate ' key, that I too added into extra layout for more options and more aesy asimilation from closed source onto heliboard), but they all come on that 'ї' is required.
Yes, I remember those times when all layouts was like now baze UK heliboard, that was just RU layout where they strip out 'ы' to 'і' and turn around 'є'. And you relied onto autocorrect and popup on 'і' key to enter up 'ї'. Yes, this was like this, but this was 20 years ago, and lot changed from that time. If I remember correctly, Gboard and Samsung keyboard both build up separate 'ї' key somewhere in 2010-ns, and other come up ti this change trough 2010 to 2020. Heliboard layout was like first time for me in 5-6 years to see layout without dedicated 'ї'. So... I thinks this is just an obstolete? Yes, layouts was like this but it was more than dacades ago, from that time people made changes and loved dediceted 'ї' key, so I think that Heliboard should too consider this change as good.

I have zero problems to include old layout as an option, but not as standart, please. Like 95% or more pople will just be happy that there now are separate key and typing 'ї' became easier.

It's not a really clean solution, but very simple so I thinks it's ok. And I don't expect it to have negative side effects.

So you approve this, ah, final version of locale text i think? Like I said before, I have a motto to do all good and that means that I tested my changes to the best possible result before submitting them. I don't know how to make locale texts better in any way and tested it before submitting and now daily drive this version and found no problems. Several friends i gave it too, too didn't found anything that can be improved, so, I think, I've done here, witch means that changes into pull request are final and can be just pushed into master. Only thing that still can be updated it is add old UK layout as 'slim' keyboard, I can do it right now so we don't need to wait complains or so. All other is complete, i sure.

Seems like I ansvered all that i can, so I waiting for reply

P.S. (forgot about it)

There's are no ы and э in Ukrainian, so I don't think that it's a good idea of adding non-existing symbols to popup keys.

The whole point of previous discussion was how NOT to add it in popup keys UNLESS you enable multilenguage typing (so you WANT to type something using both UK and RU symbols), and then it needs to be correctly placed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants