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

Some modal way of showing more symbols in MAIN/SHIFTED layers #710

Closed
6 of 7 tasks
asdkant opened this issue Feb 10, 2024 · 7 comments
Closed
6 of 7 tasks

Some modal way of showing more symbols in MAIN/SHIFTED layers #710

asdkant opened this issue Feb 10, 2024 · 7 comments

Comments

@asdkant
Copy link
Contributor

asdkant commented Feb 10, 2024

Describe your suggested feature

Two important points beforehand:

  • This is a feature from MessagEase
  • I'm willing to work on a PR to make this work

As of now, keyboards have three modes for normal typing: MAIN, SHIFTED, NUMERIC (as defined in KeyboardMode and used in KeyboardScreen())

Some symbols are defined in the MAIN and SHIFTED layer, and those symbols are sometimes in the same places in the NUMERIC layer, but you can't change much on the fly. I'd like to:

  • be able to configure which symbols from the NUMERIC layer, in places not used by the MAIN/SHIFTED, I have in MAIN/SHIFTED
  • be able to quickly toggle in MAIN/SHIFTED the other symbols from the NUMERIC layer (again, the ones in places not used by MAIN/SHIFTED)

The way this works in MessagEase is:

  • swipe up from the space bar shows/hides ALL the symbols from the NUMERIC layer, except a configurable list that's always shown
  • there is a configuration to keep or remove the swipe actions for the symbols not in the "always show" list when hidden (if removed, this is called "turbo speed", the point is to keep some symbols but have less swipe actions in the keyboard to avoid typos - showing all the symbols is assumed to be the default state for the alphabetic layers).
    Given how thumb-key works and the policy of "no hidden functionality", I think this part can be omitted (I also don't care much for it, I always enabled turbo speed and had some extra symbols on the "always show" list)

Other details

With the functions implemented in #700 this could be done, the MAIN/SHIFTED layer with extra symbols is basically that one composed on top of the NUMERIC one.

Most work would go to implement the logic for the "always show" list.

With #700 on the way, I'll wait for it to be merged before working on this (if nobody does it before I do)

Acknowledgements

  • I have searched the existing issues and this is a new one, NOT a duplicate or related to another open issue.
  • This is a single feature request, in case of multiple feature requests I will open a separate issue for each one (they can always link to each other if related)
  • This is not a question or a discussion, in which case I should have gone to lemmy.ml/c/thumbkey
  • I have written a short but informative title.
  • I have checked through the app settings for my feature.
  • I have admitted that I am a clown by having checked this box, as I have not read these acknowledgements. 🤡
  • I will fill out all of the requested information in this form.
@asdkant
Copy link
Contributor Author

asdkant commented Feb 10, 2024

@BlueDrink9 if you want to include this in #700 (it should basically prune the "with symbols" variant layouts) let me know, I'll be happy to help there =)

@BlueDrink9
Copy link
Contributor

when you say "prune", are you envisaging a setting to add extra symbols at runtime?

@BlueDrink9
Copy link
Contributor

added a comment on #700 with my thoughts

@asdkant
Copy link
Contributor Author

asdkant commented Feb 10, 2024

when you say "prune", are you envisaging a setting to add extra symbols at runtime?

I'm referring to the fact that we have for example, an "English MessagEase" and an "English symbols MessagEase" keyboard, the second one having all the symbols from the numeric layer in the alphabetic ones. I've seen this duplication repeated for multiple languages, there are 24 files in the keyboards folder with "symbols" in the name.

Maintainability of those is a nightmare, and having your keyboard composition functions would at least make them easier to maintain... but with the feature I'm asking for, they don't need to exist at all (and we get a free "symbols" layout for any given layout, with better ergonomics for the user)

@BlueDrink9
Copy link
Contributor

oh right. re-reading, this sounds like way too big a ux chance for me to work on, esp in #700

@asdkant
Copy link
Contributor Author

asdkant commented Feb 11, 2024

Assuming we have the current MAIN/SHIFTED/NUMERIC layers, here's how I think this could work:

  • filterSwipes(source: KeyboardC, keepChars: String): KeyboardC returns a copy of a KeyboardC with all centers as dummy and only the swipes that have the characters in keepChars
  • ALWAYS_ON_SYMBOLS would be filterSwipes(NUMERIC, keepChars)

So this way:

  • convention would be to make MAIN without non-alphanumeric symbols, maybe have a parameter to specify the default value for the "always show" (string used as a list of characters) config
  • the effective MAIN/SHIFTED are calculated as MAIN/SHIFTED over ALWAYS_ON_SYMBOLS
  • the SYMBOLS variants are calculated as MAIN/SHIFTED over NUMERIC
  • we'd have to have a way to specify a swipe for switching between normal and SYMBOLS alphanumeric keyboards, so maybe a helper function for that

Of course if how layouts are defined changes this would go a slightly different way (I'm thinking about what you mentioned on how we could have separate KeyboardC objects for the numbers and the symbols which can be easily merged with makeVariant())

@dessalines
Copy link
Owner

For extra symbols not contained on the symbols keyboard already, it'd be much easier and more flexible just to create an additional symbols-specific layout that anyone can use.

@dessalines dessalines closed this as not planned Won't fix, can't repro, duplicate, stale Apr 25, 2024
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

No branches or pull requests

3 participants