如何在Mac OS X中禁用键盘快捷键?

65
我想禁用Mac OS X 10.8 Mountain Lion上的键盘快捷键Command-WCommand-Q。这是因为它们会干扰我从xQuartz中运行的终端内运行的emacs命令。如何禁用这些键盘快捷键?

2
设置->键盘和鼠标偏好设置->键盘快捷键 要更改快捷键,请双击现有的快捷键,然后按下组成新快捷键的键。 - Tamil Selvan C
4
并非所有的键盘快捷方式都会显示在那里。Command+Q和Command+W就是其中两个例子,它们没有显示出来。 - JohnGB
7
这种问题更适合在AskDifferent社区提问,而不是开发者社区。我投票支持转移。 - Farside
8个回答

40

BetterTouchTool不再免费。

我来到这个页面是因为我想要禁用命令-h(隐藏应用程序),但在“系统偏好设置”中没有显示。这是我的解决方案。

BetterTouchTool是一种实用工具,可以禁用键盘快捷键(还有许多其他用途)。http://www.boastr.de/

全局禁用命令-w的方法:

  1. 安装BetterTouchTool
  2. 单击BetterTouchTool菜单栏项目,选择“首选项”
  3. 单击“手势”
  4. 单击“键盘”
  5. 单击“全局”
  6. 单击“添加新快捷方式”
  7. 单击“键盘快捷方式”
  8. 键入您要禁用的快捷键(例如,command-w)
  9. 将触发预定义操作设置为“无操作”(默认值)

请注意,您还可以为特定应用程序设置键盘快捷键。

仅为终端禁用命令-w的方法:

  1. 安装BetterTouchTool
  2. 点击BetterTouchTool菜单栏项并选择“偏好设置”
  3. 点击“手势”
  4. 点击“键盘”
  5. 在“选择应用程序”窗格底部点击加号
  6. 选择终端(在应用程序/实用工具文件夹中)
  7. 点击“添加新快捷方式”
  8. 点击“键盘快捷键”
  9. 输入您要禁用的快捷键(例如,command-w)
  10. 将触发预定义操作设置为“无操作”(这是默认设置)

我之前已经有了BetterTouchTool并且知道这个,但我来到这里也是为了寻找答案。谢谢你提醒我。 - Endless
希望这对我有用,但是禁用VMWare Fusion中的Ctrl-Alt-F全屏功能并没有起作用。仍然会烦人地切换到全屏模式,而不是在我的Windows应用程序中作为快捷键。 - SilverSideDown
11
BetterTouchTool 不再免费。 - Stephan Dollberg
即使覆盖VirtualBox也能正常工作,太棒了! - michel-slm
由于“command-w”在终端中有一个快捷键,那么它是否也会禁用它? - alper

23
BetterTouch无法更改或禁用导致我麻烦的按键:ctrl-cmd-d

以下是我如何删除它的方法:

  1. 编辑open ~/Library/Preferences/com.apple.symbolichotkeys.plist
  2. 查找kCGHotKeyLookUpWordInDictionary(70)的代码,并将“enabled”设置为OFF (如果没有,请创建一个“70”条目,“enabled”= OFF)。
  3. 重新启动系统

从这个网站上我学到了符号热键并找到了它们的列表: http://www.theregister.co.uk/2009/02/24/hotkeys_framework2/

这些网站列出了plist文件中使用的代码列表,因此可以实际更改快捷方式而不仅仅是删除它们:

http://krypted.com/mac-os-x/defaults-symbolichotkeys/文档化com.apple.symbolichotkeys.plist

我尝试编辑〜/Library/Preferences/com.apple.symbolichotkeys.plist,但里面几乎什么都没有,而且它们几乎都已经被禁用了。例如,没有快捷键70。此外,有没有办法找出给定快捷键的数字代码? - Antimony
使用此答案中建议的工具,轻松查找任何按键组合的代码。 - sam-6174

22

查看或更改键盘快捷键:

  1. 打开系统偏好设置->键盘
  2. 点击键盘快捷键选项卡
  3. 要更改快捷键,请双击现有快捷键,然后按下组成新快捷键的按键。
  4. 如果出现错误,请单击 "恢复默认值" 将键盘快捷键恢复为出厂设置

