mieki256's diary



2021/02/25(木) [n年前の日記]

#1 [hsp][raspberrypi] HSP と /dev/input/by-id について調べてる

Raspberry Pi Zero W + Raspberry Pi OS buster 上で HSP3.6beta を動かすとキーボードやマウスが無反応なる件が気になって、もうちょっと調べていたり。

OpenHSP の hsp3dish.cpp を眺めてみると、/dev/input/by-id というパスを見ているようで。

_OpenHSP/hsp3dish.cpp at master - onitama/OpenHSP

キーボードやマウスが違うと、そのあたりでも違いが出てくるのだろうかと気になって。

まず、無反応になる Logicool K400r (USB接続ワイヤレスキーボード、タッチパッド付)はこんな感じ。
$ ll /dev/input
合計 0
drwxr-xr-x  4 root root     140  2月 25 22:15 ./
drwxr-xr-x 17 root root    3660  2月 25 22:15 ../
drwxr-xr-x  2 root root     100  2月 25 22:15 by-id/
drwxr-xr-x  2 root root     100  2月 25 22:15 by-path/
crw-rw----  1 root input 13, 64  2月 25 22:15 event0
crw-rw----  1 root input 13, 63  2月 25 22:14 mice
crw-rw----  1 root input 13, 32  2月 25 22:15 mouse0

$ ll /dev/input/by-id
合計 0
drwxr-xr-x 2 root root 100  2月 25 22:15 ./
drwxr-xr-x 4 root root 140  2月 25 22:15 ../
lrwxrwxrwx 1 root root   9  2月 25 22:15 usb-Logitech_USB_Receiver-event-if02 -> ../event0
lrwxrwxrwx 1 root root   9  2月 25 22:15 usb-Logitech_USB_Receiver-if02-event-mouse -> ../event0
lrwxrwxrwx 1 root root   9  2月 25 22:15 usb-Logitech_USB_Receiver-if02-mouse -> ../mouse0

反応する、Lenovo トラックポイントキーボード(USB有線接続キーボード、トラックポイント付)はこんな感じ。
$ ll /dev/input
合計 0
drwxr-xr-x  4 root root     240  2月 25 22:42 ./
drwxr-xr-x 17 root root    3660  2月 25 22:42 ../
drwxr-xr-x  2 root root     140  2月 25 22:42 by-id/
drwxr-xr-x  2 root root     120  2月 25 22:42 by-path/
crw-rw----  1 root input 13, 64  2月 25 22:42 event0
crw-rw----  1 root input 13, 65  2月 25 22:42 event1
crw-rw----  1 root input 13, 66  2月 25 22:42 event2
crw-rw----  1 root input 13, 67  2月 25 22:42 event3
crw-rw----  1 root input 13, 68  2月 25 22:42 event4
crw-rw----  1 root input 13, 69  2月 25 22:42 event5
crw-rw----  1 root input 13, 63  2月 25 22:14 mice
crw-rw----  1 root input 13, 32  2月 25 22:42 mouse0

$ ll /dev/input/by-id
合計 0
drwxr-xr-x 2 root root 140  2月 25 22:42 ./
drwxr-xr-x 4 root root 240  2月 25 22:42 ../
lrwxrwxrwx 1 root root   9  2月 25 22:42 usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-if01 -> ../event5
lrwxrwxrwx 1 root root   9  2月 25 22:42 usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd -> ../event0
lrwxrwxrwx 1 root root   9  2月 25 22:42 usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-if01-event-mouse -> ../event1
lrwxrwxrwx 1 root root   9  2月 25 22:42 usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-if01-mouse -> ../mouse0
lrwxrwxrwx 1 root root   9  2月 25 22:15 usb-Logitech_USB_Receiver-event-if02 -> ../event0

無反応の、ELECOM M-BL21DBSV (USB接続ワイヤレスマウス)だけを繋いだ状態。
$ ll /dev/input
合計 0
drwxr-xr-x  4 root root     200  2月 25 22:46 ./
drwxr-xr-x 17 root root    3640  2月 25 22:46 ../
drwxr-xr-x  2 root root     120  2月 25 22:46 by-id/
drwxr-xr-x  2 root root     100  2月 25 22:46 by-path/
crw-rw----  1 root input 13, 64  2月 25 22:46 event0
crw-rw----  1 root input 13, 65  2月 25 22:46 event1
crw-rw----  1 root input 13, 66  2月 25 22:46 event2
crw-rw----  1 root input 13, 67  2月 25 22:46 event3
crw-rw----  1 root input 13, 63  2月 25 22:14 mice
crw-rw----  1 root input 13, 32  2月 25 22:46 mouse0

$ ll /dev/input/by-id
合計 0
drwxr-xr-x 2 root root 120  2月 25 22:46 ./
drwxr-xr-x 4 root root 200  2月 25 22:46 ../
lrwxrwxrwx 1 root root   9  2月 25 22:46 usb-ELECOM_ELECOM_BlueLED_Mouse-event-if00 -> ../event2
lrwxrwxrwx 1 root root   9  2月 25 22:46 usb-ELECOM_ELECOM_BlueLED_Mouse-event-mouse -> ../event0
lrwxrwxrwx 1 root root   9  2月 25 22:46 usb-ELECOM_ELECOM_BlueLED_Mouse-mouse -> ../mouse0
lrwxrwxrwx 1 root root   9  2月 25 22:15 usb-Logitech_USB_Receiver-event-if02 -> ../event0

/dev/input/by-id 以下に何も出てこないんじゃないかと思ったけど、そんなことは無いなと…。どれもそれっぽい名前が出てきているように見える。

なんとなく分かってきた。 :

hsp3dish.cpp の initKeyboard() の中で、/dev/input/by-id/ 以下から得られる文字列に対し、正規表現を使って "event-kbd" と "event-mouse" を探して、それをキーボードとマウスとして扱うっぽいのだけど。

キーボードやマウスによっては、"event-kbd" がキーボード、"event-mouse" がマウス、とは限らない文字列を返してくる場合があるのだな…。

例えば Logicool K400r の場合、usb-Logitech_USB_Receiver-event-if02 か usb-Logitech_USB_Receiver-if02-event-mouse がキーボード、usb-Logitech_USB_Receiver-if02-mouse がマウスっぽい気配がする。mouse0 にリンクされてるし。"event-kbd" と "event-mouse" が実態に合ってない。たぶん。

ELECOM M-BL21DBSV の場合、usb-ELECOM_ELECOM_BlueLED_Mouse-mouse がマウスっぽい。これまた、"event-kbd" と "event-mouse" が実態に合ってない。たぶん。

Lenovo トラックポイント付きキーボードだけが、event-kbd はキーボード、event-mouse はマウス(トラックポイント)と返してくるっぽい。それでこの製品だけが反応するのだな。たぶん。

event0 がキーボードに相当するのかなと思ってるけど、二つ出てくるあたりが気になる…。

以上です。

過去ログ表示

Prev - 2021/02 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project