![Linux:通过网络共享键盘](https://linux22.com/image/1221423/Linux%EF%BC%9A%E9%80%9A%E8%BF%87%E7%BD%91%E7%BB%9C%E5%85%B1%E4%BA%AB%E9%94%AE%E7%9B%98.png)
正如标题所示,我想在本地使用远程键盘。远程键盘应该可以在 TTY 中使用,如果可能的话,也可以在 X-Server 中使用。是否有任何驱动程序(内核模块)可以模拟具有网络透明度的“假”键盘?
答案1
我自己发现了这一点。
首先确保你已经加载了埃夫德夫两台机器上都有内核模块。
在远程机器上运行:
$ cat /dev/input/by-path/platform-i8042-serio-0-event-kbd | nc <IP> 4444
在客户端上:
$ nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd
(注意:如果您使用 netcat-openbsd 中的 netcat,例如在 Ubuntu 或 Fedora 中,请不要使用“-p”)
无论我是在 TTY 还是在 X.org 中,它都能完美运行。并且它运行时没有任何延迟!
不幸的是,所有键都是在远程机器上输入的。有没有办法在 nc 运行时暂时禁用它们?我想到在远程机器上运行“cat -”之类的方法,但 Ctrl-C 当然可以结束它。
答案2
协同作用将在网络上在多台机器之间共享键盘。如果它不能直接实现您想要的功能,我相信那里有代码可以让您轻松设置。
答案3
看一眼协同作用。
Synergy 是一款免费开源软件,可让您轻松地在多台计算机之间共享鼠标和键盘,每台计算机都有自己的显示器。无需特殊硬件,您只需要一个局域网。Synergy 支持 Windows、Mac OS X 和 Linux。重定向鼠标和键盘就像将鼠标移出屏幕边缘一样简单。
答案4
上述使用 nc(netcat)的建议对我来说不起作用。
我可以使用此命令打开输入流:
nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd
即使我以 sudo 身份执行,权限也会被拒绝。目标机器上安装的 Linux 非常老旧,因此也许 /dev/input 设备文件在很久以前是只读的。
但是,我能够使用 x2x 解决这个问题,而且结果非常用户友好。
您需要在目标机器上执行“xhost +”,并且使用 gdmsetup 来启用远程连接(这将在下次 gdm 启动 X 会话时删除 X 的 -nolisten 标志)。
此后,你的 xserver 将完全开放远程连接,并且 x2x 可以从源(键盘)机器连接到它
x2x -to 192.168.1.3:0
x2x 的妙处在于,它为您提供了源机器上的一个小控制窗口,并且只有当该窗口聚焦时,键盘事件才会发送到目标。这是一种非常方便的方法(我现在正在从源机器输入此答案,没有任何杂散的按键到达目标机器,因为我已将控制窗口移开焦点)。此外,单击控制窗口的中心也会开始转发鼠标事件,而单击 2 个按钮会结束鼠标事件的发送。此外,当您在控制窗口中单击以启用鼠标转发时,所有键盘事件都会发送到目标,而不会发送到源。因此,ALT-TAB 会发送到目标,而不会使源机器上的控制窗口移开焦点。
我在源机器上启用了虚拟桌面,因此我只需将 x2x 控制窗口粘贴在远程桌面上,只有当我需要控制目标机器时才去那里。
此版本的解决方案处于 X 级别,而上述答案处于 Linux 设备级别。当然,如果您没有在目标和源上运行 X,这将根本不起作用。