45 lines
881 B
JavaScript
45 lines
881 B
JavaScript
import mousetrap from 'mousetrap'
|
|
|
|
let eventHub
|
|
|
|
const bindKeys = [
|
|
'shift',
|
|
'mod',
|
|
'mod+a',
|
|
]
|
|
|
|
const bindKey = () => {
|
|
mousetrap.reset()
|
|
for (const key of bindKeys) {
|
|
mousetrap.bind(key, (event, combo) => {
|
|
eventHub.$emit(`key_${key}_down`, { event, combo })
|
|
return false
|
|
}, 'keydown')
|
|
mousetrap.bind(key, (event, combo) => {
|
|
eventHub.$emit(`key_${key}_up`, { event, combo })
|
|
return false
|
|
}, 'keyup')
|
|
}
|
|
}
|
|
|
|
const unbindKey = () => {
|
|
for (const key of bindKeys) {
|
|
mousetrap.unbind(key, 'keydown')
|
|
mousetrap.unbind(key, 'keyup')
|
|
}
|
|
}
|
|
|
|
const handleFocus = () => {
|
|
for (const key of bindKeys) {
|
|
eventHub.$emit(`key_${key}_up`, { combo: key })
|
|
}
|
|
}
|
|
|
|
export default () => {
|
|
eventHub = window.eventHub
|
|
|
|
eventHub.$on('bindKey', bindKey)
|
|
eventHub.$on('unbindKey', unbindKey)
|
|
eventHub.$on('focus', handleFocus)
|
|
}
|