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 7231a6b6dc21641371c1d8709cff4c6de7828ff8..7162a6d97b0f164324befe81b36ba08bc79d8cdd 100644 |
--- a/chrome/browser/resources/chromeos/switch_access/keyboard_handler.js |
+++ b/chrome/browser/resources/chromeos/switch_access/keyboard_handler.js |
@@ -18,6 +18,13 @@ function KeyboardHandler(switchAccess) { |
*/ |
this.switchAccess_ = switchAccess; |
+ /** |
+ * User preferences. |
+ * |
+ * @private {SwitchAccessPrefs} |
+ */ |
+ this.prefs_ = switchAccess.switchAccessPrefs; |
+ |
this.init_(); |
} |
@@ -28,13 +35,31 @@ 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)); |
}, |
+ /** |
+ * Update the keyboard keys captured by Switch Access to those stored in |
+ * prefs. |
+ */ |
+ updateSwitchAccessKeys: function() { |
+ let keyCodes = []; |
+ for (let command of this.prefs_.getCommands()) |
+ keyCodes.push(this.keyCodeFor_(command)); |
+ chrome.accessibilityPrivate.setSwitchAccessKeys(keyCodes); |
+ }, |
+ |
+ /** |
+ * Return the key code that |command| maps to. |
+ * |
+ * @param {string} command |
+ * @return {number} |
+ */ |
+ keyCodeFor_: function(command) { |
+ return this.prefs_.getNumberPref(command); |
+ }, |
+ |
/** |
* Handle a keyboard event by calling the appropriate SwitchAccess functions. |
* |
@@ -42,39 +67,40 @@ KeyboardHandler.prototype = { |
* @private |
*/ |
handleKeyEvent_: function(event) { |
- switch (event.key) { |
- case '1': |
- console.log('1 = go to next element'); |
+ let key = event.key.toUpperCase(); |
+ switch (event.keyCode) { |
dmazzoni
2017/06/15 22:37:39
One possibility here would be a map from command n
elichtenberg
2017/06/20 01:02:30
Done. Put command map in commands.js
|
+ case this.keyCodeFor_('next'): |
+ console.log(key + ' = go to next element'); |
this.switchAccess_.moveToNode(true); |
break; |
- case '2': |
- console.log('2 = go to previous element'); |
+ case this.keyCodeFor_('previous'): |
+ console.log(key + ' = go to previous element'); |
this.switchAccess_.moveToNode(false); |
break; |
- case '3': |
- console.log('3 = select element'); |
+ case this.keyCodeFor_('select'): |
+ console.log(key + ' = select element'); |
this.switchAccess_.selectCurrentNode(); |
break; |
- case '4': |
+ case this.keyCodeFor_('options'): |
this.switchAccess_.showOptionsPage(); |
break; |
} |
if (debuggingEnabled) { |
- switch (event.key) { |
- case '6': |
- console.log('6 = go to next element (debug mode)'); |
+ switch (event.keyCode) { |
+ case this.keyCodeFor_('debugNext'): |
+ console.log(key + ' = go to next element (debug mode)'); |
this.switchAccess_.debugMoveToNext(); |
break; |
- case '7': |
- console.log('7 = go to previous element (debug mode)'); |
+ case this.keyCodeFor_('debugPrevious'): |
+ console.log(key + ' = go to previous element (debug mode)'); |
this.switchAccess_.debugMoveToPrevious(); |
break; |
- case '8': |
- console.log('8 = go to child element (debug mode)'); |
+ case this.keyCodeFor_('debugChild'): |
+ console.log(key + ' = go to child element (debug mode)'); |
this.switchAccess_.debugMoveToFirstChild(); |
break; |
- case '9': |
- console.log('9 = go to parent element (debug mode)'); |
+ case this.keyCodeFor_('debugParent'): |
+ console.log(key + ' = go to parent element (debug mode)'); |
this.switchAccess_.debugMoveToParent(); |
break; |
} |