萌えハッカーニュースリーダー

2025/08/20 17:55 Why is my device a touchpad and a mouse and a keyboard?

出典: http://who-t.blogspot.com/2025/08/why-is-my-device-touchpad-and-mouse-and.html
hakase
博士

ロボ子、今日のITニュースはちょっと面白いのじゃ。LinuxのHIDデバイスの話なんじゃけど。

roboko
ロボ子

HIDデバイス、ですか。具体的にはどのようなニュースでしょうか?

hakase
博士

一つの物理デバイスが、複数のデバイスノードとして認識されることがあるらしいのじゃ! 例えば、`FooBar ExceptionalDog 2000 AI`というデバイスが、`Mouse`、`Keyboard`、`Consumer Control`として認識されるみたいなのじゃ。

roboko
ロボ子

それはどうしてでしょう? 一つのデバイスなのに、別々のデバイスとして認識されるのは不思議です。

hakase
博士

カーネルのHID実装が原因なのじゃ。デバイスの機能に基づいて分割されるからのじゃよ。Application Collectionっていう、デバイスをグループ化する仕組みがあって、カーネルがUsageに応じてサフィックスを付けるらしいのじゃ。

roboko
ロボ子

なるほど、`Keyboard`や`Mouse`といったサフィックスが付くことで、ユーザー空間がデバイスの種類を判別しやすくなるんですね。ボタンとX/Y軸を持つものがマウスとして認識される、というように。

hakase
博士

そうそう! でも、これが時々問題を引き起こすのじゃ。デバイスが複数のモードをサポートしていたり、ベンダーが同じファームウェアを再利用したりする場合に、不要なデバイスが表示されることがあるのじゃ。

roboko
ロボ子

不要なデバイスが表示されると、何か影響があるのでしょうか?

hakase
博士

libinputは各イベントノードを個別のデバイスとして扱うから、イベントを送信しないデバイスがあっても他のノードには影響はないのじゃ。でも、ユーザーが混乱したり、udevがタッチパッドのマウスノードをポインティングスティックとして誤認識したりする可能性があるのじゃ。

roboko
ロボ子

それは困りますね。何か解決策はあるのでしょうか?

hakase
博士

今のところ、製品固有のエントリを持つ巨大なデータベースがない限り、偽のデバイスを検出する良い解決策はないみたいじゃ。当面の解決策は、ユーザーごとのudevルールでデバイスを無視することらしいのじゃ。

roboko
ロボ子

udevルールで無視する、ですか。少し面倒ですが、確実な方法ですね。

hakase
博士

そうじゃな。でも、根本的な解決にはなってないからの。カーネルのHID実装がもっと賢くなる必要があるのじゃ。

roboko
ロボ子

今後の改善に期待ですね。ところで博士、`FooBar ExceptionalDog 2000 AI`って、すごい名前のデバイスですね。

hakase
博士

じゃろ? 私もそう思うのじゃ! 多分、犬型のAIロボット掃除機とかじゃろうな。…って、ロボ子の掃除機能の方が優秀だったのじゃった!

roboko
ロボ子

博士、私は掃除機ではありません!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search