diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-09 11:11:49 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-09 11:11:49 +0300 |
| commit | 8c32cd117abe79f4ee6cff3a950ffc35c95faeff (patch) | |
| tree | 5b63a4789351da4f2d9c1cd2e7007f67d43b3371 /web/js/keyboard.js | |
| parent | 59c8870061465142306e7a6e5d3fcb344686cfe9 (diff) | |
Refine media browsing and set covers
Diffstat (limited to 'web/js/keyboard.js')
| -rw-r--r-- | web/js/keyboard.js | 40 |
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; + } +} |
