Ubuntu如何设置快捷键自定义映射组合
Ubuntu里的自定义快捷键,大体可以分成两种:一种是全局命令型快捷键,比如用Ctrl+Alt+T直接打开终端,这类通常通过系统设置或dconf-editor来配置;另一种则是按键物理行为的重映射,比如把Caps Lock改成Esc,这就得借助xmodmap或AutoKey来实现。别看都和“改快捷键
Ubuntu里的自定义快捷键,大体可以分成两种:一种是全局命令型快捷键,比如用Ctrl+Alt+T直接打开终端,这类通常通过系统设置或dconf-editor来配置;另一种则是按键物理行为的重映射,比如把Caps Lock改成Esc,这就得借助xmodmap或AutoKey来实现。别看都和“改快捷键”有关,但两者在技术实现方式、生效范围以及稳定性上,其实完全不是一回事。

在 Ubuntu 里,自定义快捷键映射这件事,归根到底要分成两条路来看:一种是「全局命令快捷键」,比如用 Ctrl+Alt+T 直接拉起终端;另一种是「按键物理行为重映射」,比如把 Caps Lock 改成 Esc,或者直接对调 Ctrl 和 Super。别看都叫“改快捷键”,其实它们的技术实现、生效范围以及稳定性都不是一回事,方案一旦选偏了,轻则不生效,重则互相打架。
用系统设置添加命令类快捷键
这是最安全、最推荐的起点,适用于你想绑定一个命令到某个组合键的场景(例如用 Win+Enter 启动 VS Code)。
- 路径是
Settings → Keyboard → Shortcuts → +,不是直接改 keybinding 配置文件 - 「命令」栏必须填可执行路径或完整命令,比如
code --new-window,不能只写code(否则可能因 PATH 环境变量缺失而失败) - 组合键输入后要按回车确认,光点“添加”按钮不生效;如果提示“已占用”,说明 GNOME 或当前桌面环境已注册该组合,得换一个
- 这类快捷键只在 GNOME 桌面会话中有效,tty 终端、Wayland 下某些应用(如 Electron 类)可能不响应
用 dconf-editor 修改 GNOME 内置快捷键
当你要覆盖系统级快捷键(比如把 switch-applications 从 Alt+Tab 改成 Super+Tab),就得走 dconf 路径,但风险更高。
- 目标路径是
/org/gnome/desktop/wm/keybindings/,常见键名有switch-applications、panel-run-dialog、show-desktop - 值格式必须是字符串数组,例如
[',单引号和方括号缺一不可;写成'] '会直接失效' - 修改前建议先用
dconf read /org/gnome/desktop/wm/keybindings/switch-applications查看原始值,避免误删 - Wayland 会话下部分 keybinding 键(如
move-to-workspace-*)已被弃用,强行改可能无反应
用 xmodmap 做物理按键重映射
如果你的目标是改变某个键的底层行为(比如让右 Ctrl 变成 Ctrl+Shift,或把 F12 映射为 PrintScreen),xmodmap 是传统方案,但仅限 X11。
- 先用
xev | grep keycode获取目标键的 keycode(注意:F1–F12 在某些键盘上可能被识别为多媒体键,需配合showkey -s或evtest确认) - 映射语句形如
xmodmap -e "keycode 66 = Escape",等号右边是 keysym 名(查表用xmodmap -pke),不是字符串 - 永久生效要写入
~/.Xmodmap,并在~/.xsessionrc里加xmodmap ~/.Xmodmap;Wayland 下完全不支持 xmodmap无法实现「组合键触发单键」(如 Ctrl+C → F3),它只改单键输出,这种需求必须用 AutoKey 或 evrouter
用 AutoKey 实现组合键模拟
真正需要「把 F3 当 Ctrl+C 用」这类逻辑映射时,autokey-gtk 是目前 Ubuntu 上最稳定的选择,但它不是“快捷键设置”,而是宏工具。
- 安装后必须勾选
Automatically start AutoKey at login,否则重启后失效 - 脚本里用
keyboard.send_keys(',注意符号是+c') 不是,大小写敏感 - 热键设为 F3 后,它监听的是「物理按键按下事件」,所以即使你同时按住 Ctrl+F3,F3 仍会触发复制——这点容易引发误操作
- AutoKey 对 Wayland 支持有限,GNOME 42+ 默认 Wayland 下需手动切换到 Xorg 会话才能用
最容易被忽略的一点:GNOME 的快捷键优先级是「系统设置 > dconf > xmodmap > AutoKey」,但它们作用层不同。想让 Ctrl+C 的行为变成 F3,不能只改快捷键,必须用 AutoKey 这类输入事件劫持工具;反过来,只想换一个启动器快捷键,根本不用碰 dconf 或 xmodmap。


































