我想将键盘和鼠标事件从小型 ARMv7 计算机板发送到没有键盘和鼠标的远程计算机板。我计划在本地实现的 CAN 总线上发送这些事件。控制板有一个触摸屏,被检测为触摸板。计划支持硬件键盘,但通常只有虚拟键盘。
上下文:两块板应在多媒体安装中组合成主/从整体。运行多媒体平台的平台(通常但不限于科迪) 是从机,没有键盘、没有鼠标;它应该从 CAN 总线接收输入事件。主控制板还连接到一个小显示器,当从属多媒体板打开时,该显示器起到键盘和触摸板的作用。交叉开发工具链是Gentoo Linux。
所以我想知道将本地键盘和鼠标(触摸板)事件发送到远程主机的最直接的方法,因为我不是核心开发商。
例如,我可以弄清楚使用netcat
将本地键盘/鼠标事件(来自/dev/input/*
)发送到远程计算机,但据我所知,远程计算机上必须插入键盘和鼠标......除非有某种虚拟驱动程序我可以在远程端使用。 (这就是说,我尝试过,但没有成功。)
例如,我并不反对内核输入模块开发,但我宁愿在可能的情况下合并用户空间应用程序,或者在必要时开发一个应用程序。我还更喜欢发送“原始”硬件事件,而不是假设远程板上运行着 Xorg 或 Wayland 等图形引擎。当然,除非气馁。
所以最后我想知道我是否应该
- 破解
lirc
并添加 CAN 支持,例如或 - 破解Linux输入驱动程序。
如果有更省事的方式,我愿意。
答案1
我昨天刚刚做了这个输入拦截工具框架 (gitlab.com/interception)。
安装很简单:
- 安装那里提到的少数必备软件包 (+
pkgconf
) - 克隆存储库
cmake
使用自述文件中给出的选项运行。
快速概念验证:
在源计算机(有键盘的计算机)上:
src/interception-tools/build/intercept -g /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse | nc des.ti.nat.ion 9876
在目标机器上(您想要将事件“传送”到的机器):
nc -l -p 9876 | src/interception-tools/build/uinput
如果目标计算机没有其他输入源,您可能需要导出特定于键盘的yaml
:
uinput -p -d /dev/input/by-id/my-kbd 在 YAML 中打印 my-kbd 特征,其本身可以作为 uinput -c my-kbd.yaml 反馈给 uinput
这是 Debian Bullseye 之间[电子邮件受保护]和[电子邮件受保护]。
如果这对您有用,您仍然需要将其集成到系统启动文件中,然后它将是自动且无缝的。