3. video4linux 驱动中的红外遥控支持

作者:Gerd Hoffmann, Mauro Carvalho Chehab

3.1. 基础知识

大多数模拟和数字电视板都支持遥控器。 其中一些具有微处理器,该微处理器接收 IR 载波,将其转换为脉冲/空间序列,然后转换为扫描代码,并将这些代码返回给用户空间(“扫描代码模式”)。 其他板仅返回脉冲/空间序列(“原始模式”)。

标准 Linux 输入层提供对扫描代码模式下遥控器的支持。 通过 LIRC 提供对原始模式的支持。

为了检查支持并进行测试,建议下载 v4l-utils。 它提供了两个工具来处理遥控器

  • ir-keytable:提供了一种查询遥控器的方法,列出其支持的协议,启用内核对 IR 解码器的支持或切换协议以及测试扫描代码的接收;

  • 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 模式接收 IR 代码。

3.2.2. 不使用 lircd

Xorg 识别多个 IR 键码,其数值低于 247。随着 Wayland 的出现,输入驱动程序也得到了更新,现在应该接受所有键码。但是,您可能只想将键码重新分配给您喜欢的媒体应用程序所喜欢的东西。

这可以通过设置 v4l-utils 在运行时加载您自己的键表来完成。请阅读 ir-keytable.1 手册页以了解详细信息。