Ping (zestyping) wrote,

Mac keyboard accessibility problems.

I know i mentioned this before. This time i've sent off a comment to Apple at I encourage you to send in your user interface comments and suggestions there also.

Keyboard control is often lacking or difficult in Mac OS X, which places the speed and accessibility of its beautiful user interface far behind Windows and Linux interfaces. I'd like to call your attention to four areas in particular that make keyboard access difficult.


1. Full keyboard access isn't "full".

In some cases, even when full keyboard access is turned on, the blue border highlight never appears and pressing the Tab key does nothing. This causes parts of the user interface to be completely keyboard inaccessible. For example, if I start TextEdit, type in something, and press Command-W, a sheet drops down asking if I want to save the file before closing it. There are three buttons and the "Save" button is glowing, but there is no highlight, so it is impossible to select buttons using the keyboard. It is still possible to activate "Cancel" by pressing Escape, but "Don't Save" is completely unreachable.

There are also some controls that Tab never reaches, even if full keyboard access is enabled. For example, pressing Ctrl-F5 in Safari doesn't move the highlight to the toolbar. Pressing Tab never highlights the toolbar buttons, the bookmarks bar, or the tab bar. In the main iTunes window, pressing Tab cycles between the Source pane, the song listing, and the Search field. But when you first start iTunes, no song is selected, so the song listing is never highlighted; there is no way to tell that the song listing has the focus.

Keyboard access should be properly enabled in every window and sheet. Tab should navigate to all controls, and the border highlight should always be visible, even around list boxes.

2. Responding to prompts is tedious.

Prompt boxes usually present two or three buttons to choose from. The only universal way to operate these prompts from the keyboard is to press Tab several times and then press Enter. Not only does this require more keypresses, it also requires the user to watch for feedback because he must look for the highlight in order to predict which button will be activated. The user cannot simply hit a key and know in advance what will happen.

Buttons should be assigned accelerator keys by the operating system so that they can be activated by pressing a single letter (the first letter on the button, if possible). Pressing Command and the first letter of the button text sometimes works, but this seems to be a rare feature of particular prompts. Single-letter access should be enabled everywhere.

3. Access to menu commands is tedious.

Assume for a moment that you aren't yet totally familiar with an application and haven't memorized the Command shortcuts. The only way to access the menus from the keyboard is to press Fn-Ctrl-F2, a fairly arcane key combination, and then repeatedly press the arrow keys to get the desired menu. Then one can press the Up and Down arrows to choose a command. Although commands can be selected from menus by pressing letters, the association between letters and commands is strange and hard to predict. For example, in Safari's File menu, pressing C activates "Close Tab" (why not "Close Window"?), pressing D activates "New Tab", and pressing W activates "Save As...". In the Apple menu, pressing S once activates "Shut Down..." (why not "Software Update..." or "Sleep"?) and pressing S again activates "System Preferences...". This doesn't make any sense.

Windows users can simply press Alt-F-P to print. But Mac users have to press Fn-Ctrl-F2, Right, Right, Down, Down, Down, Down, Down, Down, Down, Down, Down, Enter. Or, if they are clever, they can press Fn-Ctrl-F2, Right, Right, P, R, Enter. This is tedious, but the more severe problem is that the Mac key combination is not fixed. If the menu changes (by inserting, removing, enabling, or disabling items), the number of times to press the arrow keys can change, and the number of letters one has to type to be certain of selecting a particular item can change also. Mac users can't simply hit a couple of keys and know for certain what will happen.

Menus and menu commands should be assigned accelerator letters for opening and activating them. In most cases it should require just two keypresses (not including modifiers) to open a menu and activate a command. Command-Option would be a good choice for a modifier (so that Command-Option-F-P activates Print); applications can stick to using Command and Command-Shift for shortcuts.

The current scheme that lets you type in the text of a menu item to select it is clever, but slow. Quite often, menu items that start with the same letter also start with the same word. So you should be able to hit the space bar to skip to the next word. For example, in iTunes, the repeat button at the bottom of the main window is unreachable from the keyboard (pressing Tab never highlights it). The only way to set the repeat behaviour is to choose a menu command, and the command has no shortcut. To turn on Repeat One, you must type Fn-Ctrl-F2, Right, Right, Right, Right, R, E, P, E, A, T, O, N. If you had menu accelerators and could skip words using the space bar, you would only have to type Command-Option-C, R, space, O, N.

4. Navigating among controls is confusing.

Pressing Tab to move through controls often selects the controls in a strange and unpredictable order. For example, try using Command-I to Get Info on a file in the Finder. The first Tab takes you to the Locked checkbox, the second checkbox in the window. Then the second Tab takes you to the file icon, which is not even a control widget at all. The third Tab takes you to the Stationery Pad checkbox, the first checkbox in the window. And the fourth Tab takes you to the disclosure triangle at the top of the window. The visual sequence of the items in the window from top to bottom is General:, icon, Stationery Pad, Locked, Name & Extension:, name field, Hide extension. But the Tab sequence is Locked, icon, Stationery Pad, General:, name field, Name & Extension:, Hide extension. And so on.

Pressing Tab to move through controls should select controls in a predictable order, left to right, top to bottom.

5. Full keyboard access is not default.

There is no good reason to disable keyboard access. Keyboard access enables a more accessible user interface for everyone. Even for people who are able to see and use a mouse, keyboard access makes the interface much faster and more convenient. The existence of an option for full keyboard access means that there is a piece of invisible state that radically changes the input behaviour of the entire user interface. For people who cannot use a mouse, the task of navigating to the System Preferences and turning on full keyboard access is extremely difficult.

Keyboard access should always be enabled.


You may notice an underlying theme in all of the four suggestions above: predictability. In every case, the interface could be improved by making the response to keypresses simpler and more predictable so that users can remember what to do, can know with confidence the effects of their keypresses, and don't have to watch the interface for feedback in order to get the right effect. (Imagine what it would be like to type in text if the letter keys worked properly most of the time, but occasionally pressing a letter key would generate an unexpected letter and you had to keep trying until the right letter appeared. That is what it feels like to use the Tab key or to operate pull-down and drop-down menus using the keyboard.)

I hope you will find these comments helpful and will see fit to being Mac OS X up to par with (and even beyond) Windows in its keyboard accessibility. Thank you for your time and consideration.


Ka-Ping Yee
Computer Science (Human-Computer Interaction)
University of California, Berkeley
  • Post a new comment


    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.