You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 16.04 GNOME Shell中系统与应用快捷键冲突问题求助

解决Ubuntu 16.04 GNOME下Ctrl+Shift输入法快捷键冲突问题

我之前在GNOME Shell环境下也碰到过一模一样的快捷键冲突问题,给你几个针对性的解决方案,从简单到进阶:

方案1:修改输入法切换的触发时机(最推荐)

默认情况下,ibus的“仅修饰键切换输入法”是按下修饰键时就触发切换,这就导致你按住Ctrl+Shift再按其他键(比如Chrome的Ctrl+Shift+I)时,系统先响应了输入法切换。我们可以把触发时机改成释放修饰键时才切换,这样只有单独按下Ctrl+Shift并松开时才会切换输入法,按住组合键再加其他按键时不会触发:

  1. 打开终端,执行以下命令:
    gsettings set org.freedesktop.ibus.xkb switch-mode 'release'
    
  2. 重启ibus生效:
    ibus restart
    

这个方法几乎能解决90%的类似冲突,而且不需要额外安装工具,完全适配你的Ubuntu 16.04环境。

方案2:针对特定应用禁用全局输入法快捷键

如果你希望Ctrl+Shift在Chrome和VS Code中完全不触发输入法切换,只在其他场景生效,可以用xbindkeys来实现窗口特定的快捷键规则:

  1. 先安装工具:
    sudo apt-get install xbindkeys xbindkeys-config
    
  2. 获取目标应用的窗口类名:
    • 打开Chrome,在终端执行xprop WM_CLASS,然后点击Chrome窗口,会输出类似WM_CLASS(STRING) = "Google-chrome", "Google-chrome"的内容,记下第二个值Google-chrome
    • 同理,打开VS Code执行xprop WM_CLASS,记下窗口类名Code
  3. 编辑xbindkeys配置文件:
    打开~/.xbindkeysrc,添加以下内容(意思是:排除Chrome和VS Code,其他窗口按下Ctrl+Shift时触发输入法切换):
    "ibus engine $(ibus list-engine | grep -v '^.*\('$(ibus engine)'\)' | head -n1 | awk '{print $1}')"
      control+shift
      ! windowclass = "Google-chrome"
      ! windowclass = "Code"
    
  4. 重启xbindkeys生效:
    killall xbindkeys && xbindkeys
    

这个方案更灵活,但需要一点命令行操作,适合有一定基础的用户。

方案3:更换输入法切换快捷键

如果上面的方法都不符合你的需求,最直接的方式就是换一个不冲突的组合键作为输入法切换快捷键:

  1. 打开GNOME设置 → 区域和语言 → 输入源;
  2. 点击“键盘快捷键”旁边的设置按钮;
  3. 找到“切换到下一输入源”,把快捷键改成比如Ctrl+Alt或者其他你习惯且不冲突的组合。

这个方法最简单,但需要你适应新的快捷键。

内容的提问来源于stack exchange,提问作者yuio

火山引擎 最新活动