diff --git a/public/s/js/v0ck.js b/public/s/js/v0ck.js index 853e342..8c975ee 100644 --- a/public/s/js/v0ck.js +++ b/public/s/js/v0ck.js @@ -527,6 +527,38 @@ class v0ck { document.addEventListener('fullscreenchange', toggleFullScreenClasses); toggleFullScreenClasses(); // Check initial state (important for transitions) + function handleKeyDown(e) { + if (!document.body.contains(video)) { + document.removeEventListener('keydown', handleKeyDown); + return; + } + + // Block interaction if content warning is visible + const cwModal = document.getElementById('content-warning-modal'); + if (cwModal && cwModal.style.display !== 'none') return; + + // Don't fire if user is typing in an input, textarea or editing content + if (e.target.tagName === "INPUT" || e.target.tagName === "TEXTAREA" || e.target.isContentEditable) return; + + if (e.key === "ArrowUp" || e.key === "ArrowDown") { + e.preventDefault(); + let newVol = video.volume; + if (e.key === "ArrowUp") { + newVol = Math.min(1, newVol + 0.05); + } else { + newVol = Math.max(0, newVol - 0.05); + } + video.volume = newVol; + if (volumeSlider) { + volumeSlider.value = newVol; + } + _volume = newVol; + handleVolumeButton(newVol); + showHUD(newVol); + } + } + document.addEventListener('keydown', handleKeyDown); + video.volume = _volume = volumeSlider.value = +(localStorage.getItem('volume') ?? defaultVolume); handleVolumeButton(video.volume); diff --git a/src/inc/locales/de.json b/src/inc/locales/de.json index b5c02e8..acb9f66 100644 --- a/src/inc/locales/de.json +++ b/src/inc/locales/de.json @@ -288,6 +288,7 @@ "toggle_rating": "Beitragsbewertung umschalten", "play_pause": "Abspielen/Pause", "next_prev": "Weiter/Zurück", + "volume": "Lautstärke", "scroll_nav": "Weiter/Zurück", "show_help": "Hilfe anzeigen" }, diff --git a/src/inc/locales/en.json b/src/inc/locales/en.json index 83f11bd..08ae7d0 100644 --- a/src/inc/locales/en.json +++ b/src/inc/locales/en.json @@ -288,6 +288,7 @@ "toggle_rating": "toggle item rating", "play_pause": "play/pause", "next_prev": "next/prev", + "volume": "volume", "scroll_nav": "next/prev", "show_help": "show help" }, diff --git a/src/inc/locales/nl.json b/src/inc/locales/nl.json index 78da053..0d42b99 100644 --- a/src/inc/locales/nl.json +++ b/src/inc/locales/nl.json @@ -288,6 +288,7 @@ "toggle_rating": "itembeoordeling omschakelen", "play_pause": "afspelen/pauzeren", "next_prev": "volgende/vorige", + "volume": "volume", "scroll_nav": "next/prev", "show_help": "help tonen" }, diff --git a/src/inc/locales/zange.json b/src/inc/locales/zange.json index 8a2e110..d1650de 100644 --- a/src/inc/locales/zange.json +++ b/src/inc/locales/zange.json @@ -286,6 +286,7 @@ "toggle_rating": "Elementbewertung umschalten", "play_pause": "Abspielen/Pause", "next_prev": "nächster/vorheriger", + "volume": "Lautstärke", "scroll_nav": "nächster/vorheriger", "show_help": "Hilfe anzeigen" }, diff --git a/views/snippets/navbar.html b/views/snippets/navbar.html index 6ae1e9c..7973833 100644 --- a/views/snippets/navbar.html +++ b/views/snippets/navbar.html @@ -316,7 +316,8 @@
p{{ t('shortcuts.toggle_rating') }}
@endif
Space{{ t('shortcuts.play_pause') }}
-
Arrows{{ t('shortcuts.next_prev') }}
+
{{ t('shortcuts.next_prev') }}
+
{{ t('shortcuts.volume') }}
Scroll{{ t('shortcuts.scroll_nav') }}
?{{ t('shortcuts.show_help') }}