- From: Becky Gibson <Becky_Gibson@notesdev.ibm.com>
- Date: Fri, 9 Feb 2007 16:31:11 -0500
- To: wai-xtech@w3.org
Below is a proposal for keyboard and mouse behaviors for a menu component.
I have a few questions about the ARIA implementation.
1) Set Focus to menu item on mouse over or use ARIA state = selected?
When navigating with the keyboard it is important to set focus to the
menu items so they will be spoken by a screen reader. However, when
using the mouse to navigate the menus shoud the menu item which the mouse
is over receive focus or should it just be marked with a selected state? I
was thinking that the items should also get focus when the user is
navigating via the mouse. This makes it easier to implement the code to
support switching between mouse and keyboard navigation. It will also
insure that if a screen reader is being used in conjunction with the mouse
that the menu item information will be spoken. In a windows client
application menus have somewhat of a special state (almost like another
window) and the items do get focus when the user hovers above them with
the mouse.
2) Should the first item of the menu bar only be in the tab order or
should there also be a keystroke sequence to move focus to the first item
in the menu bar?
Putting the menu bar only in the tab order eliminates some of the issues
of where to put focus when a menu is closed. If the user can only tab to
the menu, then when all menus are closed focus will return to the first
menu bar item. Assigning a keystroke sequence to set focus to the menu is
helpful for navigation purposes but determining an available sequence that
does not conflict with the browser or screen reader is difficult. Also, if
a special sequence is used, where should focus go when a menu is closed?
I would guess that focus should go to the item that had focus when the key
sequence was invoked. If there was no item with focus when the special key
sequence was invoked then focus would go to the first item in the menu bar
when a menu was closed. Also, catching a sequence to invoke the menu
implies that there is a onkeydown/press handler at the document level.
This implies a user interface infrastructure rather than just a stand
alone widget.
thoughts?
Menu Bar Behavior
Terminology:
Menu bar item is a top level item in a menu bar (Like File, Edit, View in
Windows Explorer)
open menu is the menu which is associated with a particular menu bar item
and opens up below that menu bar item
menu item is an item in an open menu or submenu
submenu is an additional menu associated with a particular menu item
parent menu item is the menu item which controls the opening of a menu
cycling focus refers to wrapping the focus through a list of menu items.
If focus is on the last menu item pressing the right or down arrow (for a
horizonal or vertical alignment of menu items respectively) will move to
the first item. Likewise, when positioned at the first menu item moving
left or up arrow will move focus to the last menu item.
Keyboard Behavior
First item in menu bar should be in the tab order (tabindex=0).
When a menu bar item as focus and no menu is open, pressing left or right
arrow will cycle focus to the other menu bar items.
When a menu bar item has focus, pressing enter should open the menu and
place focus on the first menu item in the opened menu
When a menu bar item has focus, pressing the up or down arrow should open
the menu and place focus on the first menu item in the opened menu.
With focus on an menu item in an open menu, pressing up or down arrow
should cycle focus through the items in that menu.
When focus is on a menu item that has a submenu, pressing enter should
open the submenu.
Pressing escape with focus on an open menu item should close the open menu
or submenu and return focus to the parent menu item
With focus on an menu item, pressing enter should invoke that menu action.
Items in the main menu bar must open menus, not perform actions.
When a menu item has focus and that item has a submenu, pressing right
arrow should open the submenu for that item and place focus on the first
item in the opened submenu
With focus on an open menu item that does not contain a submenu - pressing
left or right arrow should open the submenu for the previous or next menu
bar item and place focus on first menu item in the opened submenu (like in
Windows Explorer menu bar - with focus on Status Bar in View sub menu
pressing right arrow opens Favorites menu and puts focus on add to
favorites).
With focus on an open menu item that has a submenu, pressing left arrow
should open the submenu for the previous menu bar item and place focus on
first menu item in the opened submenu. This rule applies recursively no
matter how many submenus are open at the time of the keypress --
everything that is open gets closed, and the next sibling in the main menu
bar gets opened.
With focus on a sub menu item, up or down arrows should cycle through the
submenu items (behaves the same as open menu)
With focus on a sub menu item, pressing left arrow will close the submenu
and return focus to the parent menu item
Disabled menu items receive focus but have no action when enter is
pressed.
Tabbing out of the menu component will close any open menus.
With focus on a menu item and a sub menu opened via mouse behavior,
pressing down arrow will move focus to the first item in the sub menu.
With focus on a menu item and a sub menu opened via mouse behavior,
pressing up arrow will move focus to the last item in the sub menu.
Mouse Behavior
Mouse over on a menu bar item changes the background of the menu bar item
but does not focus the menu bar item.
Clicking on a menu bar item opens the menu and sets focus to the menu bar
item. Items in the main menu bar can only be opened with a mouse click or
keyboard action, never a mouse hover.
Clicking on a menu bar item with an open menu will close the menu and
remove focus from the menu bar item (focus goes back to the document).
Note that this has been implemented inconsistently in Windows.
With focus on a menu bar item with an open menu, mouse over an adjacent
menu bar item will set focus to that menu bar item and open its menu
Mouse over an menu item sets focus to that item
Mouse over a menu item which has a submenu will open the submenu. Focus
remains on the parent menu item.
When a menu item which has focus and has a submenu open loses focus
(because the mouse was moved over an adjacent menu item) the submenu
closes.
With focus on a menu item via mouse over and no sub menu open for that
item, moving the mouse out of the open menu returns focus to the parent
menu item and leaves the menu open
With focus on a menu item via mouse over which has opened a sub menu,
moving the mouse out of the open menu leaves focus on the parent menu and
the submenu open
With focus on a submenu item, moving focus out of the submenu returns
focus to the parent menu item but the submenu remains open.
Clicking out of the menu component will close any open menus
Clicking on a menu item should invoke that menu action. Items in the main
menu bar must open menus, not perform actions.
There should be an adjustable delay between the time you mouseover a
menu-item-with-submenu and the submenu opens. On Windows it defaults to
400ms
Mouse and Keyboard Interaction
The user should be able to switch between using the mouse or the keyboard
and vice versa at any time.
If you open a menu (A) with the mouse, hover over a menu-item-with-submenu
(B) to open its submenu (C), select a menu item (D) in submenu C with the
keyboard, then click B again, D becomes unselected. In fact, all submenus
under C close. It's as if you moved off B altogether and then immediately
came back and re-opened it.
Becky Gibson
Web Accessibility Architect
IBM Emerging Internet Technologies
5 Technology Park Drive
Westford, MA 01886
Voice: 978 399-6101; t/l 333-6101
Email: gibsonb@us.ibm.com
Received on Friday, 9 February 2007 21:31:23 UTC