![使控制器在第二个 x-server 上工作](https://linux22.com/image/1456102/%E4%BD%BF%E6%8E%A7%E5%88%B6%E5%99%A8%E5%9C%A8%E7%AC%AC%E4%BA%8C%E4%B8%AA%20x-server%20%E4%B8%8A%E5%B7%A5%E4%BD%9C.png)
我使用 Linux Mint 17 和 Cinnamon 作为我的主要窗口管理器。
我想在单独的 x 服务器中运行 Steam,以获得更好的全屏性能,因为取消重定向在 Cinnamon 中无法正常工作并导致撕裂并且没有真正的性能优势。
我能够在 vt9 上使用 fluxbox 作为窗口管理器在显示器 :1 上运行 x-server,但我不知道如何让我的控制器在第二个 x-server 上的游戏中工作。到目前为止,我已经测试了 Steam Big Picture、Shovel Knight、Rogue Legacy 和 higan,我的控制器在任何一款上都无法识别。
我可以在主 x 服务器和辅助 x 服务器的 /dev/input 中看到操纵杆,控制器在 jstest-gtk 中可见,并且 xinput 在两个 x 服务器中报告相同的内容(未列出操纵杆)
这不仅仅是一个全局操纵杆问题,因为我的控制器可以在正常登录的情况下在主 x 服务器上运行。
我使用的是 XBox360 控制器。我尝试安装 xboxdrv,但没有任何效果。
我遗漏了什么?有什么想法吗?
答案1
(我还使用 Mint 17 和 Cinnamon 作为我的主要桌面)
您可能考虑使用 Xephyr,它可以在您的 Cinnamon 桌面内创建嵌套的 xserver。我能够在 Xephyr 服务器中使用我的游戏手柄(Thrustmaster PS3 类型)。我没有安装 Steam,但我用另一款游戏(alex4)验证了这一点。我在分叉 Xephyr(旧版本中不存在)时遇到了问题,但能够通过从 xterm 窗口启动来解决这个问题。看看我做了什么可能会帮助您入门:
sudo apt-get install xterm xserver-xephyr alex4
然后从终端:
xterm -e Xephyr :1 -ac -screen 640x480 &
“xterm -e” 导致 xterm 启动并执行以下命令。
“Xephyr :1” 表示新显示器为 :1。如果您有多个显示器,请选择其他显示器。它必须是尚不存在的显示器。(如果您有一个显示器,则显示器为 :0,第二个显示器为 :1,依此类推。)
“Xephyr -ac” 的意思是禁用访问控制,我相信这意味着新的 xserver 将拥有对系统的完全访问权限。
“Xephyr -屏幕宽度x高度”是分辨率(它也可以采用第三个数字表示位深度,我曾经用它来让需要 256 色模式才能通过 wine 运行的旧 Windows 程序)。
“&” 导致 xterm 分叉,允许您在终端中输入另一个命令。
终端中的下一步:
DISPLAY=:1 alex4
将 DISPLAY 系统变量设置为您使用 Xephyr 创建的任何显示,然后启动所需的程序。
如果您编写了一个 shell 脚本来运行这些命令,请在其中放置一些睡眠时间以给 Xephyr 足够的时间来启动新的显示,否则您启动程序的尝试将因段错误而失败。
Xephyr 有一个“-fullscreen”标志,您可以使用它,但您需要使 Cinnamon 桌面的分辨率与 Xephyr 服务器的屏幕分辨率相匹配,才能正常工作。为此使用 xrandr,并记住您的旧分辨率,因为您以后必须将其设置回原样。例如,在我的情况下:
xrandr -s 640x480 && xterm -e Xephyr :1 -ac -screen 640x480 -fullscreen & sleep 3 && DISPLAY=:1 alex4 && killall xterm && xrandr -s 1920x1080 && killall Xephyr
(如果您不知道,&& 符号表示等待第一个进程完成,然后运行下一个进程。单个 & 符号表示分叉第一个进程并继续执行下一个进程。)
希望这对你有帮助。(输入“Xephyr -help”可查看完整选项列表。遗憾的是手册页很少。)