入力デバイス(/dev/input/event*)の入力をデバッグする方法

入力デバイス(/dev/input/event*)の入力をデバッグする方法

私はimonドライバを使用する赤外線レシーバを持っていて、それがカーネルで動作するようにしたいと思います。今リモコンのボタンの半分(ビデオ)は動作しますが、数字キーなどの非常に重要なアイデアは機能しません!

奇妙な考えは、カーネルキーマッピングモジュール(rc-imon-pad)が正しいようですが、実際には使用されていないようです。これは、モジュールなしで同じキーが機能するためです。

imonをロードすると、rc-imon-padモジュールが常にロードされているようで、キーコードがキャッシュされていると思われるので、rc-imon-padを削除しても違いはありません。

これを行うと、迷子になったり、cat /dev/input/event5どのir-keytable -tキーを押してもデータがあるため、ドライバはボタンを登録しますが、間違ったキーコードに変換されるようです。

私のカーネルはNattyのUbuntuストックカーネルです(Linux xbmc 2.6.37-11-generic #25-Ubuntu SMP Tue Dec 21 23:42:56 UTC 2010 x86_64 GNU/Linux)

答え1

便利xinput listですxinput test <device>

例えば、

$x 入力リスト
⎡ 仮想コアポインタ id=2 [メインポインタ(3)]
⎜ ↳ 仮想コア XTEST ポインタ ID=4 [ポインタ (2) から]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [ポインタ(2)から]
⎣ 仮想コアキーボード id=3 [基本キーボード(2)]
    ↳仮想コアXTESTキーボードID = 5 [キーボード(3)から]
    ↳ 電源ボタン ID=6 [キーボード(3)から]
    ↳ビデオバスID=7 [キーボード(3)から]
    ↳ 節電ボタン ID=8 [キーボード(3)から]
    ↳ ASUSノートパソコン追加ボタン ID=9 [キーボード(3)から]
    ↳ AT Translated Set 2 キーボード ID=10 [キーボード(3)から]

マイキーボード(xinput test 10)またはタッチパッド()を監視できますxinput test 11xinput test "SynPS/2 Synaptics TouchPad")さまざまな入力イベントの場合、コンソールに見事に印刷され、引数が抽出されて印刷されます。

これは問題を解決しませんが、少なくとも次のようなcat /dev/input/event1混乱を解読するのに役立ちます。


編集する(コメントの@alphanumから):

10年前、私の答えは正しくありませんでした...申し訳ありません。このクイックダイアグラムをお楽しみください。

┌─────────────────────┐            ┌─────────────────┐               ┌──────────────┐    ┌──────────────────┐
│                     │ HID events │                 │ xinput events │              │    │                  │
│  HID/input device   ├───────────►│ Device-specific ├──────────────►│  the kernel  ├───►│ Userspace (apps) │
│ (e.g. USB keyboard) │    ▲       │     driver      │     ▲         │              │    │                  │
└─────────────────────┘    │       └─────────────────┘     │         └──────────────┘    └──────────────────┘
                           │                               │
                  evtest /dev/input/XX            xinput test <xinput id>

2つのポイントを表示:

  • あなたが得る結果xinput testは「xinput-unified」です。つまり、デバイスドライバによって処理されます。これは、ユーザー空間アプリケーションが表示するものと似ています。
  • あなたが得る結果evtest /dev/input/XXはより「原始的」であり、xinput形式に変換されませんでした。これは、HID デバイスが見るものと似ています。

実際のHIDデバイスを構築するのか、アプリケーションを構築するのかによって、デバッグに使用するかどうかをevtest選択できます。xinput test2つを比較すると、デバイスドライバの問題を解決するのに役立ちます。

答え2

私は同じリモコンを持っており、正しいキーコードを2.6.38-gentoo-r3カーネルに送ります。まだ個々のキーマップを選択する時間がなかったので、キーコードをモジュールにコンパイルしていません。全部または専務です。私は数え切れないほど多くの役に立たないモジュールが私を乱雑にするのが好きではありません。代わりに、v4l-utilsがudevを使用して処理するようにしました。

私はいくつかを学びました:

  • ir-keytable -r の出力を確認するとリストが表示されます。該当するすべてのキーコードあなたのリモコンに。
  • キーテーブルを手動でロードします。 ir-keytable -c -w bleh/keymaps/imon_pad、次に ir-keytable -r がテーブルを返す必要があります。
  • 実際には受信機に欠陥があるかもしれませんが、記録に言及していません。少なくとも1つのメッセージを見たことがあります。lirc リスト彼は箱を返し、新しい箱を買うと問題が解決したと言った。

どのように進むか教えてください。

関連情報