Ubuntu 14.04を実行しており、複数のGriffin powermateノブを実行したいと思います。https://store.griffintechnology.com/powermate。オーディオコントロール以外のキーにマッピングしたいです。ロボットの関節位置を制御するために、そのうちの4つ(多分それ以上)を使用したいと思います。 ROSを使用してコマンドをキャプチャし、ロボットに渡します。
次のコマンドの修正バージョンを使用して最初のコマンドを実行しました。https://askubuntu.com/questions/138148/need-help-with-griffin-powermate-usb-volume-controller-new-64-bit-desktop-ub
ただし、複数のコントローラを使用することはできません。 KERNEL = xxの値がノブ間で変更された唯一の値であるため、udevルールを変更してから.evrouterrcファイルを "Griffin Technology Powermate"の代わりに/ dev / input / event *に変更しようとしましたが、それは本当に許可されていません。同時に使用してください。
また、2人のユーザー(powermate、powermate2)を追加し、両方のコントローラ(evrouterrc、evrouterrc2)の手順をコピーしようとしましたが、evrouterでインスタンスを実行することはできません。
今、どのような措置を取るべきか混乱しています。 udevルールとevrouterを使用して、同じデバイスの複数のインスタンスを考慮し、異なる機能を割り当てることはできますか?それとも別のアプローチを見つけるべきですか?それとも、Linux互換の完全回転ノブを使用できることをご存知ですか?
答え1
報告されたイベントを検索して、各USBデバイスの制御をスクリプトで作成できます。
各デバイスのスクリプトを作成し、バックグラウンドで実行するだけです。選択したプログラミング言語を使用してイベントストリームをポーリングすることもできます。入力ストリームを処理する方法のアイデアはリンクされたドキュメントにあります。
接続ポートでデバイスを指定する必要がある場合は、/dev/by-path または /dev/by-id を試してください。デバイスを設定可能にしたい場合は、すべての入力を繰り返して名前を分類できます。 cat /proc/bus/input/devices
子孫のためにコピーして貼り付けています。
#!/bin/bash
device='/dev/input/by-id/usb-Targus_Laser_Presentation_Remote-if02-event-kbd'
event_blank='*code 48 (KEY_B), value 1*'
event_esc='*code 1 (KEY_ESC), value 1*'
event_f5='*code 63 (KEY_F5), value 1*'
event_prev='*code 104 (KEY_PAGEUP), value 1*'
event_next='*code 109 (KEY_PAGEDOWN), value 1*'
evtest "$device" | while read line; do
case $line in
($event_blank) echo "BLANK SCREEN" ;;
($event_f5) echo "F5" ;;
($event_esc) echo "ESCAPE" ;;
($event_prev) echo "PREVIOUS" ;;
($event_next) echo "NEXT" ;;
esac
done
イベント番号を使用してデバイスをevtest
見つけることができましたが/dev/input/event18
、その番号はシステム内のデバイスに関連付けられている順序によって異なる場合があります。
udevadm info /dev/input/event18
だからデバイスの一意のIDを見つけました。
S: input/by-id/usb-Targus_Laser_Presentation_Remote-if02-event-kbd
最後に、再び使用してデバイスからすべてのイベントをキャプチャし、それをステートメントで使用evtest
できました。case