1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @fileoverview This class acts as the persistent store for all static data
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * about commands.
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * This store can safely be used within either a content or background script
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * context.
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * If you are looking to add a user command, follow the below steps for best
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * integration with existing components:
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 1. Add a command below in cvox.CommandStore.CMD_WHITELIST. Pick a
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * programmatic name and fill in each of the relevant JSON keys.
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Be sure to add a msg id and define it in chromevox/messages/messages.js which
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * describes the command. Please also add a category msg id so that the command
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * will show up in the options page.
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 2. Add the command's logic to cvox.UserCommands inside of our switch-based
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * dispatch method (doCommand_).
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 3. Add a key binding in chromevox/background/keymaps/classic_keymap.json and
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * chromevox/background/keymaps/flat_keymap.json.
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Class description:
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * This class is entirely static and holds a JSON structure that stores
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * commands and their associated metadata.
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * From this metadata, we compute relevant subsets of data such as all present
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * categories.
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.provide('cvox.CommandStore');
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.PlatformFilter');
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Returns all of the categories in the store as an array.
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {Array.<string>} The collection of categories.
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.CommandStore.categories = function() {
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  var categorySet = {};
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  for (var cmd in cvox.CommandStore.CMD_WHITELIST) {
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    var struct = cvox.CommandStore.CMD_WHITELIST[cmd];
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (struct.category) {
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      categorySet[struct.category] = true;
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  var ret = [];
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  for (var category in categorySet) {
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ret.push(category);
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return ret;
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Gets a message given a command.
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {string} command The command to query.
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {string|undefined} The message id, if any.
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.CommandStore.messageForCommand = function(command) {
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return (cvox.CommandStore.CMD_WHITELIST[command] || {}).msgId;
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Gets a category given a command.
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {string} command The command to query.
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {string|undefined} The command, if any.
73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.CommandStore.categoryForCommand = function(command) {
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return (cvox.CommandStore.CMD_WHITELIST[command] || {}).category;
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Gets all commands for a category.
81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {string} category The category to query.
82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {Array.<string>} The commands, if any.
83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.CommandStore.commandsForCategory = function(category) {
85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  var ret = [];
86cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  for (var cmd in cvox.CommandStore.CMD_WHITELIST) {
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    var struct = cvox.CommandStore.CMD_WHITELIST[cmd];
88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (category == struct.category) {
89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      ret.push(cmd);
90cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return ret;
93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
95cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
96cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
97cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * List of commands and their properties
98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @type {Object.<string, {forward: (undefined|boolean),
99cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         backward: (undefined|boolean),
100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         announce: boolean,
101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         category: (undefined|string),
102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         findNext: (undefined|string),
103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         doDefault: (undefined|boolean),
104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         msgId: (undefined|string),
105cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         nodeList: (undefined|string),
106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         platformFilter: (undefined|cvox.PlatformFilter),
107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         skipInput: (undefined|boolean),
108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         allowEvents: (undefined|boolean),
109cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         disallowContinuation: (undefined|boolean)
110cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         }>}
111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  forward: Whether this command points forward.
112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  backward: Whether this command points backward. If neither forward or
113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *            backward are specified, it stays facing in the current direction.
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  announce: Whether to call finishNavCommand and announce the current
115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *            position after the command is done.
116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  findNext: The id from the map above if this command is used for
117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *            finding next/previous of something.
118cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  category: The message resource describing the command's category.
119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  doDefault: Whether to do the default action. This means that keys will be
120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *             passed through to the usual DOM capture/bubble phases.
121cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  msgId: The message resource describing the command.
122cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  nodeList: The id from the map above if this command is used for
123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *            showing a list of nodes.
124cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  platformFilter: Specifies to which platforms this command applies. If left
125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                  undefined, the command applies to all platforms.
126cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  skipInput: Explicitly skips this command when text input has focus.
127cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *             Defaults to false.
128cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  disallowOOBE: Explicitly disallows this command when on chrome://oobe/*.
129cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *             Defaults to false.
130cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  allowEvents: Allows EventWatcher to continue processing events which can
131cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * trump TTS.
132cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  disallowContinuation: Disallows continuous read to proceed. Defaults to
133cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * false.
134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
135cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.CommandStore.CMD_WHITELIST = {
136cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleStickyMode': {announce: false,
137cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       msgId: 'toggle_sticky_mode',
138cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       'disallowOOBE': true,
139cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       category: 'modifier_keys'},
140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleKeyPrefix': {announce: false,
141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      skipInput: true,
142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'prefix_key',
143cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         'disallowOOBE': true,
144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'modifier_keys'},
145cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'passThroughMode': {announce: false,
146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'pass_through_key_description',
147cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'modifier_keys'},
148cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
149cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'stopSpeech': {announce: false,
150cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 disallowContinuation: true,
151cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 doDefault: true,
152cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 msgId: 'stop_speech_key',
153cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 category: 'controlling_speech'},
154cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleChromeVox': {announce: false,
155cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      platformFilter: cvox.PlatformFilter.WML,
156cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'toggle_chromevox_active',
157cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
158cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'decreaseTtsRate': {announce: false,
159cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'decrease_tts_rate',
160cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
161cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'increaseTtsRate': {announce: false,
162cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'increase_tts_rate',
163cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
164cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'decreaseTtsPitch': {announce: false,
165cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'decrease_tts_pitch',
166cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
167cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'increaseTtsPitch': {announce: false,
168cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'increase_tts_pitch',
169cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
170cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'decreaseTtsVolume': {announce: false,
171cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'decrease_tts_volume',
172cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
173cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'increaseTtsVolume': {announce: false,
174cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'increase_tts_volume',
175cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
176cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'cyclePunctuationEcho': {announce: false,
177cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           msgId: 'cycle_punctuation_echo',
178cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           category: 'controlling_speech'},
179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'cycleTypingEcho': {announce: false,
180cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'cycle_typing_echo',
181cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'controlling_speech'},
182cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
183cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
184cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleEarcons': {announce: true,
185cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'toggle_earcons',
186cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'controlling_speech'},
187cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
188cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'handleTab': {
189cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    allowEvents: true,
190cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    msgId: 'handle_tab_next',
191cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    disallowContinuation: true,
192cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    category: 'navigation'},
193cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'handleTabPrev': {
194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    allowEvents: true,
195cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    msgId: 'handle_tab_prev',
196cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    disallowContinuation: true,
197cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    category: 'navigation'},
198cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'forward': {forward: true,
199cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              announce: true,
200cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              msgId: 'forward',
201cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              category: 'navigation'},
202cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'backward': {backward: true,
203cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               announce: true,
204cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               msgId: 'backward',
205cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               category: 'navigation'},
206cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'right': {forward: true,
207cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            announce: true,
208cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            msgId: 'right',
209cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            category: 'navigation'},
210cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'left': {backward: true,
211cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           announce: true,
212cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           msgId: 'left',
213cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           category: 'navigation'},
214cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousGranularity': {announce: true,
215cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          msgId: 'previous_granularity',
216cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          category: 'navigation'},
217cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextGranularity': {announce: true,
218cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          msgId: 'next_granularity',
219cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          category: 'navigation'},
220cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
221cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousCharacter': {backward: true,
222cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        announce: true,
223cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'previous_character',
224cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        skipInput: true,
225cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'navigation'},
226cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextCharacter': {forward: true,
227cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    announce: true,
228cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_character',
229cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    skipInput: true,
230cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'navigation'},
231cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousWord': {backward: true,
232cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        announce: true,
233cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'previous_word',
234cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        skipInput: true,
235cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'navigation'},
236cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextWord': {forward: true,
237cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    announce: true,
238cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_word',
239cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    skipInput: true,
240cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'navigation'},
241cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousLine': {backward: true,
242cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        announce: true,
243cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'previous_line',
244cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'navigation'},
245cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextLine': {forward: true,
246cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    announce: true,
247cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_line',
248cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'navigation'},
249cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousSentence': {backward: true,
250cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        announce: true,
251cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'previous_sentence',
252cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        skipInput: true,
253cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'navigation'},
254cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextSentence': {forward: true,
255cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    announce: true,
256cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_sentence',
257cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    skipInput: true,
258cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'navigation'},
259cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousObject': {backward: true,
260cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        announce: true,
261cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'previous_object',
262cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        skipInput: true,
263cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'navigation'},
264cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextObject': {forward: true,
265cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    announce: true,
266cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_object',
267cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    skipInput: true,
268cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'navigation'},
269cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousGroup': {backward: true,
270cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        announce: true,
271cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'previous_group',
272cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        skipInput: true,
273cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'navigation'},
274cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextGroup': {forward: true,
275cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    announce: true,
276cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_group',
277cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    skipInput: true,
278cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'navigation'},
279cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
280cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'jumpToTop': {forward: true,
281cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                announce: true,
282cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'jump_to_top',
283cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'navigation'
284cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)},
285cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'jumpToBottom': {backward: true,
286cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   announce: true,
287cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'jump_to_bottom',
288cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'navigation'},
289cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Intentionally uncategorized.
290cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'moveToStartOfLine': {forward: true, announce: true},
291cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'moveToEndOfLine': {backward: true, announce: true},
292cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
293cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'readFromHere': {forward: true,
294cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   announce: false,
295cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'read_from_here',
296cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'navigation'},
297cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
298cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'performDefaultAction': {disallowContinuation: true,
299cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           msgId: 'perform_default_action',
300cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           doDefault: true,
301cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           skipInput: true,
302cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           category: 'navigation'},
303cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'forceClickOnCurrentItem': {announce: true,
304cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                              disallowContinuation: true,
305cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                              allowEvents: true,
306cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                              msgId: 'force_click_on_current_item',
307cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                              category: 'navigation'},
308cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'forceDoubleClickOnCurrentItem': {announce: true,
309cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                    allowEvents: true,
310cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                    disallowContinuation: true},
311cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
312cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'readLinkURL': {announce: false,
313cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  msgId: 'read_link_url',
314cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  category: 'information'},
315cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'readCurrentTitle': {announce: false,
316cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       msgId: 'read_current_title',
317cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       category: 'information'},
318cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'readCurrentURL': {announce: false,
319cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     msgId: 'read_current_url',
320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     category: 'information'},
321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
322cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'fullyDescribe': {announce: false,
323cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'fully_describe',
324cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'information'},
325cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'speakTimeAndDate': {announce: false,
326cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       msgId: 'speak_time_and_date',
327cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       category: 'information'},
328cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleSelection': {announce: true,
329cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'toggle_selection',
330cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'information'},
331cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
332cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleSearchWidget': {announce: false,
333cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         disallowContinuation: true,
334cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         msgId: 'toggle_search_widget',
335cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         category: 'information'},
336cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleKeyboardHelp': {announce: false,
338cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         disallowContinuation: true,
339cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         msgId: 'show_power_key',
340cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         category: 'help_commands'},
341cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'help': {announce: false,
342cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           msgId: 'help',
343cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           'disallowOOBE': true,
344cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           disallowContinuation: true,
345cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           category: 'help_commands'},
346cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'contextMenu': {announce: false,
347cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  disallowContinuation: true},
348cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
349cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showOptionsPage': {announce: false,
350cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      disallowContinuation: true,
351cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'show_options_page',
352cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      'disallowOOBE': true,
353cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'help_commands'},
354cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showKbExplorerPage': {announce: false,
355cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         disallowContinuation: true,
356cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         msgId: 'show_kb_explorer_page',
357cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         'disallowOOBE': true,
358cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         category: 'help_commands'},
359cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
360cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
361cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showFormsList': {announce: false,
362cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    disallowContinuation: true,
363cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    nodeList: 'formField',
364cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'show_forms_list',
365cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'overview'},
366cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showHeadingsList': {announce: false, nodeList: 'heading',
367cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       disallowContinuation: true,
368cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       msgId: 'show_headings_list',
369cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       category: 'overview'},
370cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showLandmarksList': {announce: false, nodeList: 'landmark',
371cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        disallowContinuation: true,
372cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        msgId: 'show_landmarks_list',
373cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        category: 'overview'},
374cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showLinksList': {announce: false, nodeList: 'link',
375cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    disallowContinuation: true,
376cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'show_links_list',
377cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'overview'},
378cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'showTablesList': {announce: false, nodeList: 'table',
379cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     disallowContinuation: true,
380cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     msgId: 'show_tables_list',
381cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     category: 'overview'},
382cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
383cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextArticle': {forward: true,
384cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  findNext: 'article'},
385cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
386cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextButton': {forward: true,
387cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 findNext: 'button',
388cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 msgId: 'next_button',
389cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 category: 'jump_commands'},
390cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextCheckbox': {forward: true,
391cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'checkbox',
392cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_checkbox',
393cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
394cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextComboBox': {forward: true,
395cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'combobox',
396cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_combo_box',
397cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
398cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextControl': {forward: true, findNext: 'control'},
399cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextEditText': {forward: true,
400cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'editText',
401cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_edit_text',
402cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
403cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextFormField': {forward: true,
404cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    findNext: 'formField',
405cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'next_form_field',
406cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'jump_commands'},
407cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextGraphic': {forward: true,
408cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  findNext: 'graphic',
409cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  msgId: 'next_graphic',
410cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  category: 'jump_commands'},
411cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading': {forward: true,
412cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  findNext: 'heading',
413cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  msgId: 'next_heading',
414cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  category: 'jump_commands'},
415cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading1': {forward: true,
416cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading1',
417cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_heading1',
418cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
419cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading2': {forward: true,
420cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading2',
421cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_heading2',
422cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
423cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading3': {forward: true,
424cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading3',
425cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_heading3',
426cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
427cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading4': {forward: true,
428cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading4',
429cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_heading4',
430cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
431cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading5': {forward: true,
432cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading5',
433cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_heading5',
434cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
435cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextHeading6': {forward: true,
436cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading6',
437cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_heading6',
438cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
439cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
440cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextLandmark': {forward: true,
441cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'landmark',
442cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_landmark',
443cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
444cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextLink': {forward: true,
445cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               findNext: 'link',
446cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               msgId: 'next_link',
447cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               category: 'jump_commands'},
448cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextList': {forward: true,
449cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               findNext: 'list',
450cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               msgId: 'next_list',
451cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               category: 'jump_commands'},
452cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextListItem': {forward: true,
453cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'listItem',
454cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'next_list_item',
455cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
456cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextMath': {forward: true,
457cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               findNext: 'math',
458cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               msgId: 'next_math',
459cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               category: 'jump_commands'},
460cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextMedia': {forward: true,
461cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                findNext: 'media',
462cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'next_media',
463cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'jump_commands'},
464cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextRadio': {forward: true,
465cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                findNext: 'radio',
466cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'next_radio',
467cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'jump_commands'},
468cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextSection': {forward: true, findNext: 'section'},
469cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextSlider': {forward: true, findNext: 'slider'},
470cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextTable': {forward: true,
471cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                findNext: 'table',
472cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'next_table',
473cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'jump_commands'},
474cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextVisitedLink': {forward: true,
475cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                findNext: 'visitedLink',
476cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'next_visited_link',
477cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'jump_commands'},
478cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
479cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
480cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousArticle': {backward: true,
481cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  findNext: 'article'},
482cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
483cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousButton': {backward: true,
484cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 findNext: 'button',
485cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 msgId: 'previous_button',
486cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                 category: 'jump_commands'},
487cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousCheckbox': {backward: true,
488cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'checkbox',
489cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_checkbox',
490cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
491cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousComboBox': {backward: true,
492cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'combobox',
493cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_combo_box',
494cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
495cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousControl': {backward: true, findNext: 'control'},
496cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousEditText': {backward: true,
497cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'editText',
498cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_edit_text',
499cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
500cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousFormField': {backward: true,
501cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    findNext: 'formField',
502cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'previous_form_field',
503cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'jump_commands'},
504cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousGraphic': {backward: true,
505cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  findNext: 'graphic',
506cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  msgId: 'previous_graphic',
507cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  category: 'jump_commands'},
508cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading': {backward: true,
509cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  findNext: 'heading',
510cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  msgId: 'previous_heading',
511cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  category: 'jump_commands'},
512cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading1': {backward: true,
513cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading1',
514cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_heading1',
515cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
516cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading2': {backward: true,
517cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading2',
518cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_heading2',
519cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
520cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading3': {backward: true,
521cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading3',
522cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_heading3',
523cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
524cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading4': {backward: true,
525cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading4',
526cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_heading4',
527cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
528cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading5': {backward: true,
529cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading5',
530cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_heading5',
531cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
532cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousHeading6': {backward: true,
533cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'heading6',
534cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_heading6',
535cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
536cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
537cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousLandmark': {backward: true,
538cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'landmark',
539cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_landmark',
540cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
541cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousLink': {backward: true,
542cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'link',
543cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_link',
544cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
545cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousList': {backward: true,
546cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               findNext: 'list',
547cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               msgId: 'previous_list',
548cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               category: 'jump_commands'},
549cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousListItem': {backward: true,
550cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'listItem',
551cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_list_item',
552cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
553cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousMath': {backward: true,
554cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   findNext: 'math',
555cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'previous_math',
556cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'jump_commands'},
557cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousMedia': {backward: true,
558cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    findNext: 'media',
559cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'previous_media',
560cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'jump_commands'},
561cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousRadio': {backward: true,
562cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                findNext: 'radio',
563cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'previous_radio',
564cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'jump_commands'},
565cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousSection': {backward: true, findNext: 'section'},
566cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousSlider': {backward: true, findNext: 'slider'},
567cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousTable': {backward: true,
568cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                findNext: 'table',
569cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'previous_table',
570cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'jump_commands'},
571cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousVisitedLink': {backward: true,
572cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          findNext: 'visitedLink',
573cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          msgId: 'previous_visited_link',
574cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                          category: 'jump_commands'},
575cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
576cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
577cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Table Actions.
578cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'announceHeaders': {announce: false,
579cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'announce_headers',
580cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'tables'},
581cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'speakTableLocation': {announce: false,
582cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         msgId: 'speak_table_location',
583cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         category: 'tables'},
584cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'goToFirstCell': {announce: true,
585cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'skip_to_beginning',
586cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'tables'},
587cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'goToLastCell': {announce: true,
588cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'skip_to_end',
589cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'tables'},
590cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'goToRowFirstCell': {announce: true,
591cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       msgId: 'skip_to_row_beginning',
592cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       category: 'tables'},
593cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'goToRowLastCell': {announce: true,
594cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'skip_to_row_end',
595cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'tables'},
596cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'goToColFirstCell': {announce: true,
597cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       msgId: 'skip_to_col_beginning',
598cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       category: 'tables'},
599cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'goToColLastCell': {announce: true,
600cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'skip_to_col_end',
601cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'tables'},
602cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // These commands are left out of the options page because they involve
603cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // multiple, non-user configurable modifiers.
604cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousRow': {backward: true, announce: true, skipInput: true},
605cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'previousCol': {backward: true, announce: true, skipInput: true},
606cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextRow': {forward: true, announce: true, skipInput: true},
607cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nextCol': {forward: true, announce: true, skipInput: true},
608cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
609cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Generic Actions.
610cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'enterShifter': {announce: true,
611cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'enter_content',
612cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'navigation'},
613cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'exitShifter': {announce: true,
614cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  msgId: 'exit_content',
615cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                  category: 'navigation'},
616cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'exitShifterContent': {announce: true},
617cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
618cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'openLongDesc': {announce: false,
619cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   msgId: 'open_long_desc',
620cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                   category: 'information'},
621cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
622cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'pauseAllMedia': {announce: false,
623cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    msgId: 'pause_all_media',
624cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    category: 'information'},
625cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
626cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Math specific commands.
627cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleSemantics': {announce: false,
628cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'toggle_semantics',
629cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'information'},
630cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
631cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Braille specific commands.
632cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'routing': {announce: false,
633cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              allowEvents: true,
634cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              msgId: 'braille_routing',
635cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              category: 'braille'},
636cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'pan_left': {backward: true,
637cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               announce: true,
638cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               msgId: 'braille_pan_left',
639cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               category: 'braille'},
640cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'pan_right': {forward: true,
641cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                announce: true,
642cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'braille_pan_right',
643cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'braille'},
644cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'line_up': {backward: true,
645cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              announce: true,
646cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              msgId: 'braille_line_up',
647cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              category: 'braille'},
648cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'line_down': {forward: true,
649cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                announce: true,
650cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'braille_line_down',
651cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'braille'},
652cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'top': {forward: true,
653cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                announce: true,
654cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'braille_top',
655cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'braille'},
656cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'bottom': {backward: true,
657cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                announce: true,
658cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                msgId: 'braille_bottom',
659cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                category: 'braille'},
660cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
661cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Developer commands.
662cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'enableConsoleTts': {announce: false,
663cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      msgId: 'enable_tts_log',
664cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                      category: 'developer'},
665cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'toggleBrailleCaptions': {announce: false,
666cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            msgId: 'braille_captions',
667cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            category: 'developer'},
668cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
669cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'startHistoryRecording': {announce: false},
670cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'stopHistoryRecording': {announce: false},
671cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'autorunner': {announce: false},
672cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
673cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'debug': {announce: false},
674cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
675cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'nop': {announce: false}
676cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
677cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
678cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
679cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
680cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * List of find next commands and their associated data.
681cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @type {Object.<string, {predicate: string,
682cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         forwardError: string,
683cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *                         backwardError: string}>}
684cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  predicate: The name of the predicate. This must be defined in DomPredicates.
685cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  forwardError: The message id of the error string when moving forward.
686cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *  backwardError: The message id of the error string when moving backward.
687cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
688cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.CommandStore.NODE_INFO_MAP = {
689cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'checkbox': {predicate: 'checkboxPredicate',
690cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_checkbox',
691cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_checkbox',
692cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               typeMsg: 'aria_role_checkbox'},
693cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'radio': {predicate: 'radioPredicate',
694cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            forwardError: 'no_next_radio_button',
695cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            backwardError: 'no_previous_radio_button',
696cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            typeMsg: 'aria_role_radio'},
697cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'slider': {predicate: 'sliderPredicate',
698cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             forwardError: 'no_next_slider',
699cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             backwardError: 'no_previous_slider',
700cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             typeMsg: 'aria_role_slider'},
701cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'graphic': {predicate: 'graphicPredicate',
702cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              forwardError: 'no_next_graphic',
703cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              backwardError: 'no_previous_graphic',
704cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              typeMsg: 'UNUSED'},
705cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'article': {predicate: 'articlePredicate',
706cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             forwardError: 'no_next_ARTICLE',
707cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             backwardError: 'no_previous_ARTICLE',
708cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             typeMsg: 'TAG_ARTICLE'},
709cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'button': {predicate: 'buttonPredicate',
710cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             forwardError: 'no_next_button',
711cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             backwardError: 'no_previous_button',
712cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             typeMsg: 'aria_role_button'},
713cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'combobox': {predicate: 'comboBoxPredicate',
714cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_combo_box',
715cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_combo_box',
716cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               typeMsg: 'aria_role_combobox'},
717cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'editText': {predicate: 'editTextPredicate',
718cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_edit_text',
719cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_edit_text',
720cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               typeMsg: 'input_type_text'},
721cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading': {predicate: 'headingPredicate',
722cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              forwardError: 'no_next_heading',
723cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              backwardError: 'no_previous_heading',
724cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)              typeMsg: 'aria_role_heading'},
725cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading1': {predicate: 'heading1Predicate',
726cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_heading_1',
727cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_heading_1'},
728cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading2': {predicate: 'heading2Predicate',
729cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_heading_2',
730cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_heading_2'},
731cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading3': {predicate: 'heading3Predicate',
732cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_heading_3',
733cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_heading_3'},
734cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading4': {predicate: 'heading4Predicate',
735cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_heading_4',
736cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_heading_4'},
737cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading5': {predicate: 'heading5Predicate',
738cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_heading_5',
739cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_heading_5'},
740cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'heading6': {predicate: 'heading6Predicate',
741cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_heading_6',
742cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_heading_6'},
743cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
744cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'link': {predicate: 'linkPredicate',
745cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           forwardError: 'no_next_link',
746cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           backwardError: 'no_previous_link',
747cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           typeMsg: 'aria_role_link'},
748cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'table': {predicate: 'tablePredicate',
749cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            forwardError: 'no_next_table',
750cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            backwardError: 'no_previous_table',
751cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            typeMsg: 'table_strategy'},
752cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'visitedLink': {predicate: 'visitedLinkPredicate',
753cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            forwardError: 'no_next_visited_link',
754cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            backwardError: 'no_previous_visited_link',
755cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            typeMsg: 'tag_link'},
756cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'list': {predicate: 'listPredicate',
757cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           forwardError: 'no_next_list',
758cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           backwardError: 'no_previous_list',
759cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           typeMsg: 'aria_role_list'},
760cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'listItem': {predicate: 'listItemPredicate',
761cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_list_item',
762cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_list_item',
763cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               typeMsg: 'aria_role_listitem'},
764cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'formField': {predicate: 'formFieldPredicate',
765cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                forwardError: 'no_next_form_field',
766cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                backwardError: 'no_previous_form_field',
767cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                typeMsg: 'aria_role_form'},
768cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'landmark': {predicate: 'landmarkPredicate',
769cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               forwardError: 'no_next_landmark',
770cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               backwardError: 'no_previous_landmark',
771cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               typeMsg: 'role_landmark'},
772cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'math': {predicate: 'mathPredicate',
773cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           forwardError: 'no_next_math',
774cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           backwardError: 'no_previous_math',
775cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           typeMsg: 'math_expr'},
776cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'media': {predicate: 'mediaPredicate',
777cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            forwardError: 'no_next_media_widget',
778cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            backwardError: 'no_previous_media_widget'},
779cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'section': {predicate: 'sectionPredicate',
780cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           forwardError: 'no_next_section',
781cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           backwardError: 'no_previous_section'},
782cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  'control': {predicate: 'controlPredicate',
783cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           forwardError: 'no_next_control',
784cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           backwardError: 'no_previous_control'}
785cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
786