Everything Else
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:

  • 7.0 and later: Helix 7.0 uses wxWidgets 3.0.2, which significantly improves support for Full Keyboard Access (FKA), making it mostly functional. Full Keyboard Access properly honors the ‘Allow tab’ property of data rectangles, re-establishing the tab control that was available in Classic.
    However, the following are known issues in Helix 7.0:
    1. Radio Buttons: tabbing should move from one radio button to the next, and pressing the space bar should choose the one with focus, de-choosing the other selected radio button. In Helix 7.0, only one radio button can be tabbed into: pressing tab jumps to the next field. This effectively renders FKA useless for radio buttons.
    2. Popups: the ‘Allow tab’ property is ignored; popup menus are always part of the tabbing order.
    3. Combo Boxes: tabbing should move from the text entry field to the popup, but it skips over the popup, moving to the next field. Interestingly, if you then Shift-Tab — backwards tabbing — the popup menu portion of the combo box gains focus as expected.
    4. Subforms: The presence of a subform blocks tabbing at the rectangle prior to (in standard tabbing order) the subform, requiring a mouse click to advance focus to the next editable field.
    5. Inspector: tabbing into an empty popup menu sends focus back to the top of the Inspector, and tabbing into a button highlights the button with no way to actually trigger the dialog that opens when that button is clicked. Lastly, tabbing does not include the Commit/Revert buttons at all.
    6. Dialogs: tabbing order is undefined, and may not include all controls.
    7. Unknown Issues: Support for FKA in Helix 7.0 is due to improvements in wxWidgets, and has not been thoroughly tested. You may find other areas where FKA does not work as expected. Please report these to us.
  • 6.1.3–6.2.4: Helix properly focuses on the first control that is tabbed into, and the macOS behavior is honored. However, when you attempt to tab to the next field, Helix returns the focus to the home field. In other words, it is impossible to tab beyond the first control encountered when the All Controls option is active. Full Keyboard Access is not recommended.
  • 6.1.2: Helix responds to Tab key presses by crashing at unpredictable times. Update to Helix 6.1.3 or later.
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…

  1. Selecting System Preferences from the Apple menu.
  2. Clicking on the icon for Keyboard preferences.
  3. Clicking on the Shortcuts tab at the top of the window.

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.

macOS 10.9–10.12
On the left side of the window is a list containing various macOS features. In the Keyboard section, unchecking the Change the way Tab moves focus shortcut avoids the possibility of accidentally changing the Full Keyboard Access setting.
macOS 10.6–10.8
On the left side of the window is a list containing various macOS features. In the Keyboard & Text Input section, unchecking the Change the way Tab moves focus shortcut avoids the possibility of accidentally changing the Full Keyboard Access setting.
macOS 10.4–10.5
In the scrollable list containing various keyboard shortcuts, locate the section titled Keyboard Navigation (pictured) and uncheck the Move betweeen controls or textboxes and lists shortcut to avoid the possibility of accidentally changing the Full Keyboard Access setting.

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:

  1. Open the Shortcuts panel (Keyboard Shortcuts in older versions) of the Keyboard System Preference.
  2. Press Control-F1 or Function-Control-F1, depending on your keyboard and setting of the Use all F1, F2, etc. keys as standard function keys setting (found in the Keyboard panel of the Keyboard System Preference.
  3. When you press that key command, watch the group of options that start with Move focus to… — when the group of checkboxes disables, the internal Full Keyboard Access setting is off. This is the state macOS must be in for proper Helix functionality.
  4. You can then manually re-enable any of the Move focus to… settings you prefer. (Helix is fully compatible with these options.)
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.

Val  Settings
 0   "Full Keyboard Access OFF" and "Text boxes and lists only"
 1   "Full Keyboard Access ON" and "Text boxes and lists only"
 2   "Full Keyboard Access OFF" and "All controls"
 3   "Full Keyboard Access ON" and "All controls"

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.

Document History

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.