有没有办法让应用程序中定义的键盘快捷键优先于具有相同键绑定的系统范围的快捷键?
期望的行为: 什么时候一些钥匙按下时,检查焦点应用程序是否要执行任何操作(如果要,则执行)。如果没有,则检查是否存在系统快捷方式一些钥匙然后这样做。
目前发生的情况: 我F11在设置菜单中将键盘快捷键设置为“切换全屏”。在 Chrome 中F11应该激活 Chrome 自己的全屏模式,但却被系统范围的快捷方式覆盖,即 Chrome 变为全屏(GNOME 面板和标题栏消失),但不会进入 Chrome 的全屏模式(其中标签、地址栏和书签栏也会消失)。
(旁注:Firefox 没有同样的问题,但这似乎是因为 FF 全屏与窗口管理器全屏相同/由其触发)
答案1
免责声明:这并不完全是您想要的,但是我已经花了太多时间在这上面而不发布它,也许其他人可以使用它。
我按 Ctrl + F11 在所有地方都可以全屏显示,但 Chromium 除外,在 Chromium 中它是全屏显示!
- 思路
我认为如果我使用并将命令直接发送到 chrome 窗口,我可能能够欺骗窗口管理器xdotool
- 但无济于事。
然后我想我可以更改谷歌浏览器中的键盘快捷键,但这似乎是硬编码的 - 另一个死胡同。
- 这给我们留下了
安装xdotool
以模拟键盘按下
sudo apt-get install xdotool
将 Ubuntu 键盘快捷键重新配置为任意的快捷键,这些快捷键我们永远不会输入,但可以在脚本中使用
设置->设备->键盘
向下滚动并编辑切换全屏模式然后Ctrl + Alt + 1
点击+
并添加自定义键盘快捷键
然后点击+
并添加自定义键盘快捷键
编辑脚本
nano /home/user/fullscreen.sh
#!/bin/bash
export DISPLAY=:0
windowname=$(xdotool getactivewindow getwindowname | cut -d "-" -f 2)
if [[ $windowname != *"Chromium"* ]]
then
xdotool keydown Ctrl keydown Alt key 1 keyup Alt keyup Ctrl
else
xdotool search --onlyvisible --class "Chromium" windowfocus
sleep 0.2
xdotool key F11
fi
使其可执行
chmod +x /home/user/fullscreen.sh
- 结论
欺骗窗口管理器并偷偷执行按键操作似乎是不可能的,但肯定有变通办法。在这种情况下,谷歌将全屏键盘快捷键设为不可配置,因此它还达不到标准
现在Ctrl + F11除了 Chromium 之外,窗口管理器控制全屏行为。