8.2 KiB
Key values
A key value defines what a key on the keyboard does when pressed or swiped.
Key values appear in the following places:
- In custom layouts, they are the value of: the
cattribute, the compass-point attributesnw...se, and the old-stylekey0...key8attributes. - Internally, they are used in the definition of the "Add keys to the keyboard" setting.
Key values can be any of the following:
-
The name of a special key. A complete list of valid special keys follows.
-
An arbitrary sequence of characters not containing
:. This results in a key that writes the specified characters. -
The syntax
legend:key_def.legendis the visible legend on the keyboard. It cannot contain:.key_defcan be:- The name of a special key, as listed below.
'string'An arbitrary string that can contain:.'can be added to the string as\'.keyevent:keycodeAn Android keycode. They are listed asKEYCODE_...in KeyEvent.
Examples:
⏯:keyevent:85A play/pause key (which has no effect in most apps).my@:'my.email@domain.com'A key that sends an arbitrary string
-
A macro,
legend:key_def1,key_def2,.... This results in a key with legendlegendthat behaves as if the sequence ofkey_defhad been pressed in order.Examples:
CA:ctrl,a,ctrl,cA key with legend CA that sends the sequencectrl+a,ctrl+c.Cd:ctrl,backspaceA key with legend Cd that sends the shortcutctrl+backspace.
Escape codes
When defining a key value, several characters have special effects. If you want a character not to have its usual effect but to be taken literally, you should "escape" it in the usual way for XML:
| To get this character... | ...you can type |
|---|---|
A literal newline character, which is different from enter and action in certain apps. |
\n |
A literal tab character, which is different from tab in certain apps. |
\t |
& |
& |
< |
< |
> |
> |
" |
" |
The characters \ (unless followed by n or t), ?, #, and @ do not need to be escaped when writing custom layouts. When writing a layout to be included in the app (in srcs/layouts), they are represented by typing \\, \?, \#, and \@.
The characters , and : can be escaped in a key value, using single quotes. For example, this macro defines a key with legend http that sends a string containing :: <key c="http:home,'https://'" /> For simplicity, , and : cannot be escaped in the key legend.
Modifiers
System modifiers are sent to the app, which can take app-specific action.
| Value | Meaning |
|---|---|
shift |
System modifier. |
ctrl |
System modifier. |
alt |
System modifier. |
meta |
System modifier. Equivalent to the Windows key. |
The other modifiers take effect only within the keyboard.
| Value | Meaning |
|---|---|
fn |
Activates Fn mode, which assigns letters and symbols to special characters. Example: fn ! = ¡ |
compose |
Compose key. Enables composing characters using Linux-like shortcuts. Example: Compose A ' types Á (A with acute accent). |
capslock |
Activates and locks Shift. |
App function keys
These keys are sent to apps, which are free to ignore them. The keyboard does not perform editing in response to these keys.
esc, enter,
up, right,
down, left,
page_up, page_down,
home, end,
backspace, delete,
insert, scroll_lock,
f1-f12,
tab, copy,
paste, cut,
selectAll, pasteAsPlainText,
undo, redo
Keyboard editing actions
In contrast, these keys perform editing on the text without sending anything to the app.
| Value | Meaning |
|---|---|
cursor_left |
Moves the cursor to the left with the slider gesture. |
cursor_right |
Moves the cursor to the right with the slider gesture. |
cursor_up |
Moves the cursor up with the slider gesture. Warning: this might make the cursor leave the text box. |
cursor_down |
Moves the cursor down with the slider gesture. Warning: this might make the cursor leave the text box. |
delete_word |
Delete the word to the left of the cursor. |
forward_delete_word |
Delete the word to the right of the cursor. |
The values with cursor_ are new in v1.31.0. Previous custom layouts specified the slider with slider="true", which should be removed.
Whitespace
| Value | Meaning |
|---|---|
space |
Space bar. |
nbsp |
Non-breaking space. |
nnbsp |
Narrow non-breaking space. |
zwj |
Zero-width joiner. |
zwnj |
Zero-width non-joiner. |
Other modifiers and diacritics
| Value | Meaning |
|---|---|
accent_aigu |
Acute accent. á |
accent_caron |
Háček. č |
accent_cedille |
Cedilla. ç |
accent_circonflexe |
Circumflex. â |
accent_grave |
Grave accent. à |
accent_macron |
Macron. ā |
accent_ring |
Ring accent. å |
accent_tilde |
Tilde. ã |
accent_trema |
Dieresis/umlaut. ä |
accent_ogonek |
Ogonek. ą |
accent_dot_above |
Dot accent. ż If applied to the lowercase i, removes the dot instead for Turkish. ı |
accent_double_aigu |
Double acute accent. ő |
accent_slash |
Slash through. ø |
accent_arrow_right |
Right arrow above, used to denote a vector. a⃗ |
accent_breve |
Breve. ă |
accent_bar |
Bar/strikethrough. ɨ |
accent_dot_below |
Dot below. ạ |
accent_horn |
Horn accent. ơ |
accent_hook_above |
Hook accent. ả |
accent_double_grave |
Double grave accent. ȁ |
superscript |
Superscript. ᵃ |
subscript |
Subscript. ₐ |
ordinal |
Turns a and o into ª and º. |
arrows |
Turns 1-4 and 6-9 into arrows. |
box |
Turns 1-9, 0, and . into single-line, thin box-drawing characters. |
Bidirectional
| Value | Meaning |
|---|---|
lrm |
Left-to-right mark. |
rlm |
Right-to-left mark. |
b(, b), b[, b], b{, b}, blt, bgt |
Sends the bracket characters, but with mirrored key legends for right-to-left languages. (blt and bgt print < and > respectively.) |
Hebrew
Keys ending in _placeholder are normally hidden unless the Fn key is pressed.
qamats, patah,
sheva, dagesh,
hiriq, segol,
tsere, holam,
qubuts, hataf_patah,
hataf_qamats, hataf_segol,
shindot, shindot_placeholder,
sindot, sindot_placeholder,
geresh, gershayim,
maqaf, rafe,
ole, ole_placeholder,
meteg, meteg_placeholder
Keyboard behavior keys
| Value | Meaning |
|---|---|
config |
Gear icon; opens Unexpected Keyboard settings. |
switch_text |
Switch to the text layer (main layer). |
switch_numeric |
Switch to the numeric layer. |
switch_emoji |
Switch to the emoji layer. |
switch_back_emoji |
Switch to the text layer from the emoji layer. |
switch_forward |
Change the keyboard layout, as long as Unexpected Keyboard has multiple keyboard layouts enabled in the settings. |
switch_backward |
Change the keyboard layout to the previous one in the list. |
switch_greekmath |
Switch to the Greek & Math Symbols layer. |
switch_clipboard |
Switch to the clipboard pane. |
change_method |
Open the input method picker dialog. |
change_method_prev |
Switch to the previously used input method. |
action |
Performs a special context-sensitive operation related to the Enter key. For example, in the Twitter (X) app, enter adds a new line, while action posts. |
voice_typing |
Begin voice typing. |
voice_typing_chooser |
Shows a menu where you can choose which voice typing provider to use, then begins voice typing when you make a selection. |
shareText |
Emit a share Intent for the selected text. Oddity: This is in CamelCase. |
Unused
These keys are known to do nothing.
replaceText, textAssist,
autofill, removed
Placeholders
These keys are normally hidden unless the Fn modifier is activated.
f11_placeholder | f12_placeholder