Common Desktop Environment: Style Guide and Certification Checklist

Keyboard-Based Navigation

 

n/a 

 

 

Required 

3-17: 

In a text component, the text cursor is shown differently when the component does and does not have the keyboard focus.  

In a text component, the text cursor serves as the location cursor and, therefore, must indicate whether the component has keyboard focus. 

Required 

3-18: 

If a text component indicates that it has lost the keyboard focus by hiding the text cursor and if the component subsequently regains the focus, the cursor reappears at the same position it had when the component lost focus.  

To ensure predictability, it is important that the text cursor not change position when a text component loses and then regains the keyboard focus. 

Required 

3-19: 

If a small component, such as a sash, indicates that it has the keyboard focus by filling, no other meaning is associated with the filled state.  

This rule reduces possible confusion about the significance of filling in a small component. 

Required 

3-20: 

All components are designed and positioned within your application so that adding and removing each component's location cursor does not change the amount of space that the component takes up on the screen.  

For visual consistency, the sizes and positions of components should not change when keyboard focus moves from one component to another. 

Required 

3-21: 

Control+Tab moves the location cursor to the next field, and Control+Shift+Tab moves the location cursor to the previous field. Unless Tab and Shift+Tab are used for internal navigation within a field, Tab also moves the location cursor to the next field, and Shift+Tab also moves the location cursor to the previous field.  

These keys provide a consistent means of navigating among fields in a window. 

Required 

3-22: 

Tab (if not used for internal navigation) and Control+Tab move the location cursor forward through fields in a window according to the following rules:  

  • If the next field is a control, Tab (if not used for internal navigation) and Control+Tab move the location cursor to that control.

  • If the next field is a group, Tab (if not used for internal navigation) and Control+Tab move the location cursor to a traversable component within the group.

  • If the next field contains no traversable components, Tab (if not used for internal navigation) and Control+Tab skip the field.

These rules ensure the consistent operation of Tab (if not used for internal navigation) and Control+Tab across applications. 

Required 

3-23: 

Shift+Tab (if not used for internal navigation) and Control+Shift+Tab move the location cursor backward through fields in the order opposite to that of Tab (if not used for internal navigation) and Control+Tab.  

These rules result in the uniform operation of Shift+Tab (if not used for internal navigation) and Control+Shift+Tab across applications. 

Required 

3-24: 

When a window acquires focus, the location cursor is placed on the control that last had focus in the window, providing that all the following conditions are met:  

  • The window uses an explicit keyboard focus policy.

  • The window acquires the focus through keyboard navigation or through a button press other than within the client area of the window.

  • The window had the focus at some time in the past.

  • The control that last had focus in the window is still traversable.

This rule ensures that when the user returns to a window after navigating away, the focus returns to the component where the user left it. 

Required 

3-25: 

Field navigation wraps between the first and last fields in the window.  

This feature of field navigation provides the user with a convenient way to move through all of the fields in a window. 

Required 

3-26: 

When the Down Arrow and Up Arrow keys are used for component navigation within a field, they behave according to the following rules:  

In a left-to-right language environment, the Down Arrow key moves the location cursor through all traversable controls in the field, starting at the upper left and ending at the lower right, then wrapping to the upper left. If the controls are aligned in a matrix-like arrangement, Down Arrow first traverses one column from top to bottom, then traverses the column to its right, and so on. In a right-to-left language environment, Down Arrow moves the location cursor through all traversable controls, starting at the upper right and ending at the lower left.  

  • Up Arrow moves the location cursor through all traversable controls in the field in the order opposite to that of Down Arrow.

These rules ensure a consistent means of navigating among components using the directional keys. 

Required 

3-27: 

When the Right Arrow and Left Arrow keys are used for component navigation within a field, they behave according to the following rules:  

  • In a left-to-right language environment, the Right Arrow moves the location cursor through all traversable controls in the field, starting at the upper left and ending at the lower right, then wrapping to the upper left. If the controls are aligned in a matrix-like arrangement, the Right Arrow first traverses one row from left to right, then traverses the row below it, and so on. In a right-to-left language environment, the Right Arrow moves the location cursor through all traversable controls, starting at the lower left and ending at the upper right.

  • Left Arrow moves the location cursor through all traversable controls in the field in the order opposite to that of the Right Arrow.

These rules ensure a consistent means of navigating among components using the directional keys. 

Required 

3-28: 

If a control uses the Right Arrow and Left Arrow for internal navigation, Begin moves the location cursor to the leftmost edge of the data or the leftmost element in a left-to-right language environment. In a right-to-left language environment, Begin moves the location cursor to the rightmost edge of the data or the rightmost element.  

This rule permits convenient navigation to the left or right edge of the data or the left or right element in a control. 

Required 

3-29: 

If a control uses the Right Arrow and Left Arrow keys for internal navigation, the End key moves the location cursor to the rightmost edge of the data or the rightmost element in a left-to-right language environment. In a right-to-left language environment, End moves the location cursor to the leftmost edge of the data or the leftmost element.  

This rule permits convenient navigation to the left or right edge of the data or the left or right element in a control. 

Required 

3-30: 

If a control uses the Up Arrow and Down Arrow keys for internal navigation, Control+Begin moves the location cursor to one of the following:  

  • The first element

  • The topmost edge of the data

  • In a left-to-right language environment, the topmost left edge of the data; in a right-to-left language environment, the topmost right edge of the data

This rule permits convenient navigation to the beginning of the data in a control. 

Required 

3-31: 

If a control uses the Up Arrow and Down Arrow keys for internal navigation, Control+End moves the location cursor to one of the following:  

  • The last element

  • The bottommost edge of the data

  • In a left-to-right language environment, the bottommost right edge of the data; in a right-to-left language environment, the bottommost left edge of the data

This rule permits convenient navigation to the end of the data in a control. 

Optional 

e: 

Each time a new window is opened, keyboard focus is placed in the first field or location within the window or in a default location, if this is appropriate for the particular window. 

Required 

f: 

The Tab key moves input focus between push buttons within a group. 

The arrow keys also move the selected focus per the OSF/Motif Style Guide, Revision 1.2.

Required 

g: 

Use the Control, Shift, and Alt keys only to modify the function of other keys or key combinations. 

Optional 

h: 

Use the Alt key only to provide access to mnemonics.