> It's shocking to me how far ahead MacOS is in terms of keyboard shortcuts compared to all other operating systems.
I agree with your other points (including easier customizability), but have to completely disagree with this quoted sentence.
In my experience of using macOS/OS X/Mac OS X as well as Windows and Linux, macOS is one OS where a user cannot avoid using the mouse or trackpad!
On Windows (and mostly in Linux too), I can navigate the entire system, application menus and UI controls without touching the mouse or trackpad, relying only on the keyboard. The same on a Mac would be frustrating because keyboard navigation, especially for menus, is cumbersome. There are many Apple apps that cannot be completely controlled just using the keyboard either. There are many UI controls (including in dialogs) that just need a mouse or keyboard. When I find these instances, for me it's like death by a thousand paper cuts (note: I do have preferences set to navigate through all controls when hitting Tab).
If you disagree with my assessment, please try this using only the keyboard (no mouse or trackpad) and see how cumbersome it is (not to mention inconsistent in certain ways with the rest of the system too):
* Open System Preferences
* Open the Keyboard settings (just an example)
* Navigate from one tab to another within the settings
Of course, I'd like to know how something like this can be done faster using the keyboard.
On Windows (and mostly in Linux too), I can navigate the entire system, application menus and UI controls without touching the mouse or trackpad, relying only on the keyboard.
It's also far more discoverable --- if you press Alt, accidentally or otherwise, the menu highlights and you can immediately use the arrow keys to navigate it. The underlined letters (sadly missing by default in later Windows versions) also make things more obvious.
In just about every other graphical file explorer I've ever used, including the DOS ones, Enter opens the selected item. In the Mac Finder, it's Command-O. Yes, I get the fact that it's mnemonic with the others in that list, but it's completely contrary to the customary and rapidly learned behaviour of navigating using the arrow keys and Enter ---which is located very close to the arrow keys, and requires only one hand to operate easily.
macOS has discoverability features that obviate the need for the "press alt" feature. You don't even need to know what menu contains your target.
Command-? (command shift /) opens the help menu with fast incremental search through all menubar items, showing you the shortcut of what you're interested in, and also allowing you to tap return to substitute the shortcut.
It’s a nice feature; a shame that it’s not discoverable (i.e. something people would think to look for when they need it, if they hadn't used it before.)
Personally, if I were designing it, I wouldn't have exposed it as a separate bar in the Help menu of the app; but rather just made it an API provider to the OS (sort of like how drag-and-drop data sources work), such that the OS search (Spotlight) could be made a "universal" search, capable of searching both the OS generally, and the currently-focused application specifically.
While I'm dreaming, imagine if you could go into Mission Control and start typing, and it'd highlight/focus the set of windows that "have" the text you're looking for (even if not necessarily scrolled into their viewport.) Like the search you can do in Safari's "tab overview" by pressing Cmd+F there, but across all windows of all apps. Once you've narrowed it down to one window, press Enter and that window will pop to the foreground—perhaps with that text pre-selected as if you had done a Cmd+F search within the app.
Or, something even less likely to happen: imagine if you could move your mouse by searching across the corpus of text visibly on-screen (presumably via interaction with the OS text-rendering layer), such that you could jump the cursor to a specific button; or even to the checkbox with a specific label.
a shame that it’s not discoverable (i.e. something people would think to look for when they need it, if they hadn't used it before.)
It's discovered when someone clicks on the "Help" menu at the top of every single screen. How much more discoverable can it be without resorting to Clippy-style intrusions?
I mean, help sounds like it would be helpful, but all it's used for is to do Help/About, and IIRC, Apple put About somewhere else. So what is an average person doing in the Help menu?
Also: The menu opened by Command-? can be browsed using Ctrl+P and Ctrl+N, like emacs, instead of the up and down keys if you want to move your hands less.
It's a killer combination, allowing you to run menu items with merely a vague notion of their name rather than a memorized jumble of modifier keys.
Every macOS app has a search field in the Help menu where you can instantly look up any menu item, and it’s a built-in feature of macOS, way ahead of Windows.
It's odd that everyone here is mentioning search as a counterpoint, when that's one of the least discoverable interfaces --- just like a command line, you need to at least know what something is called in order to use it. Contrast that with a menu, where you are immediately presented with all the options to choose from.
I love love love this feature. You rock! Thank you. I’m lost on systems that don’t have this feature, and crap apps like Word that hide everything in the UI.
funny. tried an experiment on chrome while reading your comment. how would i find command+shift+t if i didn't know the shortcut from other browsers?
typed "undo close" on that search box. Nothing. clicked on the "tab" menu. still nothing. finally going back to the search box and typing "tab" it shows up as "reopen closed tab" and show me that it is in the "file" menu.
Weird application choices aside, Wonder why apple don't make that a central keyboard first command box like emacs or most code IDEs do. I mean, i don't even know how to go to that help search box without a mouse.
The Finder is still rooted in a spatial metaphor. Cmd+Down to “enter” the focused item (which used to always mean opening it, back when spatial navigation meant that Finder folders all opened in their own windows.) Cmd+Up exits out. (Not sure what this did back in spatial-navigation days; but I wouldn’t be surprised if it refocused the parent dir’s window if it was still open, and reopened it otherwise.)
Also, ever since non-spatial navigation became a thing in macOS, Cmd+[ and Cmd+] have become back/forward through navigation history in all contexts where there is such a thing as a navigation history. Works in Safari, Finder, System Preferences, all the iTunes-diaspora apps...
> Cmd+Up exits out. (Not sure what this did back in spatial-navigation days; but I wouldn’t be surprised if it refocused the parent dir’s window if it was still open, and reopened it otherwise.)
You can still run the Finder in mostly spatial by hiding the toolbar and sidebar. I prefer it that way. Then ⌘↑ does exactly what you think.
> In just about every other graphical file explorer I've ever used, including the DOS ones, Enter opens the selected item. In the Mac Finder, it's Command-O. Yes, I get the fact that it's mnemonic with the others in that list, but it's completely contrary to the customary and rapidly learned behaviour of navigating using the arrow keys and Enter ---which is located very close to the arrow keys, and requires only one hand to operate easily.
Aside from the fact that other users exposed the CMD+arrow shortcuts, Finder's shortcuts are also consistent with the rest of macOS, where "enter" typically renames the selection (try it with a folder in Notes, for example).
It is also Command-Down to open the selected thing in Finder. Command-Up takes you one level in the file hierarchy (e.g., takes you to the parent), which also fits nicely.
I do actually agree with you in general, felt Windows was easier to navigate with the keyboard - especially menus - but that specific one can be done reasonably easily as long you've enabled "Use keyboard navigation..." in Keyboard preferences > Shortcuts:
1. Cmd-space to get Spotlight, "pref" to match System Preferences (on my machine at least), Enter
2. Search is auto highlighted so type "keyb", down arrow, Enter
3. Tab to focus on tab bar, left/right arrow key to move between tabs (this one is a bit buggy, seems the "Text" tab steals the focus so you have to shift-tab back to the tab bar)
It’s nowhere near as good tho. You frequently have to type the name of the entire utility. On MacOS I can open Disk Utility by using CMD space to open Spotlight and type du. I can do this all as one single shortcut without even looking.
On Windows I need to type a lot more and then navigate a list of wordy descriptions in the hope of finding Disk Management. At least now they’ve added Win-X.
Yes! In fact, you don't even need to open System Preferences at all.
You can use this global keyboard shortcut to turn on the "Use keyboard navigation to move focus between controls" setting: Control + Fn + F7
Here how to test if it's on or off:
1. Open a new TextEdit doc.
2. Type some random gibberish.
3. Attempt to save the doc.
4. Hit "Tab" and see if anything happens. If the "Use keyboard navigation to move focus between controls" setting is off, nothing will happen.
Now, with the "Save" dialog still open....
5. Do the key combo: Control + Fn + F7
6. Hit "Tab" again — this time you should notice you're moving through the different UI elements.
Tab lets you move forward/down through the UI. Tab + Shift lets you move in reverse.
If you have System Preferences > Keyboard > Shortcuts open when you do the key combo, you'll notice the checkbox for "Use keyboard navigation to move focus between controls" toggle from checked to unchecked in realtime :)
As a counterpoint, at least on a Mac, when I’m using the keyboard I can keep my hands near the home row. I can fire up a text editor or IDE and write a bunch of code without moving my hands too much.
On Windows, I am constantly moving my right hand over to the INS/DEL/HOME/END/PGUP/PGDN block, because those keys are essential for really simple tasks like moving the cursor to the beginning of the line. And worse yet, I constantly miss the mark and move the cursor to some other part of the document, and have to find my way back again. I find it extremely frustrating.
On a Mac, I can ctrl-a to move to the beginning of a line, ctrl-e to move to the end. Nearly anywhere. Losing that convenience is super frustrating.
That is one of the most frustrating aspects of Microsoft software (and websites) on MacOS- Microsoft blocks GNU Readline shortcuts and overwrites many of the more useful ones with the windows conventions.
If anyone knows how to turn that 'feature' off and get headline back, I'd love to know
I feel like most IDEs and Text editors I’ve used allow you to rebind keys to move the cursor across text. As someone who also doesn’t moving from the home row, I tend to use Vim for everything and it’s a lot more powerful and flexible than the rudimentary emacs shortcuts macOS provides.
Additionally, you can configure Linux to handle system wide emacs shortcuts as well.
If you're using gnome, it looks like there's a preset for it in gnome-tweak-tool in the keyboard settings.
I use dwm without a DE, so I remap mine manually using xmodmap. I use caps lock as an additional modifier key so I can put these types of shortcuts under the same modifier so it doesn't conflict with control and rebound actual caps lock (which I rarely use) to shift + caps lock.
> I could argue that having dedicated keys for navigation when you spend all your time in the IDE is a feature, not a problem.
Are you going to make that argument? Or are you just going to say that you “could”?
The problem with dedicated keys is that I make more errors and it causes more problems with RSI. Ctrl-a and Ctrl-e are easier and more accurate for touch typists, and put less strain on my hands.
Dunno, I've been touch typing since forever and i actually prefer the dedicated keys. Bending my left hand to press ctrl+a looks like more stress to me than moving the right to home/end.
In conclusion, it's basically what you're used to :)
The one thing that baffles me is why Apple won't add the shortcuts for full keyboards into the OS by default. It's not like they're unaware of their existence.
You can map home and end system-wide on Mac. I don't remember the details offhand, so you'll have to search for the method, but it's done with just a config file.
Of course, there are Qt apps, which in their faux-crossplatformity ignore what the system does for them, including these bindings.
I was a heavy keyboard shortcut user on Windows – since Windows 3.1 days – which I believed was designed with mouse being an optional user interface device. Microsoft continued to bring ahead many of the keyboard shortcuts with Win95, XP and beyond.
When I switched to Mac, I was surprised to find how limited Mac keyboard shortcuts are, even till this day. For instance, on Windows one can resize windows with keyboard alone, but not possible, as far as I'm aware, on a Mac.
Not only is it lacking, Apple has also been dropping support for some keyboard shortcuts as well, e.g. you used to be able to put a Mac to sleep with Option+Command+Eject, with the latest TouchID MacBook Pro, Eject button is no longer there and the replacement shortcut with the power button is also not working on TouchID power button.
Yea, it's not always immediately apparent. Here are suggestions for your use cases:
For sleep, I use ctrl - cmd - q (shown at this submission's link)
Resizing windows with keyboard is indeed the missing piece in macOS. Hence, Magnet* is consistently the top app in App Store (others are Spectacle* or Better Snap tool)
---
Spectacle is free and i've been using it for years, even if apparently no longer maintained:
https://www.spectacleapp.com
>There are many UI controls (including in dialogs) that just need a mouse or keyboard.
Dialogs can be activated by using cmd+the letter of the first action. e.g "File already exists, replace / cancel" cmd+R and cmd+C would work.
This is far superior than tabbing around IMHO, but you can do that too, it's an option in settings.
>Of course, I'd like to know how something like this can be done faster using the keyboard.
- cmd+space
- sys <return>
- keyb <down> <return>
- tab
then left and right arrows to choose which tab you want
I think this request is a poor workflow example for keyboard shortcuts. Better examples would be workflows that are a chain of repetitive actions in a sequence.
You may not have tab access for windows/dialog boxes. I think it is deactivated by default. You can activate with ctrl+f7 or system preferences > keyboard > shortcuts > click radial at the bottom for all controls.
Tabbing through the controls like mad, which people keep suggesting, is of course super-tiring and requires keeping track of the subtle focus indicator—and is not seriously a way to use the keyboard. Instead, there's an app called Shortcat that can activate those controls, with you typing the control's text or a part of it. Like a combination of Vimium and Spotlight. Alas, the app is not free.
Also, personally instead of Spotlight I prefer Alfred, which can replace many shortcuts with commands, which are way more ‘mnemonic’. E.g. locking the screen is ‘scr’ in Alfred for me, which pops up ‘Screen saver’ as the suggestion.
> On Windows (and mostly in Linux too), I can navigate the entire system, application menus and UI controls without touching the mouse or trackpad, relying only on the keyboard.
At least on Windows, this is for historical reasons: back in the late 80s and early 90s, when the Windows interface was originally designed, having a mouse (or any other pointing device) was optional. Windows had to be fully usable on computers which came only with a keyboard. (There were a couple of exceptions, IIRC the Paintbrush application which came with Windows required a mouse, for understandable reasons.)
Yes, ctrl-F7 (de-)activates keyboard navigation. When activated, the problem of grand parent does not exist. I don’t use a mouse or touch pad normally.
I think the point was "holding tab to cycle through every user interface element until you get to the visual tabs on the page is an exercise in frustration."
Also for anyone trying to turn on all-element keyboard navigation, you'll probably need to use ctrl-fn-f7.
Granted, I had to disable Quicksilver (lovely app) to enable spotlight, but this is as simple as:
Summon spotlight to open System Preferences
Tab to search
Search for your keyboard Settings
Hit Return
Tab to search
Search again
Hit Return
I get it's not the Windows dynamic (and having just had to spin up a few test server 2008 VMs on vmware today for a specific test, I do appreciate what Windows offers), but it's quite doable. I actually didn't even know how to do it before writing this as I've been used to Windows due to work, but using normal keyboard navigation tools (tab), it was fast to get to what I wanted.
To get to those panes, cmd + space for Spotlight and typing in the pane window works pretty well. Sometimes the index doesn't bring up the answer quickly.
But working in the pane once you're there? You've got me, I don't know how to do that without a mouse.
also alt-tabbing between recently active windows of any app (rather than between whole apps, windows of the same app, or tabs of the same app) is curiously difficult.
after years of frustration, i finally found that "Move focus to active or next window" is the analogue functionality in macos keyboard shortcuts, and it's now mapped to the slightly-less-awkward alt-cmd-tab, from the very awkward ^F4. it's not quite the same in keeping the stack order however (in some nebulous way i haven't really determined yet).
system preferences ->
command + space, type system preferences, enter
keyboard settings ->
command + space, type system preferences, type keyboard, enter
I agree with your other points (including easier customizability), but have to completely disagree with this quoted sentence.
In my experience of using macOS/OS X/Mac OS X as well as Windows and Linux, macOS is one OS where a user cannot avoid using the mouse or trackpad!
On Windows (and mostly in Linux too), I can navigate the entire system, application menus and UI controls without touching the mouse or trackpad, relying only on the keyboard. The same on a Mac would be frustrating because keyboard navigation, especially for menus, is cumbersome. There are many Apple apps that cannot be completely controlled just using the keyboard either. There are many UI controls (including in dialogs) that just need a mouse or keyboard. When I find these instances, for me it's like death by a thousand paper cuts (note: I do have preferences set to navigate through all controls when hitting Tab).
If you disagree with my assessment, please try this using only the keyboard (no mouse or trackpad) and see how cumbersome it is (not to mention inconsistent in certain ways with the rest of the system too):
* Open System Preferences
* Open the Keyboard settings (just an example)
* Navigate from one tab to another within the settings
Of course, I'd like to know how something like this can be done faster using the keyboard.