串行输入设备到内核输入

出自 ArchWiki

尽管 USB 是连接鼠标等输入设备最流行的方式,但串行输入设备,例如较旧的鼠标和更奇特的输入设备(如 3Dconnexion Spaceball)仍然非常实用,可以通过计算机内置的串行端口或通过 USB 转串行转换器连接。

支持这些串行连接的输入设备的传统方法是为每个应用程序配置详细信息,例如输入设备连接到哪个串行端口以及设备使用的协议。由于人们使用串行输入设备最常见的应用程序是 X.org / XFree86,因此问题不大。但是,如果您使用各种需要直接与串行输入设备通信的应用程序,您可能会遇到每个应用程序支持的串行输入设备或协议的限制。某些应用程序可能不支持您希望使用的串行输入设备。

更好的方法是让 Linux 内核输入子系统管理串行连接的输入设备,然后以与 USB 和 PS/2 输入设备信号通过 /dev/input/device 文件呈现给应用程序相同的方式呈现设备生成的输入信号。

本指南介绍了将串行输入设备“连接”到 Linux 内核输入子系统所需的简单步骤。

安装

安装 linuxconsole 软件包:inputattach 实用程序告诉内核输入子系统输入设备连接到哪个串行端口,以及连接到指定串行端口的设备类型。

配置

安装完成后,查看 inputattach --help,以查看 Linux 内核输入子系统支持的大量串行输入设备列表。

例如,如果您有罗技 TrackMan Marble 串行鼠标,您将指定 --mouseman/-mman

默认配置文件假定为 Microsoft 串行鼠标,并假定鼠标连接到计算机的第一个串行端口。'IAPARAMS' 变量是 inputattach 参数的数组。将为每个元素启动一个 inputattach 实例。有关参数的详细信息,请参阅 inputattach --help

这是一个示例配置,已修改为适合罗技 TrackMan Marble 串行鼠标

/etc/conf.d/inputattach
#
# Configuration for inputattach
#
# IAPARAMS is an array of inputattach arguments, see 'inputattach --help'.
# An inputattach instance will be started for each element.

IAPARAMS=(
  "--mouseman /dev/ttyS0"
)

使用

启动 inputattach.service

如果您在执行此操作时恰好在 Xorg 中,并且有一个 InputDevice 鼠标部分指定 /dev/input/mice 作为输入设备文件,那么您的新输入设备很可能现在是 Xorg 鼠标指针移动的另一个来源,除了其他输入设备,例如 USB 鼠标。

确认它工作的另一种方法是使用 dmesg 实用程序检查系统的内核日志。对于罗技 TrackMan Marble 串行鼠标,内核输出为

serio: Serial port ttyS0
input: Logitech M+ Mouse as /class/input/input6

要使您的串行输入设备在每次启动时都工作,启用 inputattach.service