How to add custom keyboard shortcut for a nested menu item?
This has been bugging me for a couple years now. So in Mac OS X you can assign your own Keyboard Shortcuts (in System Preferences > Keyboard > Keyboard Shortcuts) by typing in the exact name of the menu item to which you intend to bind the keystrokes. So what are you supposed to type if:
- the menu is nested? or
- there are two menu items with the same name that do different things?
I don't care about special cases like Firefox. Please don't mention special cases, unless this is a special case where Apple failed it.
Example with Terminal: Shell > New Tab > Pro and Shell > New Window > Pro. I was using this as an example. I can't imagine that Terminal is the only app with this design flaw.
Another example from Pages: File > Duplicate and Edit > Duplicate. If you want to make
Command-D
duplicate, it'll set it for the edit menu but when that document gets locked, only the file menu has the option for duplicate, the edit menu is greyed out and the shortcut is locked to the unaccessible one.
Solution 1:
There are two answers here, depending on exactly what your question is:
-
If what you want to do is just what your example states, try this:
- Launch Terminal, and open its preferences ⌘,.
- In the Settings preference pane, select Pro in the left-hand column.
- At the very end of the left-hand column, click the Default button.
At that point, you'll find that ⌘N now opens a new window in your preferred style, and ⌘T does the same for a new tab.
-
If your example was just an example, and it's some other app where you want to add a keyboard shortcut, you should be able to do it via System Preferences → Keyboard → Keyboard Shortcuts → Application Shortcuts → +.
As @Nano8Blazex said, you can usually just enter the name of a nested shortcut and it will work fine.
Solution 2:
You can specify the shortcuts like Format->Indentation->Increase
in 10.8 (thanks @JohanKaving), or >Format>Indentation>Increase
in 10.7.
Another option would be to assign a shortcut to a script like this:
tell application "System Events" to tell process "Terminal" to click menu item "Pro" of menu "New Window" of menu item 1 of menu "Shell" of menu bar 1