Files
Melo/src/renderer/utils/compositions/useKeyDown.js
T

39 lines
867 B
JavaScript

import { onMounted, onBeforeUnmount, ref } from '@renderer/utils/vueTools'
export default name => {
const keyDown = ref(false)
const down = `key_${name}_down`
const up = `key_${name}_up`
const handle_key_down = event => {
if (!keyDown.value) {
// console.log(event)
switch (event.event.target.tagName) {
case 'INPUT':
case 'SELECT':
case 'TEXTAREA':
return
default: if (event.event.target.isContentEditable) return
}
keyDown.value = true
}
}
const handle_key_up = () => {
if (keyDown.value) keyDown.value = false
}
onMounted(() => {
window.eventHub.on(down, handle_key_down)
window.eventHub.on(up, handle_key_up)
})
onBeforeUnmount(() => {
window.eventHub.off(down, handle_key_down)
window.eventHub.off(up, handle_key_up)
})
return keyDown
}