-
Notifications
You must be signed in to change notification settings - Fork 7
/
BoardLayout.vue
63 lines (57 loc) · 1.31 KB
/
BoardLayout.vue
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<script setup lang="ts">
import LayoutLayer from "./LayoutLayer.vue";
import {
alphaLayer,
BoardLayer,
navLayer,
numLayer,
symLayer,
funLayer,
winLayer,
uniLayer,
} from "../boardLayout";
import {
register,
isRegistered,
unregisterAll,
} from "@tauri-apps/plugin-global-shortcut";
import { emit } from "@tauri-apps/api/event";
import { onMounted, onUnmounted, Ref, ref } from "vue";
let layer: Ref<BoardLayer | null> = ref(alphaLayer);
let layerChangeCount = ref(0);
const layerMap: Record<number, BoardLayer> = {
13: alphaLayer,
// 14: qwertyLayer,
15: navLayer,
16: numLayer,
17: symLayer,
18: funLayer,
19: uniLayer,
20: winLayer,
};
if ((window as any).__TAURI__) {
onMounted(async () => {
Object.entries(layerMap).forEach(async (x) => {
const shortcut = `F${x[0]}`;
if (!(await isRegistered(shortcut))) {
register(shortcut, (s) => {
layer.value = x[1];
layerChangeCount.value++;
});
}
});
const toggleShortcut = "F24";
if (!(await isRegistered(toggleShortcut))) {
register(toggleShortcut, (s) => {
emit("toggle");
});
}
});
onUnmounted(async () => {
await unregisterAll();
});
}
</script>
<template>
<LayoutLayer v-if="layer" :layer="layer" :key="layerChangeCount" />
</template>