diff options
Diffstat (limited to 'chromium/chrome/browser/resources/chromeos/chromevox/host/chrome/braille_key_types.js')
-rw-r--r-- | chromium/chrome/browser/resources/chromeos/chromevox/host/chrome/braille_key_types.js | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/chromium/chrome/browser/resources/chromeos/chromevox/host/chrome/braille_key_types.js b/chromium/chrome/browser/resources/chromeos/chromevox/host/chrome/braille_key_types.js new file mode 100644 index 00000000000..b2b800ca566 --- /dev/null +++ b/chromium/chrome/browser/resources/chromeos/chromevox/host/chrome/braille_key_types.js @@ -0,0 +1,133 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Braille command definitions. + * These types are adapted from Chrome's private braille API. + * They can be found in the Chrome source repo at: + * src/chrome/common/extensions/api/braille_display_private.idl + * We define them here since they don't actually exist as bindings under + * chrome.brailleDisplayPrivate.*. + */ + +goog.provide('cvox.BrailleDisplayState'); +goog.provide('cvox.BrailleKeyCommand'); +goog.provide('cvox.BrailleKeyEvent'); + +goog.require('cvox.ChromeVox'); + + +/** + * The set of commands sent from a braille display. + * @enum {string} + */ +cvox.BrailleKeyCommand = { + PAN_LEFT: 'pan_left', + PAN_RIGHT: 'pan_right', + LINE_UP: 'line_up', + LINE_DOWN: 'line_down', + TOP: 'top', + BOTTOM: 'bottom', + ROUTING: 'routing', + SECONDARY_ROUTING: 'secondary_routing', + DOTS: 'dots', + STANDARD_KEY: 'standard_key' +}; + + +/** + * Represents a key event from a braille display. + * + * @typedef {{command: cvox.BrailleKeyCommand, + * displayPosition: (undefined|number), + * brailleDots: (undefined|number), + * standardKeyCode: (undefined|string), + * standardKeyChar: (undefined|string), + * altKey: (undefined|boolean), + * ctrlKey: (undefined|boolean), + * shiftKey: (undefined|boolean) + * }} + * command The name of the command. + * displayPosition The 0-based position relative to the start of the currently + * displayed text. Used for commands that involve routing + * keys or similar. The position is given in characters, + * not braille cells. + * brailleDots Dots that were pressed for braille input commands. Bit mask + * where bit 0 represents dot 1 etc. + * standardKeyCode DOM level 4 key code. + * standardKeyChar DOM key event character. + * altKey Whether the alt key was pressed. + * ctrlKey Whether the control key was pressed. + * shiftKey Whether the shift key was pressed. + */ +cvox.BrailleKeyEvent = {}; + + +/** + * Returns the numeric key code for a DOM level 4 key code string. + * NOTE: Only the key codes produced by the brailleDisplayPrivate API are + * supported. + * @param {string} code DOM level 4 key code. + * @return {number|undefined} The numeric key code, or {@code undefined} + * if unknown. + */ +cvox.BrailleKeyEvent.keyCodeToLegacyCode = function(code) { + return cvox.BrailleKeyEvent.legacyKeyCodeMap_[code]; +}; + + +/** + * Returns a char value appropriate for a synthezised key event for a given + * key code. + * @param {string} keyCode The DOM level 4 key code. + * @return {number} Integral character code. + */ +cvox.BrailleKeyEvent.keyCodeToCharValue = function(keyCode) { + /** @const */ + var SPECIAL_CODES = { + 'Backspace': 0x08, + 'Tab': 0x09, + 'Enter': 0x0A + }; + // Note, the Chrome virtual keyboard falls back on the first character of the + // key code if the key is not one of the above. Do the same here. + return SPECIAL_CODES[keyCode] || keyCode.charCodeAt(0); +}; + + +/** + * Map from DOM level 4 key codes to legacy numeric key codes. + * @private {Object.<string, number>} + */ +cvox.BrailleKeyEvent.legacyKeyCodeMap_ = { + 'Backspace': 8, + 'Tab': 9, + 'Enter': 13, + 'Escape': 27, + 'Home': 36, + 'ArrowLeft': 37, + 'ArrowUp': 38, + 'ArrowRight': 39, + 'ArrowDown': 40, + 'PageUp': 33, + 'PageDown': 34, + 'End': 35, + 'Insert': 45, + 'Delete': 46 +}; + +// Add the F1 to F12 keys. +(function() { + for (var i = 0; i < 12; ++i) { + cvox.BrailleKeyEvent.legacyKeyCodeMap_['F' + (i + 1)] = 112 + i; + } +})(); + + +/** + * The state of a braille display as represented in the + * chrome.brailleDisplayPrivate API. + * @typedef {{available: boolean, textCellCount: (number|undefined)}} + */ +cvox.BrailleDisplayState; |