Handle some keyboard shortcuts

This commit is contained in:
ZXY101
2023-09-25 09:49:26 +02:00
parent 544435b0ec
commit 2efa4fb7a1
2 changed files with 47 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { currentVolume } from '$lib/catalog'; import { currentVolume } from '$lib/catalog';
import { Panzoom, zoomDefault } from '$lib/panzoom'; import { Panzoom, toggleFullScreen, zoomDefault } from '$lib/panzoom';
import { progress, settings, updateProgress } from '$lib/settings'; import { progress, settings, updateProgress } from '$lib/settings';
import { clamp } from '$lib/util'; import { clamp } from '$lib/util';
import { Input, Popover, Range } from 'flowbite-svelte'; import { Input, Popover, Range } from 'flowbite-svelte';
@@ -25,14 +25,14 @@
start = new Date(); start = new Date();
} }
function left() { function left(_e: any, ingoreTimeOut?: boolean) {
const newPage = $settings.rightToLeft ? page + navAmount : page - navAmount; const newPage = $settings.rightToLeft ? page + navAmount : page - navAmount;
changePage(newPage); changePage(newPage, ingoreTimeOut);
} }
function right() { function right(_e: any, ingoreTimeOut?: boolean) {
const newPage = $settings.rightToLeft ? page - navAmount : page + navAmount; const newPage = $settings.rightToLeft ? page - navAmount : page + navAmount;
changePage(newPage); changePage(newPage, ingoreTimeOut);
} }
function changePage(newPage: number, ingoreTimeOut = false) { function changePage(newPage: number, ingoreTimeOut = false) {
@@ -91,9 +91,42 @@
afterUpdate(() => { afterUpdate(() => {
zoomDefault(); zoomDefault();
}); });
function handleShortcuts(event: KeyboardEvent & { currentTarget: EventTarget & Window }) {
switch (event.code) {
case 'ArrowLeft':
case 'ArrowUp':
case 'PageUp':
left(event, true);
return;
case 'ArrowRight':
case 'ArrowDown':
case 'PageDown':
right(event, true);
return;
case 'Home':
changePage(1, true);
return;
case 'End':
if (pages) {
changePage(pages.length, true);
}
return;
case 'Space':
if (pages && page + 1 <= pages.length) {
changePage(page + 1, true);
}
return;
case 'KeyF':
toggleFullScreen();
return;
default:
break;
}
}
</script> </script>
<svelte:window on:resize={zoomDefault} /> <svelte:window on:resize={zoomDefault} on:keyup|preventDefault={handleShortcuts} />
{#if volume && pages} {#if volume && pages}
<Cropper /> <Cropper />
<Popover placement="bottom-end" trigger="click" triggeredBy="#page-num" class="z-20"> <Popover placement="bottom-end" trigger="click" triggeredBy="#page-num" class="z-20">

View File

@@ -192,3 +192,11 @@ export function keepInBounds() {
transform.y = maxY; transform.y = maxY;
} }
} }
export function toggleFullScreen() {
if (!document.fullscreenElement) {
document.documentElement.requestFullscreen();
} else if (document.exitFullscreen) {
document.exitFullscreen();
}
}