Linux:通过网络共享键盘


12

如标题所示,我想在本地使用远程键盘。远程键盘应该可以在TTY中使用,如果可能,还可以在X-Server中使用。是否有任何驱动程序(内核模块)模拟具有网络透明性的“假”键盘?

Answers:


16

我自己发现的。

首先,请确保已在两台计算机上都加载了evdev内核模块。

在远程计算机上运行:

$ 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
没有的话我会幸运nc -l 4444-p。根据man nc-p明确禁止与结合使用-l。否则,这是一个绝佳的解决方案,正是我需要的解决方案:)
Magnus Hoff

1
我强烈建议您通过安全连接或在本地使用它(尽管那也不是很安全)。如果您导入证书(去,用谷歌搜索:-),则可以使用snetcat(“安全netcat”)。另外,请接受您的解决方案,这个问题仍然是“开放的”。
pruzinat

如果它支持复制和粘贴,那就更好了!
陈铭章

惊人的解决方案!令您印象深刻的是您设法弄清楚了。您是否找到了一种解决方案,可以在一台机器上同时在另一台机器上运行时禁用输出?
Cestarian '16

7

Synergy将在多台计算机之间通过网络共享一个键盘。如果它不能直接执行您想要的操作,那么我敢肯定那里有代码可以使您轻松设置。


Synergy +是协同作用的“分叉”,仍会在错误修正中保留。另外,一些Debian软件包存储库中提供了快速协同功能,并提供了用于协同作用的GUI包装。
约西亚

3
实际上,协同作用取决于X服务器。我需要一个可以在TTY中工作的解决方案。如果我知道如何在TTY中模拟按键,那么我将尝试自己编写一个小应用程序。不幸的是,我无法在Google上找到任何有价值的东西。也许有人可以给我一些提示?
蒂姆2009年

5

看一下Synergy

Synergy是免费的开源软件,可让您轻松地在多台计算机之间共享鼠标和键盘,每台计算机都有自己的显示器。不需要特殊的硬件,您只需要一个局域网即可。Windows,Mac OS X和Linux支持Synergy。重定向鼠标和键盘就像将鼠标移出屏幕边缘一样简单。

协同作用


0

上面使用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的最酷的事情是,它在源计算机上提供了一个小的控制窗口,并且只有在该窗口聚焦时,键盘事件才会发送到目标。这是一种非常方便的方法(我现在正在从源计算机输入此答案,并且没有散乱的按键到达目标计算机,因为我将控制窗口散焦了)。同样,单击控制窗口的中心也将开始转发鼠标事件,单击两下按钮将结束鼠标事件的发送。另外,在控制窗口中单击以启用鼠标转发时,所有键盘事件都将发送到目标,而没有键盘事件发送到源。因此,ALT-TAB被发送到目标,而不会使源计算机上的控制窗口散焦。

我在源计算机上启用了虚拟桌面,因此我只是将x2x控制窗口粘贴在远程桌面上,并且仅在需要控制目标计算机时才去。

该解决方案的版本在X级别,上面的答案在linux设备级别。当然,如果您不在目标和源上都运行X,则根本无法使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.