3. video4linux 驅動中的紅外遙控支援

作者:Gerd Hoffmann,Mauro Carvalho Chehab

3.1. 基礎知識

大多數模擬和數字電視板都支援遙控器。其中一些具有微處理器,接收紅外載波,轉換為脈衝/間隔序列,然後轉換為掃描碼,並將這些碼返回到使用者空間(“掃描碼模式”)。其他板僅返回脈衝/間隔序列(“原始模式”)。

掃描碼模式下的遙控器支援由標準 Linux 輸入層提供。原始模式下的支援透過 LIRC 提供。

為了檢查支援並進行測試,建議下載 v4l-utils。它提供了兩個工具來處理遙控器:

  • ir-keytable:提供查詢遙控器、列出其支援的協議、啟用核心內紅外解碼器支援或切換協議以及測試掃描碼接收的方法;

  • ir-ctl:提供透過 LIRC 介面處理支援原始模式的遙控器的工具。

通常,當電視卡被檢測到時,遙控器模組會自動載入。但是,對於少數裝置,您需要手動載入 ir-kbd-i2c 模組。

3.2. 工作原理

這些模組將遙控器註冊為 Linux 輸入層內的鍵盤,即您會將遙控器的按鍵視為正常的按鍵(如果啟用了 CONFIG_INPUT_KEYBOARD)。

使用事件裝置 (CONFIG_INPUT_EVDEV),應用程式可以透過 /dev/input/event<n> 裝置訪問遙控器。udev/systemd 將自動建立裝置。如果您安裝了 v4l-utils,它也可能自動載入與預設不同的鍵表。有關詳細資訊,請參閱 v4l-utils ir-keytable.1 手冊頁。

ir-keytable 工具非常適合故障排除,例如檢查輸入裝置是否確實存在、它是哪個裝置、檢查按下遙控器上的按鍵是否確實生成事件等等。您還可以使用任何其他更改鍵對映的輸入工具,例如 input kbd 工具。

3.2.1. 與 lircd 一起使用

lircd 守護程序的最新版本支援從 Linux 輸入層(透過事件裝置)讀取事件。它還支援以 lirc 模式接收紅外碼。

3.2.2. 不使用 lircd

Xorg 識別多個數值小於 247 的紅外部索引鍵碼。隨著 Wayland 的出現,輸入驅動也得到了更新,現在應該接受所有鍵碼。然而,您可能只想將鍵碼重新分配為您喜歡的媒體應用程式所接受的鍵碼。

這可以透過設定 v4l-utils 在執行時載入您自己的鍵表來完成。有關詳細資訊,請閱讀 ir-keytable.1 手冊頁。