
キーボードドライバと対応するハンドラの位置を説明してください。
ドライバー:
ls /lib/modules/4.10.0-28-generic/kernel/drivers/input/mouse
ディスプレイマウス用のすべてのデバイスドライバ(マイコンピュータpsmouse.ko
で使用されている)は----->として提供されます。私にとっても、sudo rmmod psmouse
タッチパッドはまだ動作していませんが、usbmouse
動作しています。 (使用しているためusbmouse/usbhid
)
それでは、私のキーボードドライバはどこにありますかlsmod
?ls /lib/modules/4.10.0-28-generic/kernel/drivers/input/keyboard
lsmodリストに何もありませんか?
マネージャー:
転送cat /proc/bus/input/devices
----->以下を提供します。
SynPS/2 Synatics Touchpad (Handlers : mouse0 event6)
AT Translated Set 2 Keyboard (Handlers : sysrq,kbd,event4,leds)
転送cat /proc/bus/input/handlers
----->以下を提供します。
rfkill,kbd,sysrq,mousedev,evdev,joydev,leds
しかし、mousedev
ハンドラを使用する代わりにmouse0
。なぜこれが起こるのですか?mouse0
で使用できます/dev/input/mouse0
。なぜ同様のものを使用できないのですかkbd
?
注:アクティビティはで利用できますが、/dev/input
なぜできないのですかkbd
?
答え1
簡単な概要:マウスとキーボードの処理は階層化されています。カーネルレベルで最も抽象的な階層は入力イベント階層/dev/input/event*
です。を使用してイベントを読み取ることができますevtest
。上記のドライバはX(evdev
または低レベルドライバ)またはWayland()用のlibinput
ドライバです。以下は、USB HIDデバイス(usbmouse
/ usbhid
)、PS / 2キーボード(kbd
)、およびPS / 2マウス()のmousedev
ドライバです。マウスデバイスには、さまざまなプロトコルとマウスの接続方法を備えた現在では使用されていないシリアルポートマウスドライバも含まれているため、やや複雑な動物園です。
/dev/input/mouse0
~である装備PS/2レベルマウスイベントの場合の代わりmousedev
にカーネルモジュール処理してください、AFAIK。デバイス名が「Handler」の下にリストされている理由がわかりませんcat /proc/bus/input/devices
。やや一貫性がありません。
デフォルトでは、PS / 2レベルのキーボードイベント用のデバイスはありませんが、正しいモジュールおよび/またはオプションを使用してデバイスを作成できます(通常は必要ではないため、参照する必要がありました)。
結論:何らかの理由で低レベルのプロトコル(PS / 2、シリアル、USB、HID...)を扱う必要がない場合は、そのままにしてください。デバイスを使用する/dev/input/event*
か、X または Wayland 抽象化を使用します。
(純粋な好奇心ではない限り)実際に達成したいことに基づいて質問を編集できる場合は、より良い提案を提供できます。