Keyboard Events
接口为 KeyboardEvent,有下面 events
- keydown,按下键
- keyup,松开键
- keypress
Attributes
{
ctrlKey: false,
shiftKey: false,
altKey: false,
metaKey: false,
code: '',
key: '',
}
modifier keys
key | Windows | macOS |
---|---|---|
ctrlKey | Ctrl | Control ⌃ |
shiftKey | Shift | Shift ⇧ |
altKey | Alt | Option ⌥ |
metaKey | ⊞ | Command ⌘ |
code, 物理按键名字,不考虑 keyboard layout, locale, modifier keys,即不管按键输出的字符是什么。
key,与 code 相反,表示按键输出的字符。
还有 keyCode, charCode, which 等非标准属性,用得最多的是 keyCode。 jQuery 把它们标准化为 which。
keyCode
问题
测试
code, key, keyCode 用哪个?
用标准属性 code 和 key
快捷键通常用 code
dead key 是一种特别的 modifier key,用来输入注音字符。假设 dead key 是 ‘`‘(不同的 input layout,dead key 不一样),法语字母 à 这样输入:先按下 `,松开后再按下 A。这跟 shift 等 modifier key 不一样,shift 是和其它键同时按下。为何叫这个名字?在过去,当按下 dead key 时没有反馈,这个 key 像 dead 一样。
Keyboard 三个 events 的发生顺序
细分为
- 短按,只按一下。
- 长按,按住一会儿再松开。 keydown, keypress 重复发生,最后是 keyup。
不出预料会存在兼容性问题。