aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/Player/Keybinds.svelte
blob: 778e58304b54121de8b0b93ddd24a3dd57b64399 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<script lang="ts">
	let {
		frame = $bindable(),
		frameCount,
		fps,
		playing = $bindable(),
		playbackStarted = $bindable()
	}: {
		frame: number;
		frameCount: number;
		fps: number | undefined;
		playing: boolean;
		playbackStarted: number;
	} = $props();
</script>

<svelte:window
	onkeypress={(e) => {
		switch (e.key) {
			case ' ':
				e.preventDefault();
				playing = !playing;
				break;

			// default:
			// 	if (dev) console.debug('Keypress:', e.key);
			// 	break;
		}
	}}
	onkeydown={(e) => {
		switch (e.key) {
			case 'ArrowLeft':
				e.preventDefault();
				frame = Math.max(frame - (e.ctrlKey ? (fps ?? 60) : 1), 0);
				break;
			case 'ArrowRight':
				e.preventDefault();
				frame = Math.min(frame + (e.ctrlKey ? (fps ?? 60) : 1), frameCount);
				break;

			// default:
			// 	if (dev) console.debug('Keydown:', e.key);
			// 	break;
		}
	}}
/>