deadkey() emits a invisible placeholder in the output, or matches an invisible placeholder in the context.
deadkey(deadkeyName) + ... > ... ... > deadkey(deadkeyName) dk(deadkeyName) + ... > ... ... > dk(deadkeyName)
- A unique name for the deadkey.
dk() statement lets you program an invisible placeholder variable into the output of a rule, which can then be
matched by future rules. The deadkey will be processed by Keyman as if it were a normal character, but it is not output onto the screen, instead being
stored internally in the context. A keyboard has a limit of 65,534 unique deadkeys.
While Keyman deadkeys arose from the concept of deadkeys in Windows, they are considerably more flexible. A deadkey in context will not be ignored by the keyboard rule matching algorithm, and multiple deadkeys can be present at one time.
Deadkeys are however ephemeral. When the user moves to another text field or uses the mouse or cursor keys to navigate in the current text field, the deadkey buffer will be reset. While this may seem unhelpful at first, it in fact provides a more consistent experience for the end user, as editing seemingly identical pieces of text will not result in differing behaviour.
set() statement can be used to control persistent variables in a keyboard.
Note: While Keyman supports consecutive deadkeys between two real characters, as of build 2.0.390, KeymanWeb does not. This may be addressed in a future version.
Any deadkeys inserted by another rule immediately before or after the character to the left of the insertion point will be deleted when backspace is pressed, unless backspace is overridden with a keyboard rule. This can be illustrated with the following implicit rule (* indicates 0 or more deadkeys; 'char' is any character):
dk()* any(char) dk()* + [K_BKSP] > nul
+ '`' > dk(backquote) dk(backquote) + 'e' > 'è'
deadkey() statement can be used in keyboards on all platforms.
|Windows||macOS||Linux||Desktop web||Mobile web||iOS||Android|
Numbered deadkeys were introduced in version 3.0. Keyman 5.0 and later support named deadkeys. The use of numbered deadkeys is still supported, but not recommended; named deadkeys make the keyboard source much more readable.