diff --git a/README.md b/README.md index a6dbca37..35cc1679 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ _LMS_ supports lyrics in `lrc` files, `txt` files, and embedded track metadata. * Next track: Ctrl + Right * Decrease volume: Ctrl + Down * Increase volume: Ctrl + Up +* Seek back by 5 seconds: Ctrl + Shift + Left +* Seek forward by 5 seconds: Ctrl + Shift + Right ## Installation diff --git a/docroot/js/mediaplayer.js b/docroot/js/mediaplayer.js index d926c5aa..f1857145 100644 --- a/docroot/js/mediaplayer.js +++ b/docroot/js/mediaplayer.js @@ -18,6 +18,9 @@ Object.freeze(Mode); // How much to increase / decrease volume when adjusting it with keyboard shortcuts const volumeStepAmount = 0.05; +// How much to seek back / forward (in seconds) with keyboard shortcuts +const seekAmount = 5; + LMS.mediaplayer = function () { let _root = {}; let _elems = {}; @@ -245,6 +248,18 @@ LMS.mediaplayer = function () { _updateMediaSessionState(); } + let _seekBack = function() { + let currentPosition = _offset + _elems.audio.currentTime; + let newPosition = currentPosition - seekAmount; + _seekTo(Math.max(newPosition, 0)); + } + + let _seekForward = function() { + let currentPosition = _offset + _elems.audio.currentTime; + let newPosition = currentPosition + seekAmount; + _seekTo(Math.min(newPosition, _duration)); + } + let _updateMediaSessionState = function() { if ("mediaSession" in navigator) { navigator.mediaSession.setPositionState({ @@ -346,11 +361,11 @@ LMS.mediaplayer = function () { _playPause(); handled = true; } - else if (event.ctrlKey && event.keyCode == 37) { + else if (event.ctrlKey && !event.shiftKey && event.keyCode == 37) { _playPrevious(); handled = true; } - else if (event.ctrlKey && event.keyCode == 39) { + else if (event.ctrlKey && !event.shiftKey && event.keyCode == 39) { _playNext(); handled = true; } @@ -362,6 +377,14 @@ LMS.mediaplayer = function () { _stepVolumeUp(); handled = true; } + else if (event.ctrlKey && event.shiftKey && event.keyCode == 37) { + _seekBack(); + handled = true; + } + else if (event.ctrlKey && event.shiftKey && event.keyCode == 39) { + _seekForward(); + handled = true; + } if (handled) event.preventDefault();