我正在测试 xvfb-run 的可能性,并使用此命令行在特定显示器上的 chromium 选项卡中显示著名的 Trex 游戏:$
xvfb-run -n 1 -f ~/.Xauthority --server-args='-screen 0 1600x1200x24 -shmem -listen tcp' chromium-browser --no-sandbox --disable-gpu --window-size=1600,1200 --window-position=0,0 --kiosk http://www.trex-game.skipser.com
事实是,当我按“空格”键时,Trex 应该开始行走和跳跃。但这一切都没有发生。
所以我运行了以下命令:
DISPLAY=:1 xinput
我很惊讶地发现没有真正的键盘。
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Xvfb mouse id=6 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Xvfb keyboard id=7 [slave keyboard (3)]
如果我使用:
DISPLAY=:1 xdotool key space
我能够用 Trex 跳跃,这是正常的,因为如果我是对的,xdotool 会直接与 XTEST 键盘交互。
我以为我的 X 服务器正在侦听 /dev/input 文件夹,但我开始想知道是否应该以某种方式将键盘连接到 X 服务器上。
有谁知道怎么做吗?
尽管问题已经存在很久了,但希望这会有所帮助。
我没有完整的细节,但据我所知:
Xvfb
只是帧缓冲区部分,不包括人类交互设备(HID)。
我能够用 Trex 跳跃,这是正常的,因为如果我是对的,xdotool 会直接与 XTEST 键盘交互。
这似乎是正确的,我的来源是 Unix Stack 中的这个 anwser:
https://unix.stackexchange.com/a/259403
您可以尝试将 X11VNC 连接到它,因为 VNC 层 包含 HID。
查看 Medium 上有关在容器下运行 X11 应用程序的帖子:
https://sax1johno.medium.com/notes-on-running-gui-applications-in-docker-404a7241c53