@kcuf/keymap
v0.2.0
Published
Yet another keystroke helper.
Maintainers
Readme
@kcuf/keymap
基础比较
| Package | Version | Size | Download | Star | TS | Demo | Test | | --- | --- | --- | --- | --- | --- | --- | --- | | tinykeys | 3.0.0/2024 | 1.48kB | 41k/Week | 3.8k | ✅ | demo | - | | hotkeys-js | 3.13.7/2024 | 41.2kB | 363k/Week | 6.7k | ✍ | demo | Jest | | keymaster | 1.6.2/2014 | 8.58kB | 22k/Week | 6.5k | DT | | - | | mousetrap | 1.6.5/2019 | 33.9kB | 400k/Week | 11.7k | DT | | Mocha | | shortcutjs | 1.6.0/2017 | 12.9kB | 6/Week | 28 | ✅ | | Jest ★ | | hotkeys | 1.0.0/2014 | 15.1kB | 150/Week | 3 | JS | | |
其中 hotkeys OO 思想过重,用起来非常麻烦,后续不做计较。
功能比较
| - | tinykeys | hotkeys-js | keymaster | mousetrap | shortcutjs | @kcuf/keymap |
| --- | --- | --- | --- | --- | --- | --- |
| 批量绑定 | ✅ 对象 | ✅ 逗号 | ✅ 逗号 | ✅ 数组 | ✅ 对象数组 | ✅ 对象 |
| 支持序列(Combo) | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| 安全解绑 | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| 暂停(pause/resume) | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
| preventDefault | ❌ | return false | return false | return false | options.preventDefault | return 'prevent' |
| stopPropagation | ❌ | return false | return false | return false | ❌ | return 'stop' |
| 触发条件(某些场景下不触发) | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ options.ignore(e: KeyboardEvent) |
| 便捷绑定(? * 等) | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| 代码触发(trigger) | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| 符号 Modifiers(⇧⌥⌃⌘) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
符号
| 符号 | key | code | ~~keyCode~~ |
| --- | --- | --- | --- |
| ⌃ | Control | ControlLeft / ControlRight | 17 |
| ⌥ | Alt | AltLeft / AltRight | 18 |
| ⇧ | Shift | ShiftLeft / ShiftRight | 16 |
| ⌘ | Meta | MetaLeft / MetaRight | 224 |
| ↑ | ArrowUp | ArrowUp | 38 |
| ↓ | ArrowDown | ArrowDown | 40 |
| ← | ArrowLeft | ArrowLeft | 37 |
| → | ArrowRight | ArrowRight | 39 |
| ⏎ / ↵ / ↩ | Enter | Enter | 13 |
| ␣ | Space | Space | 32 |
| ⎋ | Escape | Escape | 27 |
| ⇥ | Tab | Tab | 9 |
| ⇞ | PageUp | PageUp | ? |
| ⇟ | PageDown | PageDown | ? |
| ⌫ | Backspace | Backspace | 8 |
| ⌦ | Delete | Delete | 46 |
FAQ
❓ 能否 stopPropagation 和 preventDefault?
可以。由绑定方法的返回值决定:
'stop'→e.stopPropagation()'prevent'→e.preventDefault()false→e.stopPropagation()+e.preventDefault()- 其他 → 什么都不做
❓能否在回调中拿到事件对象?
不能,不需要,也不安全。
❓ Mac 下 F11 无响应?
系统快捷键权限更高,接管不了。
❓ Ctrl++ 不行?
不行。换 Ctrl+=。
❓ Combo 下使用 +?
可以。比如设置 C + +,可以在按键序列 c → ⇧= → ⇧= 时触发。
