39 lines
867 B
JavaScript
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
|
|
}
|