| Index: chrome/browser/resources/chromeos/switch_access/keyboard_handler.js
|
| diff --git a/chrome/browser/resources/chromeos/switch_access/keyboard_handler.js b/chrome/browser/resources/chromeos/switch_access/keyboard_handler.js
|
| index 644f6235fdf578a856c8ca1120031145afaebcac..23bf3f6e4cd4d20da46be23c00588e363d35be21 100644
|
| --- a/chrome/browser/resources/chromeos/switch_access/keyboard_handler.js
|
| +++ b/chrome/browser/resources/chromeos/switch_access/keyboard_handler.js
|
| @@ -2,9 +2,6 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -// TODO(elichtenberg): Move into custom logger class or somewhere else.
|
| -let debuggingEnabled = true;
|
| -
|
| /**
|
| * Class to handle keyboard input.
|
| *
|
| @@ -14,6 +11,7 @@ let debuggingEnabled = true;
|
| function KeyboardHandler(switchAccess) {
|
| /**
|
| * SwitchAccess reference.
|
| + *
|
| * @private {SwitchAccessInterface}
|
| */
|
| this.switchAccess_ = switchAccess;
|
| @@ -28,57 +26,50 @@ KeyboardHandler.prototype = {
|
| * @private
|
| */
|
| init_: function() {
|
| - // Capture keycodes for keys 1 through 4, and 6 through 9.
|
| - let keyCodes =
|
| - ['1', '2', '3', '4', '6', '7', '8', '9'].map(key => key.charCodeAt(0));
|
| - chrome.accessibilityPrivate.setSwitchAccessKeys(keyCodes);
|
| + this.updateSwitchAccessKeys();
|
| document.addEventListener('keyup', this.handleKeyEvent_.bind(this));
|
| },
|
|
|
| /**
|
| - * Handle a keyboard event by calling the appropriate SwitchAccess functions.
|
| + * Update the keyboard keys captured by Switch Access to those stored in
|
| + * prefs.
|
| + */
|
| + updateSwitchAccessKeys: function() {
|
| + let keyCodes = [];
|
| + for (let command of this.switchAccess_.getCommands()) {
|
| + let keyCode = this.keyCodeFor_(command);
|
| + if ((keyCode >= '0'.charCodeAt(0) && keyCode <= '9'.charCodeAt(0)) ||
|
| + (keyCode >= 'A'.charCodeAt(0) && keyCode <= 'Z'.charCodeAt(0)))
|
| + keyCodes.push(keyCode);
|
| + }
|
| + chrome.accessibilityPrivate.setSwitchAccessKeys(keyCodes);
|
| + },
|
| +
|
| + /**
|
| + * Return the key code that |command| maps to.
|
| + *
|
| + * @param {string} command
|
| + * @return {number}
|
| + */
|
| + keyCodeFor_: function(command) {
|
| + return this.switchAccess_.getNumberPref(command);
|
| + },
|
| +
|
| + /**
|
| + * Run the command associated with the passed keyboard event.
|
| *
|
| * @param {!Event} event
|
| * @private
|
| */
|
| handleKeyEvent_: function(event) {
|
| - switch (event.key) {
|
| - case '1':
|
| - console.log('1 = go to next element');
|
| - this.switchAccess_.moveToNode(true);
|
| - break;
|
| - case '2':
|
| - console.log('2 = go to previous element');
|
| - this.switchAccess_.moveToNode(false);
|
| - break;
|
| - case '3':
|
| - console.log('3 = select element');
|
| - this.switchAccess_.selectCurrentNode();
|
| - break;
|
| - case '4':
|
| - this.switchAccess_.showOptionsPage();
|
| - break;
|
| - }
|
| - if (debuggingEnabled) {
|
| - switch (event.key) {
|
| - case '6':
|
| - console.log('6 = go to next element (debug mode)');
|
| - this.switchAccess_.debugMoveToNext();
|
| - break;
|
| - case '7':
|
| - console.log('7 = go to previous element (debug mode)');
|
| - this.switchAccess_.debugMoveToPrevious();
|
| - break;
|
| - case '8':
|
| - console.log('8 = go to child element (debug mode)');
|
| - this.switchAccess_.debugMoveToFirstChild();
|
| - break;
|
| - case '9':
|
| - console.log('9 = go to parent element (debug mode)');
|
| - this.switchAccess_.debugMoveToParent();
|
| - break;
|
| + for (let command of this.switchAccess_.getCommands()) {
|
| + if (this.keyCodeFor_(command) === event.keyCode) {
|
| + let key = event.key.toUpperCase();
|
| + console.log('\'' + key + '\' pressed for command: ' + command);
|
| + this.switchAccess_.runCommand(command);
|
| + this.switchAccess_.performedUserAction();
|
| + return;
|
| }
|
| }
|
| - this.switchAccess_.performedUserAction();
|
| - }
|
| + },
|
| };
|
|
|