Mono Works

チラシのすきま

Gemini PDAのキーイベント調査

前回の記事で、Gemini PDAのキーレイアウトをいじったのですが、さらにキーをいじりたくなった時のために、キーイベントについて調べてみました。

キーイベントの取得方法

各種イベントの取得方法については、こちらを参照しました。-pオプションを付けて実行すると、デバイスのキー関連情報を得ることができます。出力された情報の見方については、8796nさんの記事が参考になります。

> adb shell
$ getevent -p

中略

# キーボード
add device 7: /dev/input/event2
  name:     "Integrated keyboard"
  events:
    KEY (0001): 0002  0003  0004  0005  0006  0007  0008  0009
                000a  000b  000e  000f  0010  0011  0012  0013
                0014  0015  0016  0017  0018  0019  001c  001d
                001e  001f  0020  0021  0022  0023  0024  0025
                0026  0028  002a  002c  002d  002e  002f  0030
                0031  0032  0033  0034  0036  0038  0039  0067
                0069  006a  006c  00f0  01d0
  input props:
    <none>
# ヘッドホンボタン、画面の開閉など
add device 8: /dev/input/event0
  name:     "ACCDET"
  events:
    KEY (0001): 0043  0044  0057  0058  0072  0073  00a4  0246
  input props:
    <none>
# 特殊キー
add device 9: /dev/input/event1
  name:     "mtk-kpd"
  events:
    KEY (0001): 0072  0074  00e7  0198
  input props:
    <none>

参考サイト

イベントコードの突合せとラベルの取得

一例として、/dev/input/event0でお世話になりそうなの画面開閉のイベントコードとラベルを以下のコマンドで取得してみます。ワタシは、VSCodeでターミナルを2つ並べて、実行させた状態で、Gemini PDAの画面を開閉させました。

2018-09-19-get-event-gemini-02
> adb shell
# イベントコードとの突合せ
$ getevent /dev/input/event0
# Close
0001 0057 00000001
0000 0000 00000000
0001 0057 00000000
0000 0000 00000000
# Open
0001 0058 00000001
0000 0000 00000000
0001 0058 00000000
0000 0000 00000000
> adb shell
# ラベルの取得
$ getevent -lt /dev/input/event0
# Close
[   16974.840324] EV_KEY       KEY_F11              DOWN
[   16974.840324] EV_SYN       SYN_REPORT           00000000
[   16974.884304] EV_KEY       KEY_F11              UP
[   16974.884304] EV_SYN       SYN_REPORT           00000000
# Open
[   17081.833159] EV_KEY       KEY_F12              DOWN
[   17081.833159] EV_SYN       SYN_REPORT           00000000
[   17081.916592] EV_KEY       KEY_F12              UP
[   17081.916592] EV_SYN       SYN_REPORT           00000000

操作、コード、ラベルの調査結果

実際にその他の操作もおこなってみて、得られた結果が以下のとおり。

キー/操作 コード(16進数) コード(10進数) ラベル
画面閉じる 0057 87 F11
画面開く 0058 88 F12
Esc 0074 116 POWER
銀ボタン 00e7 231 SEND
1 0002 2 1
2 0003 3 2
3 0004 4 3
4 0005 5 4
5 0006 6 5
6 0007 7 6
7 0008 8 7
8 0009 9 8
9 000a 10 9
0 000b 11 0
Del 000e 14 BACKSPACE
Q 0010 16 Q
W 0011 17 W
E 0012 18 E
R 0013 19 R
T 0014 20 T
Y 0015 21 Y
U 0016 22 U
I 0017 23 I
O 0018 24 O
P 0019 25 P
Enter 001c 28 ENTER
Tab 000f 15 TAB
A 001e 30 A
S 001f 31 S
D 0020 32 D
F 0021 33 F
G 0022 34 G
H 0023 35 H
J 0024 36 J
K 0025 37 K
L 0026 38 L
\(BackSlash) 0028 40 APOSTROPHE
LeftShift 002a 42 LEFTSHIFT
Z 002c 44 Z
X 002d 45 X
C 002e 46 C
V 002f 47 V
B 0030 48 B
N 0031 49 N
M 0032 50 M
.(Period) 0034 52 DOT
↑(Up) 0067 103 UP
RightShift 0036 54 RIGHTSHIFT
Ctrl 001d 29 LEFTCTRL
Fn 01d0 464 FN
Alt 0038 56 LEFTALT
Space 0039 57 SPACE
,(Comma) 0033 51 COMMA
←(Left) 0069 105 LEFT
↓(Down) 006c 108 DOWN
→(Right) 006a 106 RIGHT

おまけ

単にコードとラベルの組み合わせが知りたい場合は、下記2つのコマンド結果を組み合わせればいいです。

> adb shell
$ getevent -p /dev/input/event2
$ getevent -lp /dev/input/event2

/dev/input/event0

KEY (0001): 0043  0044  0057  0058  0072  0073  00a4  0246
KEY (0001): KEY_F9                KEY_F10               KEY_F11               KEY_F12
            KEY_VOLUMEDOWN        KEY_VOLUMEUP          KEY_PLAYPAUSE         KEY_VOICECOMMAND

/dev/input/event1

KEY (0001): 0072  0074  00e7  0198
KEY (0001): KEY_VOLUMEDOWN        KEY_POWER             KEY_SEND              KEY_RESTART

/dev/input/event2

KEY (0001): 0002  0003  0004  0005  0006  0007  0008  0009
            000a  000b  000e  000f  0010  0011  0012  0013
            0014  0015  0016  0017  0018  0019  001c  001d
            001e  001f  0020  0021  0022  0023  0024  0025
            0026  0028  002a  002c  002d  002e  002f  0030
            0031  0032  0033  0034  0036  0038  0039  0067
            0069  006a  006c  00f0  01d0
KEY (0001): KEY_1                 KEY_2                 KEY_3                 KEY_4
            KEY_5                 KEY_6                 KEY_7                 KEY_8
            KEY_9                 KEY_0                 KEY_BACKSPACE         KEY_TAB
            KEY_Q                 KEY_W                 KEY_E                 KEY_R
            KEY_T                 KEY_Y                 KEY_U                 KEY_I
            KEY_O                 KEY_P                 KEY_ENTER             KEY_LEFTCTRL
            KEY_A                 KEY_S                 KEY_D                 KEY_F
            KEY_G                 KEY_H                 KEY_J                 KEY_K
            KEY_L                 KEY_APOSTROPHE        KEY_LEFTSHIFT         KEY_Z
            KEY_X                 KEY_C                 KEY_V                 KEY_B
            KEY_N                 KEY_M                 KEY_COMMA             KEY_DOT
            KEY_RIGHTSHIFT        KEY_LEFTALT           KEY_SPACE             KEY_UP
            KEY_LEFT              KEY_RIGHT             KEY_DOWN              KEY_UNKNOWN
            KEY_FN

UNKNOWNってなんだよ!!!!!

ひとまずおしまい

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内