Home | History | Annotate | Download | only in chromeos
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // An object to implement keyboard overlay accessibility.
      6 var KeyboardOverlayAccessibilityHelper = {
      7   // Returns true when ChromeVox is loaded and active, false otherwise.
      8   cvoxIsActive: function() {
      9     return window.cvox && window.cvox.Api.isChromeVoxActive();
     10   },
     11   // Speaks all the shortcut with the given modifiers.
     12   maybeSpeakAllShortcuts: function(modifiers) {
     13     if (!this.cvoxIsActive())
     14       return;
     15     cvox.Api.stop();
     16     var keyboardGlyphData = getKeyboardGlyphData();
     17     var shortcutData = getShortcutData();
     18     var layout = getLayouts()[keyboardGlyphData.layoutName];
     19     var keysToShortcutText = {};
     20     for (var i = 0; i < layout.length; ++i) {
     21       var identifier = remapIdentifier(layout[i][0]);
     22       var keyData = keyboardGlyphData.keys[identifier];
     23       var keyLabel = getKeyLabel(keyData, modifiers);
     24       var shortcutId = shortcutData[getAction(keyLabel, modifiers)];
     25       var shortcutText = templateData[shortcutId];
     26       var keysText = modifiers.concat(keyLabel).join(' + ');
     27       if (shortcutText)
     28         keysToShortcutText[keysText] = shortcutText;
     29     }
     30     for (var keysText in keysToShortcutText) {
     31       this.speakShortcut_(keysText, keysToShortcutText[keysText]);
     32     }
     33   },
     34   // Speaks given shortcut description.
     35   speakShortcut_: function(keysText, shortcutText) {
     36     keysText = keysText.toLowerCase();  // For correct pronunciation.
     37     cvox.Api.speak(keysText, 1, {});
     38     cvox.Api.speak(shortcutText, 1, {});
     39   },
     40 };
     41