背景:我有一个带屏幕的奇特键盘。我相信主机通过 PS/2 连接发送命令在屏幕上绘图(我仍在对协议进行逆向工程)。
我的电脑有一个 PS/2 接口。只需将键盘连接到插头即可,这非常方便,但我需要能够将字节写入接口才能使屏幕工作。Linux 提供了一个/dev/psaux
设备,但它仅提供经过加工的输出。
据我所知,8042 本身被包裹在一个串行设备中,PS/2 协议在内核中由/dev/input
。我找到了一个补丁,该补丁将 serio 设备公开为普通字符设备,但它可以追溯到 2.4 时代,现在已经过时了。(参见https://web.archive.org/web/20130726234145/http://www2.informatik.uni-freiburg.de/~danlee/fun/psaux/。)
似乎有一种方法可以将现代字符设备绑定到 i8042 serio 设备,但我找不到任何关于此方法或它如何工作的信息。
还有人知道更多吗?
答案1
我完全随机地在内核配置中发现了这一点:
Option: SERIO_RAW
Say Y here if you want to have raw access to serio ports, such as AUX
ports on i8042 keyboard controller. Each serio port that is bound to this
driver will be accessible via a char device with major 10 and dynamically
allocated minor. The driver will try allocating minor 1 (that historically
corresponds to /dev/psaux) first. To bind this driver to a serio port use
sysfs interface:
echo -n "serio_raw" > /sys/bus/serio/devices/serioX/drvctl
To compile this driver as a module, choose M here: the module will be
called serio_raw.
我相信这正是我所寻找的。这看起来确实会断开 atkbd 驱动器与端口的连接,我更希望能够在 atkbd 监听的同时发送字节,但我可以忍受这一点。如果我发现更多信息,我会更新此内容。