将串口输入设备映射至内核输入
虽然 USB 是连接鼠标等输入设备最流行的方式,但串口输入设备(如旧款鼠标)以及更特殊的输入设备(如 3Dconnexion Spaceballs)仍然相当实用,可以通过计算机内置的串口或通过 USB 转串口转换器来实现。
支持这些串口连接输入设备的传统方式是为每个应用程序配置详细信息,例如输入设备连接到哪个串口以及设备使用了什么协议。由于人们在使用串口输入设备时最常用的应用程序是 X.org / XFree86,所以这并不是太大的问题。然而,如果你使用了多种需要直接与串口输入设备通信的应用程序,你可能会遇到每个应用程序对串口输入设备或协议支持的限制。某些应用程序可能不支持你倾向于使用的串口输入设备。
一种更好的方法是由 Linux 内核输入子系统管理串口连接的输入设备,然后通过 /dev/input/device 文件,以与 USB 和 PS/2 输入设备信号相同的方式向应用程序呈现设备生成的输入信号。
本指南介绍了将串口输入设备“附加”到 Linux 内核输入子系统所需的简单步骤。
安装
安装 linuxconsole 软件包:inputattach 工具会告知内核输入子系统输入设备连接到了哪个串口,以及该指定串口上连接的是什么类型的设备。
配置
安装完成后,查看 inputattach --help,以了解 Linux 内核输入子系统支持的详尽串口输入设备列表。
例如,如果你使用的是 Logitech TrackMan Marble 串口鼠标,你应该指定 --mouseman/-mman。
默认配置文件假设使用的是微软串口鼠标,并假设该鼠标连接到计算机的第一个串口。'IAPARAMS' 变量是一个 inputattach 参数数组。系统将为每个元素启动一个 inputattach 实例。有关参数的详细信息,请参阅 inputattach --help。
以下是一个示例配置,已修改为适用于 Logitech 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 工具检查系统的内核日志。对于 Logitech TrackMan Marble 串口鼠标,内核输出为
serio: Serial port ttyS0 input: Logitech M+ Mouse as /class/input/input6
若要使串口输入设备在每次启动时都能工作,请启用 inputattach.service。