diff --git a/README.md b/README.md
index 2cec2aca..a6dbca37 100644
--- a/README.md
+++ b/README.md
@@ -69,6 +69,9 @@ _LMS_ supports lyrics in `lrc` files, `txt` files, and embedded track metadata.
* Play/pause: Space
* Previous track: Ctrl + Left
* Next track: Ctrl + Right
+* Decrease volume: Ctrl + Down
+* Increase volume: Ctrl + Up
+
## Installation
See [INSTALL.md](INSTALL.md) file.
diff --git a/docroot/js/mediaplayer.js b/docroot/js/mediaplayer.js
index f966e446..d926c5aa 100644
--- a/docroot/js/mediaplayer.js
+++ b/docroot/js/mediaplayer.js
@@ -15,6 +15,9 @@ const Mode = {
}
Object.freeze(Mode);
+// How much to increase / decrease volume when adjusting it with keyboard shortcuts
+const volumeStepAmount = 0.05;
+
LMS.mediaplayer = function () {
let _root = {};
let _elems = {};
@@ -199,6 +202,20 @@ LMS.mediaplayer = function () {
}
}
+ let _stepVolumeDown = function() {
+ let currentVolume = _elems.audio.volume;
+ let remainder = (currentVolume * 10) % (volumeStepAmount * 10);
+ let newVolume = remainder === 0 ? currentVolume - volumeStepAmount : currentVolume - (remainder / 10);
+ _setVolume(Math.max(newVolume, 0));
+ }
+
+ let _stepVolumeUp = function() {
+ let currentVolume = _elems.audio.volume;
+ let remainder = (currentVolume * 10) % (volumeStepAmount * 10);
+ let newVolume = remainder === 0 ? currentVolume + volumeStepAmount : currentVolume + (volumeStepAmount - (remainder / 10));
+ _setVolume(Math.min(newVolume, 1));
+ }
+
let _setReplayGain = function (replayGain) {
_gainNode.gain.value = Math.pow(10, (_settings.replayGain.preAmpGain + replayGain) / 20);
}
@@ -337,6 +354,14 @@ LMS.mediaplayer = function () {
_playNext();
handled = true;
}
+ else if (event.ctrlKey && event.keyCode == 40) {
+ _stepVolumeDown();
+ handled = true;
+ }
+ else if (event.ctrlKey && event.keyCode == 38) {
+ _stepVolumeUp();
+ handled = true;
+ }
if (handled)
event.preventDefault();