summaryrefslogtreecommitdiff
path: root/web/js/keyboard.js
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-09 11:11:49 +0300
committerPaul Buetow <paul@buetow.org>2026-05-09 11:11:49 +0300
commit8c32cd117abe79f4ee6cff3a950ffc35c95faeff (patch)
tree5b63a4789351da4f2d9c1cd2e7007f67d43b3371 /web/js/keyboard.js
parent59c8870061465142306e7a6e5d3fcb344686cfe9 (diff)
Refine media browsing and set covers
Diffstat (limited to 'web/js/keyboard.js')
-rw-r--r--web/js/keyboard.js40
1 files changed, 31 insertions, 9 deletions
diff --git a/web/js/keyboard.js b/web/js/keyboard.js
index 49fa358..7752413 100644
--- a/web/js/keyboard.js
+++ b/web/js/keyboard.js
@@ -125,6 +125,17 @@ export function initKeyboard(handlers) {
if (e.ctrlKey || e.metaKey || e.altKey) return; // don't intercept browser shortcuts
+ const imageDelta = fullscreenImageDelta(e);
+ if (imageDelta && handlers.imageFullscreenNavigate?.(imageDelta)) {
+ e.preventDefault();
+ return;
+ }
+
+ if (/^[1-9]$/.test(e.key) && handlers.selectSetByHotkey?.(e.key)) {
+ e.preventDefault();
+ return;
+ }
+
if (e.shiftKey) {
switch (e.key) {
case 'ArrowUp':
@@ -155,15 +166,7 @@ export function initKeyboard(handlers) {
}
if (e.code === 'KeyS') {
e.preventDefault();
- if (e.shiftKey) {
- if (handlers.isImageMode?.()) {
- handlers.toggleSlideshow?.(e);
- } else {
- handlers.share?.(e);
- }
- } else {
- handlers.share?.(e);
- }
+ handlers.share?.(e);
return;
}
@@ -276,3 +279,22 @@ export function initKeyboard(handlers) {
}
});
}
+
+function fullscreenImageDelta(e) {
+ switch (e.key) {
+ case 'ArrowLeft':
+ case 'ArrowUp':
+ case 'h':
+ case 'k':
+ case 'PageUp':
+ return e.key === 'PageUp' ? -10 : -1;
+ case 'ArrowRight':
+ case 'ArrowDown':
+ case 'j':
+ case 'l':
+ case 'PageDown':
+ return e.key === 'PageDown' ? 10 : 1;
+ default:
+ return 0;
+ }
+}