概要
SHARP Brain のキーボードとタッチパネルを取得したい
/dev/input/event
linux系でキーボードやマウスを直接取得したいんなら、/dev/input/eventほげ を見るのが速い。
user@brain:~$ ls /dev/input/
by-path event0 event1
と、event0 と event1 があるようだ。
ちょっと覗いてみよう。
/dev/input/event0
タッチパネルを触ると色々データが流れてくる。
user@brain:~$ sudo od /dev/input/event0
0000000 046462 061613 156201 000016 000003 000000 004074 000000
0000020 046462 061613 156201 000016 000003 000001 004351 000000
0000040 046462 061613 156201 000016 000003 000030 003534 000000
0000060 046462 061613 156201 000016 000001 000512 000001 000000
0000100 046462 061613 156201 000016 000000 000000 000000 000000
/dev/input/event1
キーボードを押下すると色々データが流れてくる。
user@brain:~$ sudo od /dev/input/event1
0000000 046543 061613 075246 000006 000001 000042 000001 000000
0000020 046543 061613 075246 000006 000000 000000 000000 000000
0000040 046543 061613 160504 000010 000001 000042 000000 000000
0000060 046543 061613 160504 000010 000000 000000 000000 000000
0000100 046543 061613 050232 000014 000001 000043 000001 000000
event の内容
event の内容は linux/input.h で定義されている構造体 struct input_event である。
linuxディストリビューションによって異なるが、基本は下記の通り。
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
構造体の内容は以下のとおり。
type | code | value | 内容 |
---|---|---|---|
EV_SYN | 同期信号、無視して良い | ||
EV_KEY | キーコード | 押下フラグ | キーボードやボタンが押された |
EV_REL | 軸番号 | 相対位置 | ホイールなどが動いた |
EV_ABS | 軸番号 | 絶対位置 | マウスが動いた |
テストコード
適当に作ったテストコード
https://gitlab.com/nekodevteam/brainux/-/blob/main/inputtest/inputtest.cpp
- 噂通り、稀にキー リリースを取り逃すようだ
- なんかタッチパネルは3軸取れる。。。なんだこれ
と謎は深まるばかり、追々確認しよう。