jiti-meet/modules/keyboardshortcut/keyboardshortcut.js

131 lines
3.9 KiB
JavaScript
Raw Normal View History

/* global APP, $ */
2015-01-22 16:26:05 +00:00
//maps keycode to character, id of popover for given function and function
var shortcuts = {};
function initShortcutHandlers() {
shortcuts = {
27: {
character: "Esc",
function: function() {
APP.UI.showKeyboardShortcutsPanel(false);
}
},
67: {
character: "C",
id: "toggleChatPopover",
2016-02-05 18:53:31 +00:00
function: function() {
APP.UI.toggleChat();
}
},
68: {
character: "D",
id: "toggleDesktopSharingPopover",
function: function () {
APP.conference.toggleScreenSharing();
2016-02-05 18:53:31 +00:00
}
},
70: {
character: "F",
id: "filmstripPopover",
2016-02-05 18:53:31 +00:00
function: function() {
APP.UI.toggleFilmStrip();
}
},
77: {
character: "M",
id: "mutePopover",
2016-02-05 18:53:31 +00:00
function: function() {
APP.conference.toggleAudioMuted();
}
},
2016-06-20 21:13:17 +00:00
82: {
character: "R",
function: function() {
APP.conference.maybeToggleRaisedHand();
}
},
84: {
character: "T",
function: function() {
2015-12-03 13:11:01 +00:00
APP.conference.muteAudio(true);
2015-01-22 16:26:05 +00:00
}
},
86: {
character: "V",
id: "toggleVideoPopover",
2016-02-05 18:53:31 +00:00
function: function() {
APP.conference.toggleVideoMuted();
}
},
191: {
character: "/",
function: function(e) {
// Only trigger on "?", not on "/".
if (e.shiftKey) {
APP.UI.toggleKeyboardShortcutsPanel();
}
}
2015-01-22 16:26:05 +00:00
}
};
}
2015-01-22 16:26:05 +00:00
var KeyboardShortcut = {
init: function () {
initShortcutHandlers();
2015-01-22 16:26:05 +00:00
window.onkeyup = function(e) {
var keycode = e.which;
if(!($(":focus").is("input[type=text]") ||
$(":focus").is("input[type=password]") ||
$(":focus").is("textarea"))) {
if (typeof shortcuts[keycode] === "object") {
shortcuts[keycode].function(e);
2015-01-22 16:26:05 +00:00
}
else if (keycode >= "0".charCodeAt(0) &&
keycode <= "9".charCodeAt(0)) {
APP.UI.clickOnVideo(keycode - "0".charCodeAt(0) + 1);
2015-01-22 16:26:05 +00:00
}
//esc while the smileys are visible hides them
} else if (keycode === 27 &&
$('#smileysContainer').is(':visible')) {
APP.UI.toggleSmileys();
2015-01-22 16:26:05 +00:00
}
};
window.onkeydown = function(e) {
if(!($(":focus").is("input[type=text]") ||
$(":focus").is("input[type=password]") ||
$(":focus").is("textarea"))) {
if(e.which === "T".charCodeAt(0)) {
2016-02-09 16:29:50 +00:00
if(APP.conference.isLocalAudioMuted())
APP.conference.muteAudio(false);
2015-01-22 16:26:05 +00:00
}
}
};
var self = this;
$('body').popover({ selector: '[data-toggle=popover]',
trigger: 'click hover',
content: function() {
return this.getAttribute("content") +
self.getShortcut(this.getAttribute("shortcut"));
}
});
2015-01-22 16:26:05 +00:00
},
/**
*
* @param id indicates the popover associated with the shortcut
* @returns {string} the keyboard shortcut used for the id given
*/
getShortcut: function (id) {
for (var keycode in shortcuts) {
if (shortcuts.hasOwnProperty(keycode)) {
if (shortcuts[keycode].id === id) {
return " (" + shortcuts[keycode].character + ")";
}
}
}
return "";
}
};
module.exports = KeyboardShortcut;