Skip to content

Instantly share code, notes, and snippets.

@mcrosson
Last active June 14, 2024 16:43
Show Gist options
  • Save mcrosson/15cad13789e0ec83c3373a4baba04d7a to your computer and use it in GitHub Desktop.
Save mcrosson/15cad13789e0ec83c3373a4baba04d7a to your computer and use it in GitHub Desktop.
KemoNine's custom layouts for unexpected keyboard

Resources

The Layouts

  • messagease_for_unexpected_keyboard.xml : a solid messagease layout that includes more symbols/keys than most implementations
  • tweaked_qwerty_for_unexpected_keyboard.xml : tweaked form of the default us qwerty layout to avoid common typos KmN makes

These two layouts have been reconciled lightly so muscle memory is more consistent between them.

For 'regular' phone users: the qwerty layout will work in portrait mode but works best in landscape mode. The messagease layout should be usable for ssh/termux/similar which should allow not needing qwerty in portrait mode.

If you have a folding phone: use the messagease form in folded mode and the full qwerty in unfolded mode for two handed typing. During testing this approach has been amazing on a Samsung z fold 4. The layouts include actions to flip/flop between both custom layouts easily (with a single gesture) so you can swap layouts based on folded/un-folded state fast.

Recommended Main Config Adjustments

These are for consistency between all layouts/modes.

  • Add keys to keyboard
    • Alt
    • Meta
    • Compose
    • Voice Typing
    • Page Up
    • Page Down
    • Home
    • End
    • Switch keyboard
  • NumPad layout: Low digits first
  • Double tap on shift for caps lock: enabled
  • Pin entry layout: enabled
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This file defines the KmN messagease layout.
A layout is made of keys arranged into rows. Keys can be made bigger with the
'width' attribute and blank space can be added on the left of a key with the
'shift' attribute.
old method:
'key0' assigns the symbol on the middle of the key. 'key1', 'key2', etc..
assign symbols to the corners of a key, they are arranged like this:
1 7 2
5 0 6
3 8 4
new method
nw n ne
w key0 e
sw s se
Keys prefixed with 'loc ' are not visible on the keyboard. They are used to
specify a place for a key, if it needed to be added to the layout later.
(for example, by the "Add keys to keyboard" option)
-->
<keyboard bottom_row="false" name="KmN MessagEase">
<row>
<key indication="" anticircle="1" key0="a" key1="(" key4="v" key5="[" key7="\\"/>
<key indication="" anticircle="2" key0="n" key1="~" key2="&amp;" key7="_" key8="l"/>
<key indication="" anticircle="3" key0="i" key2=")" key3="x" key6="]" key7="/"/>
<key key0="fn" key1="copy" key2="cut" key5="undo" key6="redo" key7="selectAll" key8="paste"/>
</row>
<row>
<key indication="" anticircle="4" key0="h" key1="`" key5="&lt;" key6="k" key7="%" key8="\@"/>
<key indication="" anticircle="5" key0="o" key1="q" key2="p" key3="g" key4="j" key5="c" key6="b" key7="u" key8="d"/>
<key indication="" anticircle="6" key0="r" key5="m" key6=">" key7="shift" key8="ctrl"/>
<key key0="switch_numeric" key1="alt" key5="loc meta" key2="loc change_method" key3="switch_emoji" key4="config"/>
</row>
<row>
<key indication="" anticircle="7" key0="t" key1="'" key2="y" key3=";" key4="\?" key5="^" key7="$" key8="+"/>
<key indication="" anticircle="8" key0="e" key3="," key4="." key5="=" key6="z" key7="w" key8="-"/>
<key indication="" anticircle="9" key0="s" key1="f" key2="&quot;" key3="!" key4=":" key6="tab" key7="€" key8="*"/>
<key key0="backspace" key2="delete"/>
</row>
<row>
<key key0="loc compose" key1="loc home" key2="loc page_up" key3="loc end" key4="loc page_down" key5="left" key6="right" key7="up" key8="down"/>
<key indication="" anticircle="0" width="2" key0="space"/>
<key key0="enter" key1="loc voice_typing" key2="action" key3="switch_forward" key4="switch_backward"/>
</row>
</keyboard>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This file defines the KmN QWERTY (US) layout.
A layout is made of keys arranged into rows. Keys can be made bigger with the
'width' attribute and blank space can be added on the left of a key with the
'shift' attribute.
old method:
'key0' assigns the symbol on the middle of the key. 'key1', 'key2', etc..
assign symbols to the corners of a key, they are arranged like this:
1 7 2
5 0 6
3 8 4
new method
nw n ne
w key0 e
sw s se
Keys prefixed with 'loc ' are not visible on the keyboard. They are used to
specify a place for a key, if it needed to be added to the layout later.
(for example, by the "Add keys to keyboard" option)
-->
<keyboard bottom_row="false" name="KmN QWERTY (US)">
<row>
<key key0="q" key2="1" key4="esc"/>
<key key0="w" key1="~" key2="2" key3="\@"/>
<key key0="e" key1="!" key2="3" key3="\#" key4="loc €"/>
<key key0="r" key1="loc ₪" key2="4" key3="$"/>
<key key0="t" key2="5" key3="%"/>
<key key0="y" key2="6" key3="^"/>
<key key0="u" key2="7" key3="&amp;"/>
<key key0="i" key2="8" key3="*"/>
<key key0="o" key1="loc accent_macron" key2="9" key3="(" key4=")"/>
<key key0="p" key2="0" key3="f11_placeholder" key4="f12_placeholder"/>
</row>
<row>
<key shift="0.5" key0="a" key1="tab" key2="`"/>
<key key0="s" key1="loc accent_ring" key3="loc ß" key4="loc accent_ogonek"/>
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
<key key0="f" key1="loc accent_dot_above"/>
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
<key key0="h" key2="=" key3="+"/>
<key key0="j" key1="loc accent_trema" key2="loc accent_circonflexe" key3="{" key4="}"/>
<key key0="k" key1="loc accent_double_aigu" key3="[" key4="]"/>
<key key0="l" key2="|" key3="\\"/>
</row>
<row>
<key width="1.5" key0="shift"/>
<key key0="z"/>
<key key0="x"/>
<key key0="c" key1="loc accent_cedille" key2="&lt;" key3="."/>
<key key0="v" key2=">" key3=","/>
<key key0="b" key2="\?" key3="/"/>
<key key0="n" key1="loc accent_tilde" key2=":" key3=";"/>
<key key0="m" key2="&quot;" key3="'"/>
<key width="1.5" key0="backspace" key2="delete"/>
</row>
<row>
<key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key4="switch_numeric"/>
<key width="1.1" key0="fn" key1="loc alt" key2="loc change_method" key3="switch_emoji" key4="config"/>
<key width="4.4" key0="space"/>
<key width="1.1" key0="loc compose" key1="loc home" key2="loc page_up" key3="loc end" key4="loc page_down" key5="left" key6="right" key7="up" key8="down"/>
<key width="1.7" key0="enter" key1="loc voice_typing" key2="action" key3="switch_backward" key4="switch_forward"/>
</row>
</keyboard>

Screenshots

Messagease

Messagease Screenshot

QWERTY

QWERTY Screenshot

Standard Numeric Layer

(built in / cannot be changed) Standard Numeric Layer Screenshot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment