Minimal SymLayer Keyboard
is an Android input method for the Minimal Phone MP01, though it may be useful for other devices with built in thumbboards. It does not contain a virtual keyboard but adds a SYM layer for physical keys.
The project is a fork of the excellent TitanPocketKeyboard by oin, which was originally designed for the Unihertz Titan Pocket, and has no relation to Lersi's Minimal Phone Keyboard or the keyboard that shipped with the Minimal Phone.
This fork adds several new features (a keyboard-focused emoji picker, a clipboard history manager, and additional virtual modifier keys) and special handling for the MP01's unique keys and e-ink display.
While this project is based on the TitanPocketKeyboard, support for the Unihertz Titan Pocket is entirely untested in this fork. Many of the improvements are specific to the Minimal Phone's hardware. However, features like the keyboard-navigable emoji picker and clipboard history might be of interest to Titan Pocket users willing to experiment, and the code has been written with a blind best-effort to support both devices.
This fork builds upon the original's solid foundation with several new features and improvements, primarily for the Minimal Phone MP01:
- Keyboard-Focused Emoji Picker: A searchable emoji filter accessed by tapping the Emoji/0 key.
- Clipboard History: A clipboard manager with search and pinning, accessed via Emoji/0 + V.
- Sym-Layer Preview: A visual preview of the Sym layer mappings, making it easy to discover and learn.
- Advanced Key Support for MP01: Added support for the Minimal Phone's key layout, adding additional functionality over the factory keyboard:
- Three-Way Modifier Keys: The Mic/Period and Emoji/0 keys act as multi-function modifiers:
- Mic/Period Key:
- Tap: Inserts a period (.), or > when Shift is held.
- Hold + Key: Acts as a Ctrl modifier for keyboard shortcuts (e.g., Hold Mic/Period + C for Copy).
- Long Press & Release: Invokes the voice-to-text input (also triggered by Alt + Mic/Period).
- Emoji/0 Key:
- Tap: Opens the emoji picker.
- Hold + Key: Acts as a special function modifier (like the Meta/Win/Command key). For example, Emoji + V opens the clipboard history viewer.
- Long Press & Release: Inserts a 0 (also triggered by pressing while holding Alt).
- Mic/Period Key:
- Three-Way Modifier Keys: The Mic/Period and Emoji/0 keys act as multi-function modifiers:
- Sym layer updated for the MP01: The keys on the sym layer have been updated and changed to avoid duplicating any of the alt-keys already available, and to make it possible to enter certain common keys missing from the MP01's alt layer (such as parenthesis.)
The Multipress for accented characters feature from the original project is disabled by default, but is still included and has been extended with a ligature option and Scandinavian templates.
- Download the latest APK from the releases page.
- Install the APK on your Minimal Phone MP01.
- Go to
Settings
>System
>Languages & input
>Virtual keyboard
>Manage keyboards
and enableMinimal Symlayer Input
. - Select
Minimal Symlayer Input
as your default input method.
- Full Keyboard Layout with all keys and symbols.
- No space taken on the screen.
- Long press for alternate characters (see list below).
- Keyboard Navigation: simulate arrow keys and home/end/page up/page down keys, using the
sym
modifier - especially useful with an e-ink screen. - Lock modifier keys by double-tapping them, while a single tap will only have effect for the next key press.
- See modifier key state in the status bar.
- Auto-capitalization of the first letter of a sentence.x
- Two spaces after a period automatically replaced by a period and a space.
Using the sym
modifier, you can access more keys and symbols.
For instance, you can use WASD
(and HJKL
on the Titan Pocket) to navigate in text.
sym
modifiers are marked in red; emoji
modifiers are colored blue (some emoji
modifiers are not yet implemented):
The Titan Pocket only has a sym layer, though it has more modifier keys available:
The Cut/Copy/Paste actions are only available when no modifier is pressed.
The layouts below are from the original TitanPocketKeyboard project. Note that the Sym-layer mapping and some long-press characters have been changed in this fork to better suit the Minimal Phone MP01. The new Sym-layer preview feature is the best way to explore the current layout.
You can enable multipress and select a language-specific template for characters accessed via multiple quick presses.
Key | Multipress |
---|---|
a |
à , â , æ |
e |
é , è , ê , ë |
i |
î , ï |
o |
ô , œ |
u |
ù , û , ü |
y |
ÿ |
c |
ç |
Key | Multipress |
---|---|
a |
á |
e |
é |
i |
í |
o |
ó |
u |
ú |
Key | Multipress |
---|---|
a |
ä |
o |
ö |
u |
ü |
s |
ß |
Key | Multipress |
---|---|
a |
á , â , à , ã |
e |
é , ê |
i |
í |
o |
ó , ô , õ |
u |
ú |
c |
ç |
Key | Multipress |
---|---|
a |
å , æ |
o |
ø , ö |
s |
ß |
Key | Multipress |
---|---|
a |
ä , å , æ |
o |
ö , ø , |
s |
ß |
Key | Multipress |
---|---|
a |
à , â , á , ä , ã |
e |
é , è , ê , ë |
i |
î , í , ï , ì |
o |
ô , ó , ò , ö , õ |
u |
ù , û , ú , ü |
c |
ç |
Key | Multipress |
---|---|
a |
á , à , â , ä , ã |
e |
é , è , ê , ë , ẽ |
i |
í , ì , î , ï , ĩ |
o |
ó , ò , ô , ö , õ |
u |
ú , ù , û , ü , ũ |
Key | Multipress |
---|---|
a |
à , á , â , ä , ã |
e |
è , é , ê , ë , ẽ |
i |
ì , í , î , ï , ĩ |
o |
ò , ó , ô , ö , õ |
u |
ù , ú , û , ü , ũ |
Key | Multipress |
---|---|
ae |
æ |
oe |
œ |
A set of Cyrillic Layers based on the Gemini PDA layout can enabled and toggled with a long press on the right shift key.
The following table shows the characters that can be accessed with a long press and subsequent multipresses. The first column is the character printed on the key
Key | Long press (Titan) | Long press (MP01) | Following multipresses |
---|---|---|---|
q |
0 |
& |
° (degree) |
w |
1 |
1 |
& , ↑ |
e |
2 |
2 |
€ , ∃ |
r |
3 |
3 |
® |
t |
( |
_ |
[ , { , < , ≤ , † , ™ |
y |
) |
- |
] , } , > , ≥ |
u |
- |
+ |
– (em dash), – (en dash), ∪ |
i |
_ |
! |
| |
o |
ô |
# |
ó , ò , ö , õ |
p |
: |
$ |
; , ¶ |
a |
@ |
@ |
æ , ª , ← |
s |
4 |
4 |
ß , § , ↓ |
d |
5 |
5 |
∂ , → , ⇒ |
f |
6 |
6 |
^ |
g |
* |
= |
• , · |
h |
# |
: |
² , ♯ |
j |
+ |
; |
= , ≠ , ≈ , ± |
k |
" |
' |
% , ‰ , ‱ |
l |
' |
" |
` |
z |
! |
7 |
¡ , ‽ |
x |
7 |
8 |
× , χ |
c |
8 |
9 |
ç © , ¢ , ⊂ , ⊄ , ⊃ , ⊅ |
v |
9 |
* |
∀ , √ |
(space bar) |
(tab) |
`` | ⇥ |
b |
. |
% |
… , ß , ∫ , ♭ |
n |
, |
? |
ñ , ¬ , ∩ |
m |
? |
, |
$ , € , £ , ¿ |
Toggling voice input will switch to a voice-input IME if one is installed and enabled, e.g. Google Voice Input (added with Gboard) or Whisper Plus.
Feel free to adjust the layout to your needs by modifying the code and building your own version. If you think your changes could be useful to others, please consider contributing them back to this project, the original project, or by making a public fork.