失败者,Weepers

看起来我有点不对劲星期四当我声称Panther的新自定义键盘快捷键功能无法与Finder的新文件夹和新Finder窗口命令一起使用时It does work, but (a) you need to quit and relaunch the Finder for the changes to take effect; and (b) it won’t let you use Cmd-N for a custom shortcut.

键盘和鼠标首选项面板不会让您知道在更改其快捷方式之前需要退出应用程序,但“为应用程序设置自定义键盘快捷键”的帮助中心信息确实如此然而,关于Finder,这是一个问题:没有明显的方法可以退出它注销并重新登录将会起到作用,但是在Finder中更改菜单快捷方式会带来很多不便但是,如昨天的文章所示,您可以通过AppleScript退出Finder:

tell application "Finder" to quit
delay 2 -- wait 2 seconds for it to quit
tell application "Finder" to launch

您还可以使用Mac OS X的强制退出命令,该命令知道Finder是特殊的,并在选择Finder时将其按钮从“强制退出”更改为“重新启动”。

更新:如果按住Option键并单击Finder的Dock图标,则可以从弹出菜单中选择“重新启动”感谢Tommy Hulme提示。

但是,迫使你重新启动应用程序,实际上很糟糕,实际上是其中之一最小of the problems with Panther’s new custom keyboard shortcuts feature更糟:

  • You need to type the names of the menu items you want to change.想想这是多么奇怪You can’t even use copy and paste, because you can’t select text in a menuTyping menu item names correctly is harder than you might think, because you’ve got specify them precisely, including punctuationQuoting from the Help Center:

    Tip: You must type the command exactly as it appears in the application menu, including ellipses and any other punctuation(An ellipsis is a special character that looks like three periodsTo type an ellipsis, you can use the Character PaletteFor more information, search Mac Help for “Typing special characters.” It may be difficult to tell whether the command is written in the menu with a real ellipsis or with three periods, so if one does not work, try the other.)

    An application knows what its own menu items are, so, quite obviously, you ought to be able to choose menu items from a list.

    Oh, and if you think it’s hard guessing whether “…” is an ellipsis or three dots, good luck guessing how many spaces prefix the menu items in Safari’s View menu.

    What could be less Mac-like than needing to type the exact name of something to use it? Nothing else in the entire Mac OS works like this(并且不要说命令行When the human interface starts following the lead of the command-line interface, we might as well pack up our bags and move to Redmond.)

  • 允许混淆对快捷方式的限制。Although I can’t find this documented anywhere, Panther’s Keyboard Shortcuts features doesn’t seem to allow you to set a shortcut using just the Command key and a letterYou can set shortcuts like Cmd-Shift-N and Cmd-Option-N, but not just Cmd-NIf you try, it just beeps它甚至可以让你使用设置键盘快捷键只要the Option key modifier, which is insane, because Option, by itself, is used to type extended charactersFor example, it let me set the shortcut for the Finder’s Minimize Window command to Option-8:

    Finder的Minimize Window菜单项。

    Which means when I type a bullet in the Finder, the front window is sent into the Dock尼斯。

    所以,你是允许设置有用的快捷方式,如Cmd-N,但你允许设置像Option-N这样荒谬的快捷方式This restriction is the reason I thought the Finder’s shortcut for New Folder couldn’t be changed via the Keyboard & Mouse prefs panel — it能够被改变,但不是改为Cmd-N。

  • 没有冲突管理。The System Prefs keyboard shortcuts feature does nothing — nothing — to prevent conflictsIt’ll happily allow you to set the same shortcut to multiple menu itemsIf you use the Keyboard & Mouse panel to set a shortcut that conflicts with another shortcut you’ve already set in the panel, it will warn you — but it won’t stop youBut if your new shortcut conflicts with one of the app’s built-in (i.enot customized) shortcuts, you don’t even get a warning.

    冲突的菜单项快捷方式。

  • 无法删除默认快捷方式。For example, three or four times in the last six months, Safari has started allowing pop-up windows to appear on my machineEach time this has happened, I check, and lo, the Allow Pop-Up Windows option in Safari’s application menu is turned offThe keyboard shortcut for this command is Cmd-K, which happens also to be my shortcut in Mailsmith for checking mailSo my best guess is that every once in a while, I type Cmd-K while I’m in Safari, thinking that I’m in Mailsmith.

    一世决不want to turn off Safari’s pop-up blocking, so I have no need for a menu shortcut for thisWhat I’d like to do isn’t to change the shortcut, but remove it entirely(Not remove the command, just the keyboard shortcut.) Panther’s Keyboard Shortcuts feature won’t let you do thatBest I could do is change it to Cmd-Shift-Opt-Ctrl-K, which is less likely to be invoked inadvertently (to say the least).

