我正在尝试切换切换方向()从窗口管理器 (dwm,用 c 编写)。由于似乎没有办法从命令行控制 synergy 操作,我尝试从 wm 触发适当的组合键。
场景:在super+,
wm 捕获的 (comma) 事件上,它应该触发 synergys 正在监听的另一个组合键。由于某种原因XTestFakeKeyEvent
(xlib 函数)根本不起作用,并且模拟按键XSendEvent
不能与修饰符一起使用,所以我不得不对 xdotool 进行系统调用:
xdotool keyup comma key control+alt+shift+F11 // note the required comma key up;
它似乎可以作为 POC 工作,但在某些时候它会在协同作用中导致段错误。请注意,在没有 xdotool 的情况下触发相同的组合键不会导致段错误。
如果有的话,我还有哪些选择?
编辑:super+,
一个明显的解决方案是首先使用 synergy 监听事件,然后在那里处理逻辑(无论是切换屏幕还是向 dwm 发送另一个按键组合)。这应该可行,但意味着服务器和客户端的 dwm 配置不同,因为super+,
客户端中的 dwm 仍应处理这些配置(否则通过其原生键盘控制客户端将无法按预期工作)。