#x11 #keyboard #mouse #networking #keyboard-events #input-event #xserver

nightly bin+lib x11-input-mirror

通过网络将 X11 (Xserver) 输入事件从一台 PC 镜像到多台 PC

10 个版本

使用旧的 Rust 2015

0.3.6 2019 年 2 月 3 日
0.3.5 2018 年 8 月 24 日
0.2.2 2018 年 7 月 26 日
0.1.0 2018 年 7 月 16 日

#19 in #keyboard-events

MIT 许可证

25KB
560 代码行

X11/Xserver 输入镜像工具

捕获一台 PC 上的鼠标和键盘事件,然后通过网络广播它们。然后您可以在其他 PC 上回放这些事件。因此,如果它们具有相同的屏幕分辨率和键盘映射,您可以同时有效地控制多个具有 GUI 界面的设备。

演示

安全

强烈建议仅通过 SSH/OpenVPN/WireGuard 等隧道传输流量。

尽管有一个过度设计的内置加密,您可以在 SecurityConfig.toml 中设置。将 password = "" 设置为将禁用它。将其设置为非空字符串(需要 12 个字符或更多)以启用。如果攻击者已经记录了您的流量并获取了您的密码,他们将能够解密他们记录的所有流量(无 PFS)。此程序仅使用 XChaCha20 和密码作为密钥,随机初始 nonce 以明文形式发送。然后消息发送两次,使用不同的 nonce 加密,作为简单的完整性检查。

安装

下载 最新版本

sudo apt install xdotool numlockx xinput

可选地,安装并使用 screenkey 进行调试。

用法

在主服务器上使用 grabber 二进制文件,在从服务器上使用 server

grabber 需要 GrabberConfig.tomlSecurityConfig.tomlserver 需要 ServerConfig.tomlSecurityConfig.toml。示例文件在此存储库中。

如果您想在 VirtualBox 中使用此程序,可能需要禁用从服务器的鼠标集成。

编译

下载 Rust 夜间工具链,然后运行 cargo build --release

X11 抓取解决方案

自0.3版本以来,基于Chromium的浏览器可以开箱即用,但您需要将keyboard_and_clicks_interval_ms(我推荐现在设置为1毫秒)减小。如果您需要最佳性能,可以撤销“使用较慢的方法来捕获点击...”、“更新默认捕获器配置值”和“删除不必要的Xephyr组件”的提交,并为基于Chromium的浏览器使用Xephyr的解决方案。

杂项

MIT许可。

公开了许多函数,也可以用作库。但由于该crate缺乏良好的文档,我建议在使用前浏览源代码。

使用同步网络代码,因此可能不适合在高速网络中控制多个机器。

代码很糟糕,但目前已经可以工作。欢迎改进。

请注意,由于外部因素(例如连接问题、虚拟机资源不均匀,导致程序启动需要更多时间、RNG),设备可能会不同步。如果您在两个浏览器中同时打开没有cookie的YouTube,相同的User Agent,同一IP地址,您可能会得到不同的视频顺序。

依赖项

约3MB
约47K SLoC