Chord SHIFT PUNCT DIGIT ALTGR FUNCT
---------------------------------------------------------------------
# ---- SPACE SPACE SPACE SPACE NEW
# --#- A ` 6 ä F6
# -##- B { LEFT å BREAK
- #-#- C ] , ĉ COPY
# ---# D / . DEF
- -#-- E [ 2 é F2
# #--- F ? 4 ¿ F4
- --## G = 9 ĝ F9
# #--# H # HOME ĥ HELP
- --#- I ! 3 í F3
- #--# J ; : ĵ
- #### K @ RESET
- ##-- L _ 7 F7
- -### M > - — F12
- ---# N ) RIGHT ñ NUM
- -##- O | 8 ö F8
# ###- P } + PASTE
# #-#- Q ' PGUP QUIT
# -#-- R $ 5 € F5
- #--- S * 1 ß F1
# -### T % ~
- ###- U & 0 ü F10
- #-## V ( DOWN ŭ
# #### W < INS PASTE2
# #-## X \ PGDOWN
# --## Y ^ UP ÿ
# ##-- Z " END ŝ F11
- -#-# RESET RESET RESET RESET RESET
- ##-# RESET RESET RESET RESET RESET
# -#-# RESET RESET RESET RESET RESET
# ##-# RESET RESET RESET RESET RESET
Arpeggio
---------------------------------------------------------------------
# #--- SHIFT - #--# ALTGR # ##-- ^Z
# -#-- PUNCT - -##- FUNCT # -##- ^B
# --#- DIGIT - #-#- RET/ESC # --## ^Y
# ---# CNTRL - ##-- TAB/DEL - #### ^K
Mnemo
---------------------------------------------------------------------
- #--- S # -#-- R # #--- F # ##-- Z # ###- P
- -#-- E # --#- A - ##-- L - ###- U - #### K
- --#- I # ---# D - -##- O - -### M # #### W
- ---# N - --## G
# -##- B - #-#- C # #-#- Q
# --## Y - #--# J # #--# H
# -### T - #-## V # #-## X
- #--- 1 # #--- 4 - ##-- 7 - ###- 0
- -#-- 2 # -#-- 5 - -##- 8
- --#- 3 # --#- 6 - --## 9
Usage
-----
Initially the letters "P E N T I" are displayed. This is an indication that
it expects you to touch the screen with all 5 fingers in a convenient
position.
Do this with a relaxed open hand, with enough space between your fingers.
Some device screens cannot distinguish between two fingers if they are too
close to each other (notoriously the middle and ring finger). The little
finger should be not too close to the other fingers.
You can use both your right or your left hand. After that, the five virtual
keys are marked as circles on the screen. The current input page is not
resized and stays fully visible.
The "Chord" column can be read this way:
- ---# Only the little finger is pressed
- #--# Index and little finger are pressed simultaneously
# ---- Only the thumb is pressed
# #### All five fingers are pressed simultaneously
With 5 bits we could have 31 combinations. However, combinations where the
ring finger is up while its neighbors are down is physiologically
problematic. Therefore, 4 combinations (those with "RESET" in the table) are
not used for normal keys, leaving 27 combinations: 26 letters plus space.
Some key combinations exist in two forms: As "chord" and as "arpeggio". If
these keys are not pressed simultaneously, but slightly (>= 80 ms) one after
the other, they are taken as an "arpeggio". In that case it depends on which
finger was pressed first (the "direction"), giving two different results.
Arpeggios are much easier to type than to explain. The rules for a
combination to be taken as an arpeggio (instead of a chord) are:
1. The last key must be pressed AT LEAST 80 ms later than the second.
2. The last key must be pressed MAXIMALLY 240 ms.
For example, a backspace (DEL) is generated with middle and index finger.
While pressing middle and index finger simultaneously (or longer than 240 ms)
gives an "l", you get a backspace when you first press the middle finger (as
long as you like, but at least 80 ms), then make a *short* tap with the index
finger and immediately release both fingers.
If you generate an arpeggio of thumb and index finger (# #---) with the thumb
pressed first, the next character will be SHIFTed. The opposite direction
(first index, then thumb) will be a SHIFT-Lock, generating upper-case
characters until this combination is pressed again (or RET, ESC, or one of
the RESET combinations (see below)).
The same goes for PUNCTuation, DIGITs and CNTRL (control) characters.
The keys RETurn, ESCape, TABulator and BS (backspace) are needed relatively
often, so they have their own combination. Pressing middle and then index
finger quickly gives a backspace, while index and then middle gives a TAB.
And perhaps most often used is the "key repeat" function, by moving the
middle finger down to the 6th key. This special key is necessary, because
otherwise no auto-repeat is available. In previous versions I had
experimented with auto-repeating chords, but abandoned it. It was too easy to
trigger unwanted repeats. Instead, in the current chord logic a key
combination is considered ready when all keys of the chord are *released*.
Candidate input (e.g. Japanese or language-specific letters) can be toggled
on/off with CNTRL-SPACE. Typing text will then display matching candidates in
the top row of the screen. Either tap on one of them, or type CNTRL-SPACE
again to abort.
In the standard version, only a minimal set of candidates is installed. You
can install a version with an alternative dictionary (for example by
downloading the Japanese version from the links below).
Function keys are generated with the FUNCT prefix plus a number from the
DIGIT column. F10 is FUNCT-0, F11 is FUNCT-Z and F12 is FUNCT-M.
FUNCT-C generates COPY, FUNCT-P generates PASTE, FUNCT-H (help) shows a cheat
sheet, FUNCT-N (numeric) allows decimal Unicode input, FUNCT-Q (quit) hides
the virtual keyboard, and FUNCT-SPACE restarts (re-calibrates) it.
The characters in the ALTGR column can be (re-)defined with FUNCT-D: First
enter a letter 'a' - 'z', then the new definition. This can be any key,
possibly given via the candidates (CNTRL-SPACE) or as direct numeric Unicode
(FUNCT-N). Giving SPACE as the new definition clears this entry. The process
can be aborted any time with ESC.
FUNCT-W will PASTE an alternative paste buffer, which was filled when FUNCT-C
was pressed without selection.
As a side effect, the arpeggios RET and ESC reset all lock prefixes. This has
the same effect as the RESET chords.
As an additional goodie, swiping the screen vertically outside of any circle
allows you to adjust the display brightness. To enable it, the "Modify
settings" permission must be granted to the PentiKeyboard App, and "Adaptive
brightness" in the "Display & lights" settings must be switched off.
Swiping horizontally lets you adjust the audio volume.
The hardware volume keys (and the gyroscope sensor during long presses)
generate special sequences, starting with a "Δ" character. They can be used
for mouse emulation.
Origin
------
The idea goes back to a hardware keyboard available in the 1980s called
"Octima". As the name implies, it used eight keys.
I reduced the number of keys to five, using the same basic letter assignment.
Instead of Octima's additional prefix keys, I introduced the concept of
arpeggios for prefixes.
Unfortunately, I don't have any original documentation about Octima, and also
can't find anything really useful in the net. So I'm not even sure about the
legal situation. I hope I don't do anything wrong here by publishing my work.
Please use it only for non-commercial purposes!
Octima existed for several languages. At least I have heard about English,
French and German. My implementation is the German version.
In my experience, the language and its key mappings matter much less than one
might expect. I do often write in English and in German, and do not feel any
advantage for German. Normal text contains all kinds of letter combinations,
and which fingers are used for which letter becomes rather unimportant. Also,
for non-text input (program code, editor and GUI commands), the focus is much
more on punctuation, control and function keys anyway.
Mnemonics
---------
To make learning the key combinations easier, Octima came with a mnemonic
system. I don't remember well, but the english sentence was
then lord saw big cup
i.e. just the index finger was 't', the middle finger 'h', the ring finger 'e',
and so on. Pressing index, middle and ring one after the other gives "the".
I can talk only about the German systematics here. The mnemo sentence is
sein rad flog zum pkw
The index finger gives 's'. Pressing the index, middle, ring and little finger
one after the other gives "sein", just middle, ring and little gives "ein". See
the "Mnemo" table at the bottom of the "Penti" file. If you play a little with
the key combinations, you'll see what the idea is.
Some punctuation characters are also related to German mnemos. For example,
PUNCT-= (gleich), PUNCT-> (mehr), PUNCT-& (und) PUNCT-@ (Klammeraffe) and
PUNCT-? (Fragezeichen), while others like DIGIT-> (minus), PUNCT-/ (division)
or DIGIT-+ (plus) apply to English as well. Still others are simply iconic,
like PUNCT-! (i), or DIGIT-: vs. PUNCT-; (j). Perhaps it is best if you try
to remember them by your own ad-hoc rules ;)
IRC Channel
-----------
You can contact me directly in the IRC Channel "#picolisp" on libera.chat
for further questions, discussions and help. You may find me there during
Central European day time under the nickname "abu[m]" or "Regenaxer".
--------------------------------------------------------------------------------
Alexander Burger
Software Lab. / 7fach GmbH
Bahnhofstr. 24a, D-86462 Langweid
abu@software-lab.de
@abu:7fach.de
You can download the standard APK [pentiKeyboard.apk] or a larger version with a Japanese Dictionary [pentiKeyboardJap.apk], the [Source Code], or watch some short demo videos (Scrolling in Vip, Hello World).
Vitaly Parnas published an article in his blog: https://vitalyparnas.com/posts/2020/03/penti-chorded-keyboard
There is also a Termux/Penti/PicoLisp article, demonstrating its usage in a production environment.
In the same spirit, but quite different, is StenoBoard, a single-finger and single-stroke virtual keyboard: [APK], [TGZ]