Add keyboard shortcuts for adjusting volume

* Ctrl + Down decreases, Ctrl + Up increases in 5 % increments.
* The volume slider value gets rounded up / down to the nearest increment if it isn't exactly at one of the increments.
This commit is contained in:
Tuukka Ojala
2025-01-16 20:12:42 +02:00
parent 4a75e5220e
commit baa7b36725
2 changed files with 28 additions and 0 deletions
+3
View File
@@ -69,6 +69,9 @@ _LMS_ supports lyrics in `lrc` files, `txt` files, and embedded track metadata.
* Play/pause: <kbd>Space</kbd> * Play/pause: <kbd>Space</kbd>
* Previous track: <kbd>Ctrl</kbd> + <kbd>Left</kbd> * Previous track: <kbd>Ctrl</kbd> + <kbd>Left</kbd>
* Next track: <kbd>Ctrl</kbd> + <kbd>Right</kbd> * Next track: <kbd>Ctrl</kbd> + <kbd>Right</kbd>
* Decrease volume: <kbd>Ctrl</kbd> + <kbd>Down</kbd>
* Increase volume: <kbd>Ctrl</kbd> + <kbd>Up</kbd>
## Installation ## Installation
See [INSTALL.md](INSTALL.md) file. See [INSTALL.md](INSTALL.md) file.
+25
View File
@@ -15,6 +15,9 @@ const Mode = {
} }
Object.freeze(Mode); Object.freeze(Mode);
// How much to increase / decrease volume when adjusting it with keyboard shortcuts
const volumeStepAmount = 0.05;
LMS.mediaplayer = function () { LMS.mediaplayer = function () {
let _root = {}; let _root = {};
let _elems = {}; 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) { let _setReplayGain = function (replayGain) {
_gainNode.gain.value = Math.pow(10, (_settings.replayGain.preAmpGain + replayGain) / 20); _gainNode.gain.value = Math.pow(10, (_settings.replayGain.preAmpGain + replayGain) / 20);
} }
@@ -337,6 +354,14 @@ LMS.mediaplayer = function () {
_playNext(); _playNext();
handled = true; handled = true;
} }
else if (event.ctrlKey && event.keyCode == 40) {
_stepVolumeDown();
handled = true;
}
else if (event.ctrlKey && event.keyCode == 38) {
_stepVolumeUp();
handled = true;
}
if (handled) if (handled)
event.preventDefault(); event.preventDefault();