web-dev-qa-db-ja.com

リモートコントロールの調整(カーネル内LIRC)

最近、Mythbuntu 12.04を使用してMythTVボックスを再構築し、新しいハードウェア(Ivy Bridge)を活用しています。

以前のビルドでは、lircを使用してリモートを管理しました。つまり、キーコードのマッピング->キー押下->アプリケーションキー。それをすべて学ぶのはかなりの旅でしたが、私はそれがすべてどのように機能するかにかなり満足しました。

私が持っているもの:

  • 安価な ChinavasionリモートとUSBドングル がありますが、いくつかの記事を見つけました。これらは主に XBMC での作業(興味深いですが、直接適用できるとは思わない)と Harmonyリモートを作業に取得する (それはChinavasion CVSB-983-非常に便利です。Harmony900を機能させるためにこれが必要だったからです。
  • Mythbuntu 12.04 64ビット
  • MythTV 0.25(おそらく無関係)

今の状態
これを接続すると、「機能する」だけです。Ubuntuがネイティブに使用し、some ボタンを押してから神話に到達するまで。たとえば、リモートから次のボタンを送信できます。 Ctrl-Alt-A (Ubuntuは興味がないと思います)、それをMythfrontendにトラップしますが、リモートの Play ボタンはUbuntuによってキャッチされます(メディアプレーヤーがロードされていないため、大きな円に線が表示されます)。
lircが現在カーネルにマージされているためだと理解していますが、それが気に入っています。

これまでにやったこと:

lsusbを使用してデバイスを見つけました:

$ lsusb  
Bus 001 Device 004: ID 073a:2230 Chaplet Systems, Inc. infrared dongle for remote

イベントデバイス番号が見つかりました:

$ cat /proc/bus/input/devices  
I: Bus=0003 Vendor=073a Product=2230 Version=0110
N: Name="HID 073a:2230"
P: Phys=usb-0000:00:1a.0-1.2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input5
U: Uniq=
H: Handlers=sysrq kbd mouse1 event5 js0 
B: PROP=0
B: EV=10001f
B: KEY=4c37fff072ff32d bf54445600000000 ffffffffff 30c100b17c007 ffa67bfad951dfff febeffdfffefffff fffffffffffffffe
B: REL=343
B: ABS=100030000
B: MSC=10

evtestで入力をテストしました(私は押しました Play):

$ Sudo evtest /dev/input/event5  
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x73a product 0x2230 version 0x110
Input device name: "HID 073a:2230"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
<------------snipped lots of 'Event code' lines------------>
Testing ... (interrupt to exit)
Event: time 1336435683.230656, -------------- SYN_REPORT ------------
Event: time 1336435683.246648, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1336435683.246652, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1336435683.246655, -------------- SYN_REPORT ------------

再びshowkeyをテストしました。 Play キー:

$ Sudo showkey -s
kb mode was RAW
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
0xe0 0x22 0xe0 0xa2 

私が欲しいもの:

  • 上記の方法が正しくない場合、着信ボタンの押下をスキャンする方法が必要です。
  • Ubuntu/Unityが無視するものに各ボタンを押して再マップするか、キープレスをMythに直接渡す方がよいでしょう(これは後でlircでのみ可能ですが、間違っている可能性があります)。
  • 私は本当にカーネル内のドライバーで、つまり明示的にlircをロードせずにこれを行いたいですそれが世界のやり方なら、カーネルの外にlircをロードする「古い」配置を強制するのではなく、現在の動作を自分の望むものにマッピングする方法を見つけたいです。新しいことを学ぶことも価値があります!

私の推測:
setkeycodes を使用する必要があると思いますが、これを設定するのに十分な情報を見つけることができませんでした。

どんな助けも大歓迎です!

3
Geoff

私はちょうど新しいカーネル内ライブラリを発見する同様の道をたどっていました。私にとっては、irリモコンが今や単なるキーボードであることに気付いた瞬間でした。

Showkey/evtestの代替として、Sudo ir-keytable -tを実行して、リモートボタンの押下を検出できます。私はそれがあまりにも多くの新しい情報を提供するとは思わないが。

キーへのリモートスキャンコードのマッピングを調整するには、/ lib/udev/rc_keymaps /のファイルに基づいて独自の設定ファイルを作成する必要があります。

Evtest出力を使用すると、KEY_Xおよびvalueフィールドを使用して識別できますどのrc_keymapsファイルが使用されています。一致するファイルをコピーして編集し、必要に応じてキーを再マッピングします。 Sudo ir-keytable -c -w newfileを使用して、変更した構成をロードできます。これで、evtestを使用して新しい構成をテストできます。

キーマップの変更から十分な柔軟性を得ることができない場合でも、ユーザー空間lircデーモンを使用できます。カーネル内ドライバーからプルするようにlircdを構成してから、lircdを通常どおりに構成できます。

これらの2つのリンク http://forum.xbmc.org/showthread.php?tid=104541 および http://ubuntuforums.org/showthread.php?t=1754719 =、いずれかのセットアップを構成およびデバッグする方法に関する多くの情報があります。

1
Marc

リモートのPlayボタンはgnome-settings-daemonのmedia-keysプラグインによって使用されます。それを無効にして、MythTVがイベントを受信できるようにするには、次のようにします。

$ gsettings set org.gnome.settings-daemon.plugins.media-keys active false

また、xfce4-volumedを無効/アンインストールして、XF86AudioLowerVolumeXF86AudioRaiseVolume、およびXF86AudioMuteがトラップされないようにする必要があります。

いくつかのウィンドウマネージャーキーも再マップする必要がある場合があります(たとえば、私の場合、Ctrl + Alt + Dを使用してLive TVを起動しますが、xfwm4はshow_desktopアクションに使用します)。これは、[設定]> [ウィンドウマネージャー]、[キーボード]タブで実行できます。

さらに、「マウス」コントロールを有効にして、 mythtv-mouse2kbd.py スクリプトで説明した my blog post を使用してキーボードイベントを送信できます。

2
Roman