Openbox技术咨询:如何根据条件忽略按键绑定?
解决Openbox中仅在特定应用拦截快捷键,其余窗口正常传递的问题
完全可以实现!Openbox的按键绑定支持条件判断,你只需要在绑定里添加窗口类的匹配规则,只在Firefox窗口中拦截Ctrl+P,其他窗口下让快捷键正常传递给应用程序。
步骤1:确认Firefox的窗口类名
首先要获取Firefox的窗口类,打开终端输入:
xprop WM_CLASS
然后点击任意Firefox窗口,终端会输出类似:
WM_CLASS(STRING) = "Navigator", "Firefox"
这里的第二个值Firefox就是我们需要的窗口类名(用第一个Navigator也能达到相同效果)。
步骤2:修改Openbox配置文件
打开你的Openbox配置文件,通常路径是~/.config/openbox/rc.xml(系统级配置路径为/etc/xdg/openbox/rc.xml),找到<keyboard>标签所在的区域。
添加或者修改如下按键绑定:
<keybind key="C-p"> <action name="If"> <class>Firefox</class> <then> <!-- 仅在Firefox窗口中忽略这个快捷键 --> <action name="Ignore"/> </then> <!-- 没有else块,意味着非Firefox窗口下Openbox不做任何处理,快捷键自动传给应用 --> </action> </keybind>
步骤3:重新加载Openbox配置
保存配置文件后,在终端输入命令让Openbox重新读取配置:
openbox --reconfigure
这样设置后,当你在Firefox窗口按下Ctrl+P时,Openbox会拦截这个按键(不执行任何动作,相当于禁用了打印快捷键);而在其他窗口中,Openbox不会处理这个按键,Ctrl+P会正常传递给当前应用执行它原本的功能。
如果之后需要针对其他应用做类似的设置,只需要替换<class>标签里的应用类名即可,同样用xprop WM_CLASS命令获取对应应用的类名。
内容的提问来源于stack exchange,提问作者tenuej
相关产品推荐
相关产品推荐

