将键盘/鼠标事件传输到无键盘/鼠标的远程主机

将键盘/鼠标事件传输到无键盘/鼠标的远程主机

我想将键盘和鼠标事件从小型 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 之间[电子邮件受保护][电子邮件受保护]

如果这对您有用,您仍然需要将其集成到系统启动文件中,然后它将是自动且无缝的。

相关内容