all repos — kōi @ main

Minimalist task manager

src/lib/components/taskShortcuts.svelte.ts (view raw)

 1type Actions = Record<string, () => void>;
 2
 3export const getShortcutActions = (actions: Actions) => {
 4  let isCtrlDown = $state(false);
 5  let isAltDown = $state(false);
 6  let actionKey = $state("");
 7
 8  const onKeyDown = event => {
 9    switch (event.key) {
10      case "Control":
11        isCtrlDown = true;
12        break;
13      case "Alt":
14        isAltDown = true;
15        break;
16      default:
17        if (isCtrlDown && isAltDown) {
18          actionKey = event.key;
19          console.log("ACTION APPLY", actionKey);
20          actions[actionKey]?.();
21        }
22    }
23  };
24
25  const onKeyUp = event => {
26    switch (event.key) {
27      case "Control":
28        isCtrlDown = false;
29        break;
30      case "Alt":
31        isAltDown = false;
32        break;
33    }
34  };
35
36  return { onKeyDown, onKeyUp };
37};