欺骗窗口使其在 kde 中具有焦点

欺骗窗口使其在 kde 中具有焦点

是否有可能让一个窗口相信它有焦点,而实际上却没有?

我的用例描述:我正在玩一款名为《底特律成为人类》的游戏。我正在用游戏手柄玩。该游戏实际上是一部互动电影。它有一个非常复杂的流程图。我想看看在最初的演练后我错过的其他场景。我正在浏览器中阅读演练指南并经常切换到游戏,并且希望查看游戏中的流程图。由于流程图非常复杂,我需要在浏览器中保留大量选项卡,不断上下滚动页面尝试阅读某些节点的描述。我真的很恼火,因为我经常需要重新聚焦游戏本身才能控制它(即使使用游戏手柄)并按 alt+tab 从游戏中释放鼠标。此外,这款游戏让我重新观看了很多我已经看过的场景,并且我想在播放这些场景时做一些其他的阅读。另外,有些场景的交互很小,但我仍然需要为它们聚焦一个游戏窗口。

我想让事情变得更容易。我希望游戏可以通过游戏手柄控制,而其窗口未聚焦。我认为我需要捕获游戏手柄输入并将其重定向到非活动窗口。而这正是我原本想问的。然而,我注意到,铬虽然没有聚焦,但仍然能够通过使用以下网站看到游戏手柄输入:https://gamepad-tester.com/。这意味着(正如我认为的)所有窗口都可以访问游戏手柄输入。

现在我觉得问题出在游戏本身。我认为它会检查它是否处于焦点,如果没有,它不会解释输入。

我希望游戏始终能够解释游戏手柄,即使在失去焦点时也是如此。那可能吗?

我的系统详细信息:
Arch Linux。
游戏通过steam推出。
尝试过使用 Steam 输入和不使用 Steam 输入。
KDE 等离子。
XInput 模式下的罗技 F710 游戏手柄。
游戏以无边框窗口模式启动,还尝试了全屏和窗口模式。

附加信息。
这个技巧不仅对游戏有用(游戏通常在未聚焦时暂停),而且对应用程序也有用。例如,DaVinci Resolve 隐藏带有效果参数的窗口。我正在浏览器中观看 YouTube 上的教程视频。当我聚焦浏览器时,我看不到我的参数窗口来将其与 YouTube 上的参数窗口进行比较。欺骗 DaVinci Resolve 使其具有焦点(同时仍禁用其键盘输入)可能会解决此问题。

答案1

据我所知,不可能有多个焦点。您可以尝试以下解决方案之一:

  • 在虚拟机中玩游戏并远程查看

  • 在 a 中玩游戏vncserver并远程查看它(如果它可以在非加速 x11 上运行)

答案2

这不是您正在寻找的解决方案,但解决方法是在“系统设置”->“工作区”->“窗口管理”->“窗口行为”->“焦点”->“窗口激活策略”中更改鼠标焦点的设置:焦点跟随鼠标(鼠标优先)。这可以让鼠标下方的窗口自动聚焦,我发现这在一般情况下非常方便。

答案3

从长远来看,另一个想法可能是唯一的解决方案。正如大卫·埃德蒙森在《#439483错误报告,可以使用嵌套的 Wayland。貌似支持gpu加速。键盘输入似乎仍然在一个窗口中,但这对我来说不是问题。并且游戏手柄输入应该起作用:合成器窗口未聚焦,但所有窗口都可以监听游戏手柄,然后焦点游戏(在合成器窗口内)获取输入并移动角色。

对我来说剩下的问题是如何在嵌套的 Wayland 中实际开始游戏。我可能会开始的一些链接是:

答案4

我有另一个想法来一半解决这个问题。需要编写一个脚本/应用程序来侦听游戏手柄输入事件(如问题中所述,看起来所有应用程序都可以同时侦听)并将游戏窗口集中在接收任何事件。

这至少会简化切换游戏。但如果想在其他窗口中使用键盘输入,仍然需要使用 alt-tab。

相关内容