Building a keyboard to work with Spanish deadkeys

A translator in Mexico had a keyboard that worked with the Latin American keyboard as a base. So, accented characters were handled by the LA keyboard and other special characters were handled by the Keyman keyboard.
After a recent Windows update the keyboard no longer works. Or better said, the keyboard doesn’t work with the LA deadkeys for accented characters.

How can we associate a keyboard so that when the Windows keyboard is the Spanish LA keyboard, the deadkeys still work. Or is that even possible?

I don’t claim to understand how this works. But, you know that in Keyman Configuration / Options / Advanced / Base Keyboard you can change the base keyboard, correct? Maybe that needs to be reset after the recent update?

Lorna - thanks for pointing me in the right direction. I think the issue is actually the checkbox that says: “Treat hardware deadkeys as plain keys”. When I unchecked that box, then the keyboard behaved as expected.

It seems like a lot to expect users to go and either check or uncheck that box depending on the need. It would be nice if the keyboard rules could set that. Or maybe they do and I’m just missing something. At least I know how to get to it.

This checkbox is there because of a difficult path that we have to work through with mnemonic layouts. Deadkeys, especially with punctuation or diacritic style characters, on the hardware keyboard often conflict with overrides in a Keyman mnemonic layout.

This may be easiest to explain with an example. Let’s say your backquote key ` on your hardware keyboard is a deadkey. You can type `, a to get à. However your favourite Keyman keyboard adds support for ȁ. If the Treat hardware deadkeys as plain keys option is off, then you’d need to type `, spacebar, `, spacebar, a to get it – which is cumbersome, and non-intuitive. When this option is on, you can type `, `, a to get all your doubly graved goodness.

I don’t really have a perfect answer for this. A good solution (especially for the end user) may be to make a positional Keyman keyboard that replicates the LA keyboard (you can import the LA keyboard in Keyman Developer as a starting point), and then extend that with the extra functionality that you want.

(Note that you can also continue to use a mnemonic layout and add base layout-specific features with the baselayout() statement).

Mnemonic layouts feel nice for the keyboard developer, especially at first. But they do come with a bunch of compromises which become increasingly tricky to address.

Thanks Marc - as I’ve discussed this with the Spanish speaking technicians we have come to the conclusion that if we are creating new keyboards they should be done with the LA base and then adding the special keys. However we need to keep in mind this option to help teams that have existing keyboards.

1 Like