diff -r 74ac0be7655c -r c20df1c080e6 src/widgets/Shortcuts.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/widgets/Shortcuts.js Fri Feb 13 16:57:53 2015 +0100 @@ -0,0 +1,58 @@ +IriSP.Widgets.Shortcuts = function(player, config) { + IriSP.Widgets.Widget.call(this, player, config); +}; + +/** + * Keyboard shortcuts widget + * This widgets add global shortcuts for common actions. + * The default shortcuts are: + * - Escape or Control-space for play/pause + * - Control-left for rewind (+shift to go faster) + * - Control-right for forward (+shift to go faster) + */ +IriSP.Widgets.Shortcuts.prototype = new IriSP.Widgets.Widget(); + +IriSP.Widgets.Shortcuts.prototype.defaults = { + // Time increment, in ms, for backward/forward navigation + time_increment: 2000 +} + +IriSP.Widgets.Shortcuts.prototype.draw = function() { + var _this = this; + + /* Standard shortcuts */ + Mousetrap.bindGlobal(["esc", "ctrl+space"], function (e) { + e.preventDefault(); + if (! _this.media.getPaused()) { + _this.media.pause(); + } else { + _this.media.play(); + } + return false; + }); + Mousetrap.bindGlobal("ctrl+left", function (e) { + // Backward + e.preventDefault(); + _this.media.setCurrentTime(Math.max(0, _this.media.getCurrentTime() - _this.time_increment)); + return false; + }); + Mousetrap.bindGlobal("ctrl+shift+left", function (e) { + // Backward + e.preventDefault(); + _this.media.setCurrentTime(Math.max(0, _this.media.getCurrentTime() - 5 * _this.time_increment)); + return false; + }); + Mousetrap.bindGlobal("ctrl+right", function (e) { + // Forward + e.preventDefault(); + _this.media.setCurrentTime(Math.min(_this.media.duration, _this.media.getCurrentTime() + _this.time_increment)); + return false; + }); + Mousetrap.bindGlobal("ctrl+shift+right", function (e) { + // Forward + e.preventDefault(); + _this.media.setCurrentTime(Math.min(_this.media.duration, _this.media.getCurrentTime() + 5 * _this.time_increment)); + return false; + }); + +};