PadKey - A text input method for gamepad for Android
By Aki Goto <tyatsumi@gmail.com>
Some parts are under Apache 2.0 license,
other parts are released to the public domain.
Latest APK file
https://github.com/tyatsumi/padkey/blob/master/bin/PadKey.apk?raw=true
PadKey is a text input method for gamepad for Android.
Most text characters on standard keyboard can be entered
by standard gamepad by using button stroke combinations.
For example, typing LEFT button and then typing A button
makes character 'a' be entered. Typing RIGHT button and
then typing DOWN button makes character 'b' be entered,
and so on.
The button combinations are designed with being easy to remember
for those who are familiar with standard keyboard touch typing.
On keyboard, all keys except for space bar are typed by
four fingers for each hand. This makes keyboard keys grouped
four columns for each hand. On gamepad, each column
corresponds to each button, although they are pressed by thumbs.
The keyboard-column to gamepad-button mapping is as following tables.
Left hand | Pinky | Ring | Middle | Index
-----------+-------+------+--------+-------
Keyboard | 1qaz | 2wsx | 3edc | 4rfv
Gamepad | LEFT | DOWN | UP | RIGHT
Right hand | Index | Middle | Ring | Pinky
------------+-------+--------+------+-------
Keyboard | 7ujm | 8ik, | 9ol. | 0p;/
Gamepad | A | B | X | Y
Note that LEFT, DOWN, UP and RIGHT buttons are pressed by left hand thumb,
and A, B, X and Y buttons are pressed by right hand thumb,
where gamepad button configuration is as following figure.
UP B
LEFT RIGHT A Y
DOWN X
On the other hand, keyboard keys are grouped by four rows
for each hand. On PadKey, each keyboard-row corresponds
to each button. The keyboard-row to gamepad-button mapping is
as following tables.
Left hand | Top | Upper | Middle | Bottom
-----------+------+-------+--------+--------
Keys | 1234 | qwer | asdf | zxcv
Gamepad | Y | B | A | X
Right hand | Top | Upper | Middle | Bottom
------------+------+-------+--------+--------
Keys | 7890 | uiop | jkl; | m,./
Gamepad | LEFT | UP | RIGHT | DOWN
By combining these 'column buttons' and 'row buttons',
32 keys are described by 8 buttons as following tables.
Top row Upper row Middle row Bottom row
-----+--------- -----+--------- -----+--------- -----+---------
Key | Gamepad Key | Gamepad Key | Gamepad Key | Gamepad
-----+--------- -----+--------- -----+--------- -----+---------
(Left hand) | | | |
Pinky 1 | LEFT Y q | LEFT B a | LEFT A z | LEFT X
Ring 2 | DOWN Y w | DOWN B s | DOWN A x | DOWN X
Middle 3 | UP Y e | UP B d | UP A c | UP X
Index 4 | RIGHT Y r | RIGHT B f | RIGHT A v | RIGHT X
(Right hand) | | | |
Index 7 | A LEFT u | A UP j | A RIGHT m | A DOWN
Middle 8 | B LEFT i | B UP k | B RIGHT , | B DOWN
Ring 9 | X LEFT o | X UP l | X RIGHT . | X DOWN
Pinky 0 | Y LEFT p | Y UP ; | Y RIGHT / | Y DOWN
On keyboard, index fingers has more keys to be typed.
For these keys, 'row buttons' are mapped mirror symmetrical
position as following tables.
Left hand index finger
Key | Gamepad
-----+---------
5 | RIGHT LEFT
t | RIGHT UP
g | RIGHT RIGHT
b | RIGHT DOWN
Right hand index finger
Key | Gamepad
-----+---------
6 | A Y
y | A B
h | A A
n | A X
Spaces and some symbols have exceptional mappings as following tables,
so just memorize.
Key | Gamepad Key | Gamepad
-------+--------- -----+---------
Esc | UP UP ` | UP DOWN
Space | DOWN DOWN - | B A
Tab | LEFT LEFT = | B X
BS | B B ' | B Y
Space | X X \ | Y A
Enter | Y Y [ | Y B
] | Y X
Note that Esc (UP UP) hides input method view and disable PadKey.
To re-enable PadKey, push Y, L1 or L2 on default configulation.
Next, introduce special keys.
When you notice that you have mistyped while typing combination half,
you can cancel it and clear combination buffer by typing L2.
By typing R2, input mode is toggled.
In insert mode, characters are entered by button combination.
In move mode, the cursor is moved around by D-Pad and
text is erased as backspace by A.
Next, introduce modifiers.
Currently only SHIFT modifier is implemented.
Button DOWN is 'shift button' for right thumb buttons (A, B, X and Y),
and button X is 'shift button' for left thumb buttons
(UP, DOWN, LEFT and RIGHT).
To shift, first push and hold 'shift button' (DOWN or X), and
while holding 'shift button', type first button of a combination,
then release the 'shift button', then type second button of the combination.
For example, To enter capital character 'A', first push and hold X,
and while holding X, type LEFT, then release X, then type A.
Following are completed mapping tables.
Non-shifted maps
Top row Upper row Middle row Bottom row
-----+--------- -----+--------- -----+--------- -----+---------
Key | Gamepad Key | Gamepad Key | Gamepad Key | Gamepad
-----+--------- -----+--------- -----+--------- -----+---------
(Left hand) | | | |
Pinky 1 | LEFT Y q | LEFT B a | LEFT A z | LEFT X
Ring 2 | DOWN Y w | DOWN B s | DOWN A x | DOWN X
Middle 3 | UP Y e | UP B d | UP A c | UP X
Index 4 | RIGHT Y r | RIGHT B f | RIGHT A v | RIGHT X
Index 5 |RIGHT LEFT t | RIGHT UP g |RIGHT RIGHT b |RIGHT DOWN
(Right hand) | | | |
Index 6 | A Y y | A B h | A A n | A X
Index 7 | A LEFT u | A UP j | A RIGHT m | A DOWN
Middle 8 | B LEFT i | B UP k | B RIGHT , | B DOWN
Ring 9 | X LEFT o | X UP l | X RIGHT . | X DOWN
Pinky 0 | Y LEFT p | Y UP ; | Y RIGHT / | Y DOWN
Key | Gamepad Key | Gamepad
-------+--------- -----+---------
Esc | UP UP ` | UP DOWN
Space | DOWN DOWN - | B A
Tab | LEFT LEFT = | B X
BS | B B ' | B Y
Space | X X \ | Y A
Enter | Y Y [ | Y B
] | Y X
Esc (UP UP) disable PadKey
Y, L1 or L2 on default configration re-enable PadKey
Shifted maps
DOWN and X are shift buttons
Hold shift button while typing first button of combination
Top row Upper row Middle row Bottom row
-----+--------- -----+--------- -----+--------- -----+---------
Key | Gamepad Key | Gamepad Key | Gamepad Key | Gamepad
-----+--------- -----+--------- -----+--------- -----+---------
(Left hand) | | | |
Pinky ! | LEFT Y Q | LEFT B A | LEFT A Z | LEFT X
Ring @ | DOWN Y W | DOWN B S | DOWN A X | DOWN X
Middle # | UP Y E | UP B D | UP A C | UP X
Index $ | RIGHT Y R | RIGHT B F | RIGHT A V | RIGHT X
Index % |RIGHT LEFT T | RIGHT UP G |RIGHT RIGHT B |RIGHT DOWN
(Right hand) | | | |
Index ^ | A Y Y | A B H | A A N | A X
Index & | A LEFT U | A UP J | A RIGHT M | A DOWN
Middle * | B LEFT I | B UP K | B RIGHT < | B DOWN
Ring ( | X LEFT O | X UP L | X RIGHT > | X DOWN
Pinky ) | Y LEFT P | Y UP : | Y RIGHT ? | Y DOWN
Key | Gamepad
-----+---------
~ | UP DOWN
_ | B A
+ | B X
" | B Y
| | Y A
{ | Y B
} | Y X
Special buttons
L2: Cancel and clear combination buffer
R2: Toggle mode (INSERT and MOVE)
In MOVE mode
A: Repeating BackSpace
Gamepad button configuration can be customized.
See setting
Settings -> Language & input -> PadKey Settings -> Gamepad.
US and JP keymaps are supported currently.
See setting Keymap.
Other settings are not functional yet.
Candidates view is not supported yet.
It is in the TODO list.
Description
Languages
Java
100%