blob: ff6c38673abb406c5a8bd9a6b00b83daab582708 [file] [log] [blame]
// Copyright (c) 2011 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.
// An object to implement keyboard overlay accessibility.
var KeyboardOverlayAccessibilityHelper = {
// Returns true when ChromeVox is loaded and active, false otherwise.
cvoxIsActive: function() {
return window.cvox && window.cvox.Api.isChromeVoxActive();
},
// Speaks all the shortcut with the given modifiers.
maybeSpeakAllShortcuts: function(modifiers) {
if (!this.cvoxIsActive())
return;
cvox.Api.stop();
var keyboardGlyphData = getKeyboardGlyphData();
var shortcutData = getShortcutData();
var layout = getLayouts()[keyboardGlyphData.layoutName];
var keysToShortcutText = {};
for (var i = 0; i < layout.length; ++i) {
var identifier = remapIdentifier(layout[i][0]);
var keyData = keyboardGlyphData.keys[identifier];
var keyLabel = getKeyLabel(keyData, modifiers);
var shortcutId = shortcutData[getAction(keyLabel, modifiers)];
var shortcutText = templateData[shortcutId];
var keysText = modifiers.concat(keyLabel).join(' + ');
if (shortcutText)
keysToShortcutText[keysText] = shortcutText;
}
for (var keysText in keysToShortcutText) {
this.speakShortcut_(keysText, keysToShortcutText[keysText]);
}
},
// Speaks given shortcut description.
speakShortcut_: function(keysText, shortcutText) {
keysText = keysText.toLowerCase(); // For correct pronunciation.
cvox.Api.speak(keysText, 1, {});
cvox.Api.speak(shortcutText, 1, {});
},
};