Store (&CasedKeys) with many characters but few keys

This issue is related to the topic: Problem With Caps Lock Output
The documentation is not really clear to me.
How do I use the store(&CasedKeys) keystore for a keyboard that has more characters than keys?
For example:
In this keyboard, there is “a”, “à”, “â” “á” “ǎ” with “A”, “À”, “” “Á” “Ǎ” respectively as the upper case equivalent.
But there’s only one key for the base letter “a”, and four keys for the diacritics (grave, circumflex, acute and caron) so that whatever the base letter may be (aeioọumn or AEIOỌUMN) the four accent keys do the placement of accent on them all. This means that there are 80 characters to be produced using only 12 keys. How can this keystore be used to handle this?
It seems the documentation doesn’t mention this kind of scenario.

I think Caps Lock (the reason you would be using store(&CasedKeys)) is only intended for use with keys that are on your keycaps. So, if you put [K_A] to output “a” or “A” depending on whether Caps Lock is on, then it would work.

The Keyman team recently did some webinars that you might find helpful:

In the Keyman Developer one, there is this slide which might be helpful to you:

Your explanation and the link to the webinar have solved this issue. Thanks.

Another challenge I have now is with the digraph keys. I want this particular key to output “ch” in the unshifted state, “Ch” in the shifted state, and “CH” in the capslock state. How can that be done? Someone asked that question in the webinar, and @Marc said to “override.” How is override done?

You can override the default behavior by explicitly including rules with NCAPS and CAPS. For example, if you look at the image above, the rules on the right-hand side will have the effect of the rules on the left-hand side. But if you included rules such as those on the left-hand side, but changed what the rules produced, that would override the normal action of CasedKeys.


Thank you. Issue “resolved.”

1 Like