|Full Keyboard Access Issues in macOS|
|What is Full Keyboard Access?||
macOS provides a mechanism known as Full Keyboard Access to allow keyboard control of all interface elements: checkboxes, radio buttons, popup lists and buttons. Collectively, these items are referred to as Controls.
In the macOS built-in help we read:
“… With Full Keyboard Access, you use the Tab key, arrow keys, and space bar to move to and select or activate items on the screen … You can use your keyboard to select … items in windows and dialogs. Selected items are highlighted. You can specify whether you want to use the keyboard to select only text boxes and lists in a window, or all the controls in the window …”
|How Classic Helix Worked||
Classic Helix allowed a user to control checkboxes and radio buttons from the keyboard — even though the Classic OS never provided such a feature. When a checkbox/radio button had focus in Classic Helix, you used the arrow keys and the various true/false values (1/0, T/F, Y/N, and any specified custom values) to toggle those controls. Pressing the delete key while a control has focus deleted the value from that control.
|Conflicting Specifications: Helix vs. macOS||
These two specifications — Helix’s original spec and the macOS spec — are similar in some respects, and differ in others. The result is a conflict that may cause unexpected behavior, particularly in sequences that use ‘Home Field’ and ‘Tab Field’ commands. (A script is available on our scripts page to identify such sequences.)
The remainder of this technote discusses the various settings available in macOS, how to determine which is currently active on your computer, and how to set them to avoid Full Keyboard Access related issues in Helix.
|Full Keyboard Access Warning||
Helix’s support for Full Keyboard Access is provided by the wxWidgets framework, which has issues that are noted below. If these issues are affecting your use of Helix, one solution is to disable the Full Keyboard Access setting that allows focus for ‘All Controls.’ This prevents Helix from attempting to focus on checkboxes, radio buttons, and popup menus altogether.
If the Full Keyboard Access settings of a workstation are such that they may cause issues in Helix, a warning dialog (pictured at right) appears when Helix is launched. The text of the dialog may vary depending on the exact state of the Full Keyboard Access settings.
The dialog contains a checkbox that allows you to suppress the dialog in subsequent launches. Please note that suppressing the dialog in no way ‘fixes’ the issues described in this technote.
This dialog was added in Helix 6.1.3; it is not shown in earlier versions.
|Full Keyboard Access Issues||
When the All controls option is selected, you can expect this behavior from Helix:
|Setting the Keyboard Shortcut Preferences||
The pictures on the right (click images to zoom) show what the Keyboard Shortcuts panel in the Keyboard section of System Preferences looks like in the supported versions of macOS. You get to this panel by…
Once you have reached the Shortcuts window, the main Full Keyboard Access setting is found at the bottom of the window. Make certain that the Text boxes and lists only radio button is selected. That avoids the tabbing issue when editing records on a view.
Note: the particular settings of the checkboxes in these images are not ‘required settings’ — the images show what the dialog looks like in the various versions of macOS and where the main Full Keyboard Access control is found. Optional settings for some of the checkboxes are discussed below.
Note! The objective here is not to activate/deactivate the shortcut. The real objective is to set Full Keyboard Access to Text boxes and lists only. Simply disabling the shortcut is not enough! You must make sure Full Keyboard Access is set as shown in this image.
After confirming the correct settings, close the System Preferences window.
|Keyboard Preferences: an Oddity||
macOS contains an additional option to Turn keyboard access on or off with Control-F1 as the keystroke that toggles it. This setting is shown in the Keyboard Shortcuts panel, except in macOS 10.6–10.8, where is was mysteriously removed for some unknown reason. Regardless of whether the checkbox for turning the toggle on/off is visible or not, this feature exists in all versions of macOS.
It is also important to understand that the checkbox (if it exists in your version of macOS) merely changes the ability to switch the setting via the keyboard shortcut. There is no obvious indication of which setting is currently in effect. However, it is possible to detect — and properly set — this feature by following these instructions:
|Testing for Full Keyboard Access||
You can test your system’s Full Keyboard Access setting via the Terminal application (in the macOS Utilities folder). Launch Terminal and enter the following line:
defaults read -g AppleKeyboardUIMode
When you press Return, Terminal responds with a value that indicates the current status of Full Keyboard Access.
Helix is most cooperative when the setting is 0.
We have created a free AppleScript application that shows your current settings, and provides an option to automatically reset your system to ‘Helix-compatible’ mode. (Mode 0) Download the script by clicking here.
July 15, 2008: Initial technote, describing the situation in version 6.1.2 (070)
January 6, 2009: Update, describing the situation in version 6.1.3 (092)
September 24, 2010: Updated for macOS 10.6 (Snow Leopard)
November 29, 2011: Updated for macOS 10.7 (Lion)
January 2, 2013: Updated for macOS 10.8 (Mountain Lion), Updated script appearance with display alert, added copyright info.
August 23, 2013: Updated for Helix 6.2 crash related to command rectangles; fix typos.
July 16, 2014: Updated for macOS 10.9 (Mavericks); clarify some sections.
May 27, 2014: Updated for macOS 10.10 (Yosemite); update script to reset UI preference to Mode 0.
November 20, 2015: Fixed bug that caused -1762 error on some systems.
January 5, 2017: Updated for Helix 7.0.