概要
RaspberryPi でマウスを使う場合普通は GUI を使って操作する場合だと思います
今回は CUI 環境でマウスの動きを取得したかったのでやってみました
環境
- RaspberryPi 8.0 Jessie (kernel Linux raspberrypi 4.1.7+ #817)
- gcc 4.9.2
- マウス (Fujitsu ボールマウス, アキバのジャンク屋で購入)
ソースコード
Linux Input Subsystem という仕組みを使って実現しています
なので OS を持っている RaspberryPi などのシングルボードコンピュータであれば、そのまま併用できると思います
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <linux/input.h>
int count = 0;
main() {
int mouse_fd = open("/dev/input/event0", O_RDONLY);
if (mouse_fd < 0) {
fprintf(stderr,"can't open mouse device\n");
exit(0);
}
struct input_event mouse;
for(;;){
int bytes = read(mouse_fd, &mouse, sizeof(struct input_event));
if(bytes >= 0){
if(mouse.type == EV_REL){
if(mouse.code == REL_WHEEL){
if (mouse.value > 0) {
count++;
} else {
count--;
}
}
printf("%d\n",count);
}
}
}
}
実行および動作確認
- gcc test.c -o test
- ./test
で実行してホイールを動かしてみましょう
方向によって値が上下すると思います
実行するときに USB マウスが RaspberryPi に接続されていないとエラーとなり終了します
値を監視したい場合は pthread などを使って別スレッドで監視するようにしましょう
0 件のコメント:
コメントを投稿