There are so many ways setting a shortcut through the Keyboard & Mouse prefs panel can fail: you can mistype the menu name; you can inadvertently set a shortcut that conflicts with another menu item; you can forget to relaunch an already-running application (or, more likely, you can not even realize that you need to relaunch the app, since the Keyboard & Mouse prefs panel doesn’t tell you so).

Craptacular

我被像这样的应用程序宠坏了的BBEditMailsmith,和脚本调试器,它不仅允许您自定义菜单键快捷方式,还可以立即应用快捷方式更改,显示所有可用菜单命令的列表供您选择,并识别和防止击键冲突但“被宠坏了”不是正确的词 - 这显然是改变捷径的方式应该工作。

一些读者写信从周四开始抱怨我的脚本,指出在任何非英语本地化系统上,你需要在脚本中自定义菜单项名称但这并不比通过键盘和鼠标首选项面板中经过批准的人机界面尝试这样做更糟或不同并且由于prefs面板不允许您设置Cmd-N的快捷方式,但命令行{defaults}工具将,该脚本实际上比prefs面板更强大。

也许你愿意接受所有这一切,理由是Panther的自定义菜单键功能总比没有好错误通常是一半的功能总比没有更糟糕,在这种情况下,半might可能是一个慷慨的描述。

Apple所做的是实现一个新的用户可自定义的架构,用于存储和确定菜单键快捷方式,而不是更换旧建筑,新方式就是坐着在之上旧的。

新的用户可自定义架构将您的自定义键盘快捷键存储在Mac OS X的系统范围内默认数据库,哪些信息存储在那些中cruftily已命名的文件,如“首选项”文件夹中的“com.apple.finder.plist”默认系统只是系统提供的软件存储首选项数据的标准机制,因此它是存储自定义菜单键绑定的好地方。

旧架构 - 它必须注意,尚未被替换 - 是为每个应用程序在其内部资源中定义其菜单键快捷方式对于较旧的Carbon应用程序,它们被定义为应用程序文件的资源分支中的资源对于较新的Carbon应用程序和所有Cocoa应用程序,它们都是在中定义的nib files在应用程序包中但是出于用户定制的目的,实现细节 - 资源分叉数据vsnib文件 - 没有区别关键是键盘快捷键是在应用程序内部定义的,因此,如果要修改它们,则需要破解应用程序本身。

不用说,修改应用程序的内部资源并不是提供用户可配置键盘快捷方式问题的可行解决方案。

问题是存储在新架构中的唯一键盘快捷键是您自定义的键盘快捷键所有应用程序的默认快捷方式,即您尚未更改的默认快捷方式,仍然只在应用程序的内部资源中以旧方式定义。

这解释了Panther键盘快捷键功能中的所有上述缺陷您必须键入菜单项名称,因为键盘和鼠标首选项面板无法询问每个应用程序其菜单项是什么它们存在于nib文件中,但仅仅因为nib文件中存在菜单并不意味着它被使用prefs面板无法询问每个应用程序,“告诉我所有菜单项及其快捷方式。”

这就是为什么键盘和鼠标首选项面板在您的自定义快捷方式和应用程序的内置快捷方式之间不提供冲突检测的原因相同它不仅不知道应用程序的内置快捷方式,它不知道所以我猜这也是prefs面板拒绝让你使用Command和一个字母设置快捷方式的原因 - 这些是最有可能与现有内置快捷方式发生冲突的快捷方式。

就目前而言,prefs面板无法为您提供每个应用程序菜单命令的列表,也无法检测冲突但是,显然,它应该做到这两点如果在当前的底层实现中这是不可能的,那么它并不是强迫用户容忍这些限制的论据 - 这是我们需要一个新的底层实现的论据。

如果Apple希望为用户可自定义的键盘快捷键提供有用的,标准的,系统范围的人机界面 - 我认为他们应该 - 他们需要为应用程序注册提供系统范围的机制所有他们的菜单键快捷方式这意味着这个假设的新菜单键自定义功能仅适用于明确支持它的应用程序,但没有其他方法可以很好地完成。

以前: 老习惯
下一个: 易燃易爆?