覆盖特定于应用程序的快捷方式的系统范围内的快捷方式

fre*_*red 11 keyboard shortcut-keys google-chrome

有没有办法让应用程序中定义的键盘快捷键优先于具有相同键绑定的系统范围的快捷键?

期望的行为: 当按下某些键时,检查焦点应用程序是否想要做任何事情(如果是,那就去做)。如果没有,请检查是否有某些键的系统快捷方式,然后执行此操作。

当前发生的情况: 我已F11在键盘快捷键的设置菜单中设置为“切换全屏”。在 Chrome 中F11应该激活 Chrome 自己的全屏模式,而是被系统范围的快捷方式覆盖,即 Chrome 变为全屏(GNOME 面板和标题栏消失)但不进入 Chrome 的全屏模式(其中选项卡、地址栏和书签栏也消失)。

(旁注:Firefox 没有同样的问题,但这似乎是因为 FF 全屏与窗口管理器全屏触发相同/由窗口管理器触发)

Rob*_*edl 3

免责声明:这并不完全是您想要的,但我花了太多时间在这上面而不是发布它,也许其他人可以使用它。

据我了解,Ctrl + F11 到处都是全屏,但 Chromium 是 Chromium 的全屏!

  1. 思路

xdotool我想如果我使用并将命令直接发送到 chrome 窗口,我可能能够欺骗窗口管理器- 但没有成功。

然后我想我也许可以更改谷歌浏览器中的键盘快捷键,但这似乎是硬编码的 - 另一个死胡同。

  1. 这给我们留下了这个

安装xdotool以模拟键盘按下

sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)

将 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
Run Code Online (Sandbox Code Playgroud)

使其可执行

chmod +x /home/user/fullscreen.sh
Run Code Online (Sandbox Code Playgroud)
  1. 结论

欺骗窗口管理器并偷偷击键似乎是不可能的,但肯定有可能的解决方法。在这种情况下,谷歌使全屏键盘快捷键不可配置,因此它没有达到标准

现在,使用Ctrl + F11窗口管理器可以控制全屏行为(Chromium 除外)。