219 lines
8.4 KiB
Plaintext
219 lines
8.4 KiB
Plaintext
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. |