2013-03-24 10:05:43 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:51:55 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-23 23:41:05 +09:00
2013-03-24 10:05:43 +09:00

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
No description provided
Readme 569 KiB
Languages
Java 100%