46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { isRegistered, register, unregister, unregisterAll } from '@tauri-apps/plugin-global-shortcut'
|
|
|
|
export default defineNuxtPlugin({
|
|
async setup() {
|
|
const { isTauri, toggleInput, toggleOutput } = useApp()
|
|
const preferences = usePreferences()
|
|
|
|
if (!isTauri.value)
|
|
return
|
|
|
|
await unregisterAll()
|
|
|
|
watch(preferences.toggleInputHotkey, async (shortcut, prevShortcut) => {
|
|
await registerHotkey(shortcut, prevShortcut, toggleInput)
|
|
}, {
|
|
immediate: true,
|
|
})
|
|
|
|
watch(preferences.toggleOutputHotkey, async (shortcut, prevShortcut) => {
|
|
await registerHotkey(shortcut, prevShortcut, toggleOutput)
|
|
}, {
|
|
immediate: true,
|
|
})
|
|
|
|
async function registerHotkey(shortcut: string, prevShortcut: string | undefined, cb: () => void) {
|
|
if (!!prevShortcut && await isRegistered(prevShortcut)) {
|
|
await unregister(prevShortcut)
|
|
}
|
|
|
|
if (!shortcut)
|
|
return
|
|
|
|
if (await isRegistered(shortcut)) {
|
|
await unregister(shortcut)
|
|
}
|
|
|
|
await register(shortcut, ({ state }) => {
|
|
if (state !== 'Released')
|
|
return
|
|
|
|
cb()
|
|
})
|
|
}
|
|
},
|
|
})
|