You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

X11桌面环境:如何让全屏应用接收Option/Meta+左右箭头快捷键?

X11下让应用接收Meta+左右箭头按键的解决方案

一、先解除系统对该快捷键的全局绑定

系统窗口管理器会优先捕获这类全局快捷键,所以第一步得让系统别抢这个按键:

  • GNOME桌面:
    1. 打开「设置」→「键盘快捷键」,找到「窗口」分类下的「平铺窗口到左侧/右侧」快捷键,点击后按Backspace删除绑定;
    2. 或者用命令行直接修改:
      # 禁用左侧平铺快捷键
      gsettings set org.gnome.desktop.wm.keybindings tile-to-left "[]"
      # 禁用右侧平铺快捷键
      gsettings set org.gnome.desktop.wm.keybindings tile-to-right "[]"
      
  • KDE桌面:
    打开「系统设置」→「快捷键」→「窗口管理」,找到「向左平铺」「向右平铺」,删除对应的Meta+左右箭头绑定;
  • XFCE桌面:
    打开「设置管理器」→「窗口管理器」→「键盘」标签,找到「最大化到左侧」「最大化到右侧」,修改或删除绑定。

二、仅在应用全屏时取消系统绑定

如果不想全局禁用,只在目标应用全屏时让系统放弃快捷键,可以用脚本配合窗口工具实现:

  1. 先安装wmctrl和xdotool(大部分发行版软件仓库都有);
  2. 写一个监听脚本(以GNOME为例):
    #!/bin/bash
    # 替换成你的应用窗口标题或进程名
    TARGET_APP="你的应用名称"
    # 保存原始快捷键设置
    ORIG_LEFT=$(gsettings get org.gnome.desktop.wm.keybindings tile-to-left)
    ORIG_RIGHT=$(gsettings get org.gnome.desktop.wm.keybindings tile-to-right)
    
    while true; do
        # 检查目标应用是否全屏
        IS_FULLSCREEN=$(wmctrl -l -G -p | grep "$TARGET_APP" | awk '{print $8}' | grep -q "0x00000001" && echo 1 || echo 0)
        if [ $IS_FULLSCREEN -eq 1 ]; then
            # 禁用系统平铺快捷键
            gsettings set org.gnome.desktop.wm.keybindings tile-to-left "[]"
            gsettings set org.gnome.desktop.wm.keybindings tile-to-right "[]"
        else
            # 恢复原始设置
            gsettings set org.gnome.desktop.wm.keybindings tile-to-left "$ORIG_LEFT"
            gsettings set org.gnome.desktop.wm.keybindings tile-to-right "$ORIG_RIGHT"
        fi
        sleep 1
    done
    
  3. 给脚本加执行权限:chmod +x fullscreen-keyfix.sh,然后在应用启动时自动运行这个脚本。

三、应用层面的补充说明

你试过XGrabKey没用,是因为系统已经先Grab了这个按键,优先级比应用高。虚拟机之所以能拿到这类按键,是因为虚拟机软件(比如VirtualBox、VMware)会主动Grab键盘输入,且优先级高于系统窗口管理器,本质也是绕过了系统的快捷键绑定。所以最可靠的解决方式还是先处理系统层面的绑定,再在应用里做按键捕获。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:47:15