Keyboard Operation - Functional Specifications
This project improves usability and productivity of Openbravo ERP by enabling users to operate the product without the mouse.
There are many benefits of mouse-less operation. Among them:
- Improved productivity: by not having to move the hands from the keyboard to the mouse, user can enter transactions in a reduced amount of time; additionally , thanks to shortcuts, users can access functions in a far or even hidden portion of the screen without having to scroll or navigate to it.
- Accessibility: many classes of disable users have difficulties in operating a mouse. In the Unites States, the Section 508 mandates that Federal Agencies adopt software applications that are accessible to disable users; one of the concrete requirements is keyboard accessibility. Many other countries are adopting similar standards.
This specification covers the following major areas:
- Keyboard navigation: ability to move from field to field as well as to different part of the screen using the keyboard
- Keyboard shortcuts: ability to invoke common functions using the keyboard
- Focus management: ability to declaratively control the initial position of the focus following a specific user action (for example: where is the focus after initial navigation to a window).
- Section 508
- Yahoo!Mail Keyboard Shortcuts: an example of web enabled application that can be operated with keyboards only
- Google Calendar Keyboard Shortcuts: a second example.
- Google Documents Keyboard Shortcuts: a third example.
- Wikipidia Table of Common Keyboard Shortcuts: a list of commonly used cross-operating system shortcuts.
- In assigning keyboard shortcuts, care should be taken to assign functions to commonly used shortcuts, so that it is going to be easier for users to remember them.
- Keyboard shortcuts should work in all languages and be independent from translation.
- As much as possible, the keyboard shortcuts used by Openbravo should not interfere with the browser or OS keyboard shortcuts. In certain cases, they might override them.
User roles & profiles
This specification applies to all roles.
Business process definition
- Mary needs to create a sales order in Openbravo. She open her browser and points it to her Openbravo instance.
- The login page appears and the cursor is in the Username field. She 1) enters the user name, 2) presses tab, 3) enters the password, 4) presses tab to navigate to the login button and presses Enter.
- She is taken to the splash screen where the focus is on the first top level menu entry in her list, Application Dictionary, in her case.
- By pressing the down arrow key, Mary navigates to Sales Management. Pressing Enter, the menu expands, exposing a list of sub-menus: Transactions, Analysis Tools and Setup. The focus stays on Sales Management.
- Pressing the down arrow key, she navigates to Transactions and presses Enter. This exposes the list of windows in that menu but the focus does not move.
- Pressing the down arrow key, she navigates to Sales Order and presses Enter. This opens the Sales Order window in form mode, with an existing sales order pre-queried, it also sets the focus in the Business Partner field.
- Mary presses CTRL+N to create a new record. The window switches to data entry mode and the focus is on the Business Partner field.
- Mary knows the search key for the business partner that is placing the order, so she types it and presses Enter.
- She then presses CTRL+S to save the record.
- Pressing F10, she moves the focus to the tabs; using the left and right arrow keys, she can then navigate through the tabs till the focus is on the Lines tab. She then presses Enter to select the tab.
- This opens the Lines tab in relational mode. Since no record exists, the focus is placed on the frame containing the table.
- Mary presses CTRL+N to create a new record. The window switches to data entry mode and the focus is on the Product field.
- Mary does not remember the product search key, so she tabs to the product selector icon and presses Enter to open the product search pop-up screen.
- The Product Selector opens with the focus on the Key field. Mary tabs to Name and enters the product name. She presses Alt+S to invoke the search.
- The list of products matching her criteria is returned and the focus is on the first record. Using a combination of Page Down and Arrow Down keys, Mary navigates to the record she is interested in and confirm her selection by pressing Enter. The Product Selector closes and the focus returns to the Lines tab, in the Product field, which now contains the selected product.
- Mary tabs to the Ordered Quantity and enters the her desired quantity.
- She then saves the record by pressing CTRL+S.
- Pressing F10, she moves the focus to the tabs; using the left and right arrow keys, she can then navigate through the tabs till the focus is on the Header tab. She then presses Enter to select the tab.
- Pressing Alt+C, Mary can complete her order.
Functional requirements based on business processes
|1.1||Ability to declaratively specify the initial focus of a tab:|
when defining a tab, a developer should be able to specify the field where the initial focus is when the tab first open.
|1.2||Ability to declaratively specify the focus after an action:|
when defining a button, a developer should be able to specify where the focus is moved after the button is pressed and the corresponding action is completed.
|Nice to have||To be started|
|1.3||The initial focus in the login screen should be in the Username field||Should have||Complete|
|1.4||The default action in the login screen should be the OK button and the the user should be able to invoke it by pressing Enter.||Should have||Complete|
|1.5||The focus after a successful login should be on the first menu entry||Should have||Complete|
|2.1||CTRL+M to focus on the menu: from any position on the screen, you should be able to move the focus to the menu by pressing CTRL+M||Should have||Complete|
|2.2||CTRL+Shift+M to expand or collapse the menu: from any position on the screen, you should be able to expand or collapse the menu by pressing CTRL+Shift+M. After this action, the focus should be placed on the menu.||Nice to have||Complete|
|2.3||Enter to select a menu entry: with the focus on a menu entry, users should be able to select it by pressing Enter. If the entry is a collapsed menu, the menu should be opened and the focus should stay on the current entry. If the entry is an expanded menu, the menu should be collapsed and the focus should stay on the current entry. If the entry is a function, the function should be invoked.||Should have||Complete|
|2.4||Arrow keys to navigate through the menu: users should be able to navigate through the menu using the up and down arrow key. If the user press right arrow key and if the entry is a collapsed menu, the menu should be opened; if the user press right arrow key again, the focus should move to the first sub-menu entry. Also if the user press left arrow key if the entry is a collapsed menu, the focus should move to the parent; if this sub-menu is not collapsed/opened, the menu should close.||Should have||Complete|
|2.5||"Home" and "End" keys should move the focus to the first and the last visible menu entry respectively.||Should have||Complete|
|2.6||CTRL+U to focus on the user: from any position on the screen, you should be able to access the user window by pressing CTRL+U||Should have||Complete|
|2.7||CTRL+Q to logout: from any position on the screen, you should be able to logout by pressing CTRL+Q||Should have||Complete|
|2.8||F8 to focus on the alerts: from any position on the screen, you should be able to access alerts by pressing F8||Nice to have||Complete|
|2.9||F9 to expand/collapse the left pane: from any position on the screen, you should be able to expand / collapse the left pane by pressing F9||Nice to have||Complete|
|2.10||F10 to navigate to the tab section: when the focus is in a window, pressing F10 moves the focus to the tab region; from there the user can move through tabs using the TAB or Shif+TAB keys.||Should have||Complete|
|2.11||CTRL+I to invoke the About window: from any position on the screen, users should be able to open the About window by pressing CTRL+I||Nice to have||Complete|
|2.12||CTRL+H to invoke the Help window: from any position on the screen, users should be able to open the Help window by pressing CTRL+H||Nice to have||Complete|
|2.13||CTRL+R to refresh the current window: from any position on the screen, users should be able to refresh the current window by pressing CTRL+R||Nice have||Complete|
|2.14||CTRL+Shift+Backspace to go back: from any position on the screen, users should be able to invoke the Go Back function by pressing CTRL+Backspace||Nice to have||Complete|
|2.15||CTRL+G to toggle grid view: when the focus is in a window, pressing CTRL+G toggles to and from grid view.||Nice to have||Complete|
|3.1||CTRL+N to create new record: when the focus is in a window, pressing CTRL+N invokes the Create New Record command.||Must have||Complete|
|3.2||CTRL+S to save: when the focus is in a window, pressing CTRL+S invokes the Save command.||Must have||Complete|
|3.3||CTRL+Shift+S to save and new: when the focus is in a window, pressing CTRL+Shift+S invokes the Save and New command.||Must have||Complete|
|3.4||CTRL+D to delete: when the focus is in a window, pressing CTRL+D invokes the Delete Record command.|
(NOTE: this already works in 2.35).
|3.5||CTRL+Z to undo: when the focus is in a window, pressing CTRL+Z invokes the Undo command.||Nice to have||Complete|
|3.6||CTRL+A to attach: when the focus is in a window, pressing CTRL+A invokes the Attach a File command.||Should have||Complete|
|3.7||CTRL+F to search: when the focus is in a window, pressing CTRL+F invokes the Search Records command.||Must have||Complete|
|3.8||CTRL+Home to navigate to the first record: when the focus is in a window, pressing CTRL+Home invokes the Navigate to the First Record command.||Should have||Complete|
|3.9||CTRL+End to navigate to the last record: when the focus is in a window, pressing CTRL+End invokes the Navigate to the Last Record command.||Should have||Complete|
|3.10||CTRL+ArrowLeft to navigate to the previous record: when the focus is in a window, pressing CTRL+ArrowLeft invokes the Navigate to the Previous Record command.||Should have||Complete|
|3.11||CTRL+ArrowRigth to navigate to the next record: when the focus is in a window, pressing CTRL+ArrowRight invokes the Navigate to the Next Record command.||Should have||Complete|
|3.12||CTRL+L to see linked items: when the focus is in a window, pressing CTRL+L invokes the Linked Items command.||Should have||Complete|
|3.13||Arrow keys to navigate tables: when the focus is in a table, users can navigate through records pressing ArrowUp and ArrowDown.||Should have||Complete|
|4.1||All pop-up window should have a default action that can be invoked by simply pressing Enter from any point of the screen. For example the User Role window should have OK as default action.|
The default action could be different depending on the status of the window. For example, in the Product Selector, the default action should be Search if no record has been found and it should be OK if records exist.
|Should have||To be started|
|4.2|| All buttons in windows should have a keyboard shortcut accessible using a combination ALT+<letter>.|
In order to guarantee consistency and translatability, the letter should be automatically assigned by the system based on the first character in the button label that does not generate a conflict.
The shortcut key should be indicated to the user by underscoring the corresponding character. For example: Complete
If more than 10 buttons create a conflict, then it a shortcut should not be assigned for the conflicting buttons.
In generated windows there are two types of buttons:
The first group of buttons are calculated in compilation time assigning the shortcut.
The second group is calculated in execution time. All the possible values for the list are reserved though just the current one is used, it is done in this manner in order to avoid changes in other buttons when one is changed.
In a window with the following buttons:
The shortcuts would be:
|Should have||Only in WAD windows|
|5.1||Grid that only shows data (relation grid)
||Should have||To be started|
|5.2||Grid that lets check several registers/rows
||Should have||To be started|
|5.3||Grid that lets check several registers/rows and edit values when it is checked
||Should have||To be started|
Grid that lets select only one register
|Should have||To be started|
User Interface Mockups
Open Discussion Items
- DBA: When the user goes back to the menu, the focus should remain where the user left previously and not in the first menu register. This is related with the 2.1 and 2.2 sections.
- DBA: Up, down, left and right arrow keys should have a similar behavior than other application trees (for example: Mozilla Thunderbird tree). This is related with the 2.4 section.
- DBA: "Home" and "End" keys should have a similar behavior than other application trees (for example: Mozilla Thunderbird tree). This is related with the 2.5 section.
- DBA: The second "Design Consideration" is in conflict with the 4.2 section.