Vue 2.x directive for binding hotkeys to components.
https://dafrok.github.io/v-hotkey
$ npm i v-hotkey
# or
$ yarn add v-hotkey
import Vue from 'vue'
import VueHotkey from 'v-hotkey'
Vue.use(VueHotkey)
<template>
<span v-hotkey="keymap" v-show="show">
Press `ctrl + esc` to toggle me! Hold `enter` to hide me!
</span>
</template>
<script>
export default {
data () {
return {
show: true
}
},
methods: {
toggle () {
this.show = !this.show
},
show () {
this.show = true
},
hide () {
this.show = false
}
},
computed: {
keymap () {
return {
// 'esc+ctrl' is OK.
'ctrl+esc': this.toggle,
'enter': {
keydown: this.hide,
keyup: this.show
}
}
}
}
}
</script>
- keydown (as default)
- keyup
Use one or more of following keys to fire your hotkeys.
- ctrl
- alt
- shift
- command (MacOS)
- windows (Windows)
Add the prevent modifier to the directive to prevent default browser behavior.
<template>
<span v-hotkey.prevent="keymap" v-show="show">
Press `ctrl + esc` to toggle me! Hold `enter` to hide me!
</span>
</template>
Add the stop modifier to the directive to stop event propagation.
<template>
<div v-hotkey.stop="keymap">
<span> Enter characters in editable areas doesn't trigger any hotkeys. </span>
<input>
</div>
</template>
The default key code map is based on US standard keyboard. This ability to provide their own key code alias for developers who using keyboards with different layouts. The alias name must be a single character.
import Vue from 'vue'
import VueHotkey from 'v-hotkey'
Vue.use(VueHotkey, {
'①': 49 // the key code of character '1'
})
<span v-hotkey="keymap"></span>
<script>
export default {
foo () {
console.log('Hooray!')
},
computed: {
keymap () {
return {
'①': foo
}
}
}
}
</script>