1
@Ekalavya 并不是所有的快捷方式都会显示在那里。我认为你需要编辑 ~/Library/Preferences/.GlobalPreferences.plist 文件。 - JohnGB
@JohnGB,Sublime Text 似乎无法编辑那个文件。 - fIwJlxSzApHEZIl
@Tamil Selvan 我试图禁用的快捷键是“Command + Return”,它可以使应用程序全屏,该快捷键在热键列表中。 - fIwJlxSzApHEZIl
1
@advocate 通常你会使用 Xcode.app 来编辑那个文件。 - JohnGB
这仅适用于您添加的快捷方式。默认快捷方式不会出现在那里,因此无法进行编辑。 - Timmmm
显示剩余2条评论

15

针对在个别应用程序中与您想要分配的按键冲突的工厂热键可能起作用的解决方案:

使用内置热键管理:

系统偏好设置 | 键盘 | 快捷键 | 应用快捷键

...将现有的映射到一些难以按下的键盘组合(如Cmd-Opt-Shift-backslash)。这将释放旧的按键组合以供分配使用。


我想在一个应用程序中重用cmd-q和cmd-,但是使用Better Touch Tool禁用它们会使它们完全无法使用。这个方法很好用,谢谢! - Norswap
覆盖如此记录在此处对我有用:https://discussions.apple.com/thread/4410612 “打开系统偏好设置>单击键盘>单击键盘快捷键>在左侧面板中单击应用程序快捷键>单击右侧面板下方的“+”按钮>选择Finder作为您的应用程序:>将菜单标题设置为“Bring All to Front”的区分大小写值>通过实际按下命令键+p键将键盘快捷键设置为“command+p”。 - kampsj

5

强烈推荐使用hammerspoon,被定义为GOD LIKE

  1. 安装 Hammerspoon

  2. 打开 ~/.hammerspoon/init.lua

  3. hs.hotkey.bind("cmd", 'H', function()end) 粘贴到文件中

  4. 输入 :wq,然后点击 StatusBar -> Hammerspoon -> ReloadConfig

  5. 完成!

愉快的黑客之旅!


当我尝试这样做时,它不仅禁用了OSX系统快捷键,还禁用了应用程序快捷键。 - magum

1
一种解决方法是在偏好设置/输入中配置XQuartz,启用“选项键发送Alt_L和Alt_R”。
然后将以下内容添加到您的~/.emacs文件中:
(setq x-alt-keysym 'meta)
这并不完美,因为有时您可能仍会误按Cmd-W而不是Option-W,但至少它是可用的。

0

如何编写脚本快捷方式的文章中,我尝试将快捷方式设置为'',但无效,但将其设置为NULL则可以正常工作。以下是一个示例:

TAB_KEY_SYMBOL="\\U21e5"
COMMAND_KEY_SYMBOL="@"
SHIFT_KEY_SYMBOL="$"

defaults write com.apple.finder NSUserKeyEquivalents "{ 'Show Package Contents' = '${COMMAND_KEY_SYMBOL}${SHIFT_KEY_SYMBOL}O'; }"

defaults write com.apple.finder NSUserKeyEquivalents -dict-add 'Add to Sidebar' '\U0000'
defaults write com.apple.finder NSUserKeyEquivalents -dict-add 'Add to Dock' '\U0000'

# kill finder and prefs daemon
killall Finder
killall cfprefsd

# *only* if absent, add bundle id to make it show up in keyboard prefs pane
defaults read com.apple.universalaccess "com.apple.custommenu.apps"
defaults write com.apple.universalaccess "com.apple.custommenu.apps" -array-add "com.apple.finder"

$ defaults read com.apple.finder NSUserKeyEquivalents 
{
    "Add to Dock" = "";
    "Add to Sidebar" = "";
    "Show Package Contents" = "@$O";
}

0

如果您只想禁用单个应用程序的快捷键,可以使用null字符串与NSUserKeyEquivalents首选项:

defaults write org.xquartz.X11 NSUserKeyEquivalents -dict-add "Quit X11" "\0"
defaults write org.xquartz.X11 NSUserKeyEquivalents -dict-add "Close" "\0"

或者

defaults write NSGlobalDomain NSUserKeyEquivalents -dict-add "Quit X11" "\0"

然后重新启动应用程序,您应该会看到菜单栏项已更改且快捷方式已删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接