UI 事件 KeyboardEvent key 值

W3C 推荐标准,

关于本文档的更多详细信息
此版本:
https://www.w3.org/TR/2025/REC-uievents-key-20250422/
最新发布版本:
https://www.w3.org/TR/uievents-key/
编辑者草案:
https://w3c.github.io/uievents-key/
历史:
https://www.w3.org/standards/history/uievents-key/
反馈:
GitHub
编辑者:
(Google)
(受邀专家)
实现报告:
https://w3c.github.io/uievents-key/impl-report.html
勘误:
存在勘误.

另见翻译.


摘要

本规范定义了必须用于 KeyboardEvent 的 key 属性的 key 属性值,该属性作为 UI Events 规范 [UIEvents] 的一部分而定义。

本文档状态

本节描述本文档在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版可在 W3C 技术 报告索引中找到,地址为 https://www.w3.org/TR/。

本文档由 Web Applications Working Group 使用 推荐标准轨道 作为推荐标准发布。

W3C 建议将本规范作为 Web 的标准广泛部署。

W3C 推荐标准是一份规范,它在经过广泛的共识 建立之后,得到 W3C 及其成员的认可,并且 工作组成员承诺为实现提供 免版税许可。

本文档由一个在 W3C 专利 政策下运作的工作组产出。 W3C 维护着一个 任何专利 披露的公开列表, 这些披露与该组的交付成果有关;该页面还包含 披露专利的说明。实际 知晓某项专利,且个人认为该专利包含 必要权利要求的个人, 必须按照 W3C 专利政策第 6 节披露相关信息。

本文档受 2023 年 11 月 03 日 W3C 流程文档约束。

1. 引言

本文档规定了必须用于 KeyboardEvent 的 key 属性中,用来编码按键 含义的一组有效 key 属性值。请注意,某个特定按键的 key 值会因用户当前的区域设置而异。对于仅基于按键在键盘上的 物理位置且不随区域设置变化的值,请参见 [UIEvents-Code] 中描述的 code。

1.1. 样式约定

本规范使用以下约定:

2. 键盘事件 key 属性值

key 属性 值被定义为一个 DOMString,其中 包含以下之一:

key 属性 值必须始终包含一个属于这 两类之一的值(即使该值是 "Unidentified")。

键盘上的多个按键生成相同的 key 属性值是可接受的。例如,在 EN-US 键盘布局上,数字小键盘上的按键 (例如小键盘 1 键)会生成与其非小键盘对应键 (例如键盘主体部分的 1 键)相同的 key 属性 值。KeyboardEvent 的 location 属性可用于确定某个按键是否 来自数字小键盘。

2.1. Unicode 值

几乎每个 Unicode 字符都可以用作有效的 key 属性值,但有一小组 Unicode 字符不得使用。 我们引入 key 字符串的概念,以识别 适合用作 key 属性值的一组 Unicode 字符串。

key 字符串是一个字符串, 包含 0 个或 1 个非控制字符(“基”字符),后跟 0 个或多个 组合 字符。该字符串必须 采用 [UAX15] 中描述的规范化形式 C(NFC)。

非控制 字符是指除属于“Other, Control”(“Cc”)通用类别的字符之外的 任何有效 Unicode 字符。

组合 字符是指位于 “Mark, Spacing Combining”(“Mc”)通用类别中,或具有非零 组合类的任何有效 Unicode 字符。

以下是一些简单 key 字符串的示例:
除 Tab 和 Enter(参见 § 2.1.1 控制字符)之外, 所有非控制空白 Unicode 字符均被视为 有效的 key 字符串。
以下是一些包含组合 字符的 key 字符串示例:

2.1.1. 控制字符

Unicode “Cc”通用类别中的少量字符被支持为 具名 key 属性值。这些具名值 如下:

2.2. 选择 key 属性值

字形修饰键 是以下任意修饰键:Shift、CapsLock 或 AltGr。

2.2.1. 选择适当的 key 属性 值

要选择适当的 key 属性值以 存储到 KeyboardEvent 的 key 属性中,运行以下步骤:
  1. 令 key 为一个 DOMString,初始设置为 "Unidentified"。

  2. 如果存在适合此按键事件的 具名 key 属性值,则

    1. 将 key 设置为该 具名 key 属性值。

  3. 否则,如果该按键事件生成了一个有效的 key 字符串,则

    1. 将 key 设置为该 key 字符串值。

  4. 否则,如果该按键事件具有除字形修饰键以外的任何修饰键,则

    1. 将 key 设置为这样一个 key 字符串:如果此事件在移除所有修饰键 (除字形修饰键之外)的情况下被键入, 将会生成该字符串。

  5. 返回 key 作为此按键事件的 key 属性值。

在标准美式 键盘上,标记为 Q 的按键的 key 属性值是 "q"(如果同时按住 Shift 修饰 键,则为 "Q")。

在标准美式 键盘上,Control + Q 的 key 属性值是 "q"。

在采用右手 Dvorak 键映射的美式键盘上,标记为 Q 的按键的 key 属性值是 "5"(使用 Shift 修饰键时为 "%")。

在与前一示例相同的 美式 Dvorak 键盘布局上,Control + Q 的 key 属性值是 "5"。

在 Bolnagri 键盘布局上,标记为 Q 的 按键的 key 属性值是一个包含单个 Unicode 字符 U+200C(ZWNJ 或零宽不连字空格)的字符串。

在采用标准法语映射的 法式 PC 键盘上,^ 键充当组合抑扬符号的 死 键。 此键盘事件的 key 属性 值是 "Dead"。

同样在采用标准法语映射的 法式键盘上,é 键 (对应于美式键盘上的 2 键)的 key 属性值是 "é"(U+00E9)。

在采用标准韩语映射的 韩式 PC 键盘上,Ha/En 键的主要 功能是在韩文和英文输入之间切换。该键作为 具名 key 属性值有一个条目,即 "HangulMode",因此应将其用作 key 属性 值。

3. 具名 key 属性值

具名 key 属性值是本规范本节任一表的 key 属性值列中给出的任何值。

此处定义的具名 key 属性值部分基于 Java Platform, Standard Edition 6 API Specification 的 java.awt.event.KeyEvent 接口中的 keycode 集合 [KeyEventJava], 以及 Microsoft .NET Framework 4.0 Class Library 的 System.Windows.Forms.Keys 键枚举 [KeysNet]。本规范中的其他信息 来自 Microsoft 的 WM_APPCOMMAND 消息 [WmAppCommand],以及本文档中注明的 其他更专门的规范。

KeyboardEvent 接口的一致性实现必须支持 这一组用于 key 属性的值, 尽管并非所有值都可能在所有平台或设备上可用。

本规范的未来版本可能会包含此处未列出的 key 值,这些值在本规范发布后已变得常见。

注:虽然已尽一切努力使此值列表尽可能完整, 但随着新的输入设备被引入,仍需定期定义新的值。 不应允许用户代理定义自己的具名 key 属性值 (这些值不太可能在多个用户代理之间保持一致),而应提交 bug, 以便更新本规范。

3.1. 特殊键

无法识别某个按键的实现必须使用 "Unidentified" 作为 key 属性值。

key 属性值 必需 典型用途(非规范性)
"Unidentified" 是 当实现由于硬件、 平台或软件约束而无法识别其他按键值时,使用此按键值。

一致性实现只能在实现没有办法检测按键值时, 才将 "Unidentified" 用作按键值。 对所有键盘事件仅公开此值不得表示其为一致性 实现。

3.2. 修饰键

key 属性值 必需 典型用途(非规范性)
"Alt" 是 Alt(Alternative)键。
此键启用备用 修饰功能,用于解释同时发生或随后发生的键盘输入。
此按键值 也用于 Apple Option 键。
"AltGraph" 是 Alternate Graphics(AltGr 或 AltGraph)键。此键用于启用 ISO Level 3 shift 修饰键 (标准 Shift 键是 level 2 修饰键)。 参见 [ISO9995-1]。
"CapsLock" 是 Caps Lock(Capital)键。切换大写字符锁定功能, 用于解释后续键盘输入事件。
"Control" 是 Control 或 Ctrl 键,用于启用 控制修饰功能,以解释同时发生或随后发生的键盘输入。
"Fn" 否 Function switch Fn 键。
同时激活此键 和另一个键会将该键的值更改为备用字符或功能。 此键通常直接由键盘硬件处理,通常不会生成 key 事件。
"FnLock" 否 Function-Lock(FnLock 或 F-Lock) 键。激活此键会切换键盘模式,以将某些按键的值更改为 备用字符或功能。 此键通常直接由键盘硬件处理,通常不会生成 key 事件。
"Meta" 是 Meta 键,用于启用 meta 修饰功能,以解释 同时发生或随后发生的键盘输入。此按键值用于 Windows Logo 键 以及 Apple Command 或 ⌘ 键。
"NumLock" 是 NumLock 或 Number Lock 键,用于切换数字小键盘模式功能, 以解释后续键盘输入。
"ScrollLock" 是 Scroll Lock 键,用于在滚动模式和光标移动 模式之间切换。
"Shift" 是 Shift 键,用于启用 shift 修饰功能,以解释 同时发生或随后发生的键盘输入。
"Symbol" 否 Symbol 修饰键(用于某些虚拟键盘)。
"SymbolLock" 否 Symbol Lock 键。

旧版修饰键:

key 属性值 必需 典型用途(非规范性)
"Hyper" 否 Hyper 键。
"Super" 否 Super 键。

3.3. 空白键

key 属性值 必需 典型用途(非规范性)
"Enter" 是 Enter 或 ↵ 键,用于激活当前 选择或接受当前输入。
此按键值也用于 Return(Macintosh 数字小键盘)键。
此按键值也用于 Android KEYCODE_DPAD_CENTER。
"Tab" 是 Horizontal Tabulation Tab 键。

space 或 spacebar 键被编码为 " "。

3.4. 导航键

key 属性值 必需 典型用途(非规范性)
"ArrowDown" 是 向下箭头键,用于向下导航或遍历。(KEYCODE_DPAD_DOWN)
"ArrowLeft" 是 向左箭头键,用于向左导航或遍历。(KEYCODE_DPAD_LEFT)
"ArrowRight" 是 向右箭头键,用于向右导航或遍历。(KEYCODE_DPAD_RIGHT)
"ArrowUp" 是 向上箭头键,用于向上导航或遍历。(KEYCODE_DPAD_UP)
"End" 是 End 键,与键盘输入一起使用,用于转到内容末尾(KEYCODE_MOVE_END)。
"Home" 是 Home 键,与键盘输入一起使用,用于转到内容开头(KEYCODE_MOVE_HOME)。
对于移动电话的 Home 键(它转到电话主屏幕),使用 "GoHome"。
"PageDown" 是 Page Down 键,用于向下滚动或显示下一页内容。
"PageUp" 是 Page Up 键,用于向上滚动或显示上一页内容。

3.5. 编辑键

key 属性值 必需 典型用途(非规范性)
"Backspace" 是 Backspace 键。此按键值也用于 MacOS 键盘上标记为 Delete 的键。
"Clear" 否 移除当前选中的输入。
"Copy" 否 复制当前选区。(APPCOMMAND_COPY)
"CrSel" 否 Cursor Select(Crsel)键。
"Cut" 否 剪切当前选区。(APPCOMMAND_CUT)
"Delete" 是 Delete(Del)键。当使用 Fn 键修饰时,此按键值也用于 MacOS 键盘上标记为 Delete 的键。
"EraseEof" 否 Erase to End of Field 键。此键删除从当前光标位置 到当前字段末尾的所有字符。
"ExSel" 否 Extend Selection(Exsel)键。
"Insert" 是 Insert(Ins)键,用于在插入和覆盖输入文本模式之间切换。(KEYCODE_INSERT)
"Paste" 否 Paste 键。(APPCOMMAND_PASTE)
"Redo" 否 重做上一个动作。(APPCOMMAND_REDO)
"Undo" 否 撤销上一个动作。(APPCOMMAND_UNDO)

3.6. UI 键

key 属性值 必需 典型用途(非规范性)
"Accept" 否 Accept(Commit、OK)键。接受当前选项或输入法序列转换。
"Again" 否 Again 键,用于重做或重复某个动作。
"Attn" 否 Attention(Attn)键。
"Cancel" 否 Cancel 键。
"ContextMenu" 是 显示应用程序的上下文菜单。此键通常位于右 Meta 键和右 Control 键之间。
"Escape" 是 Esc 键。此键最初用于发起转义 序列,但现在更通常用于退出或“逃离”当前上下文,例如 关闭对话框 或退出全屏模式。
"Execute" 否 Execute 键。
"Find" 否 打开查找对话框。(APPCOMMAND_FIND)
"Help" 是 打开帮助对话框或切换帮助信息的显示。(APPCOMMAND_HELP, KEYCODE_HELP)
"Pause" 是 暂停当前状态或应用程序(视情况而定)。

不要将此值用于媒体控制器上的 Pause 按钮。请改用 "MediaPause"。

"Play" 否 播放或恢复当前状态或应用程序(视情况而定)。

不要将此值用于媒体控制器上的 Play 按钮。请改用 "MediaPlay"。

"Props" 否 properties(Props)键。
"Select" 否 Select 键。
"ZoomIn" 否 ZoomIn 键。(KEYCODE_ZOOM_IN)
"ZoomOut" 否 ZoomOut 键。(KEYCODE_ZOOM_OUT)

3.7. 设备键

key 属性值 必需 典型用途(非规范性)
"BrightnessDown" 否 Brightness Down 键。通常控制显示亮度。(KEYCODE_BRIGHTNESS_DOWN)
"BrightnessUp" 否 Brightness Up 键。通常控制显示亮度。(KEYCODE_BRIGHTNESS_UP)
"Eject" 否 切换可移动媒体的弹出(打开)和插入(关闭)状态。(KEYCODE_MEDIA_EJECT)
"LogOff" 否 LogOff 键。
"Power" 否 切换电源状态。(KEYCODE_POWER)

注:某些设备可能不会向操作 环境公开此键。

"PowerOff" 否 PowerOff 键。有时称为 PowerDown。
"PrintScreen" 是 Print Screen 或 SnapShot 键,用于 发起屏幕打印功能。
"Hibernate" 否 Hibernate 键。此键将计算机的当前状态保存到磁盘, 以便恢复。随后计算机将关机。
"Standby" 否 Standby 键。此键关闭显示器并将计算机置于低功耗模式, 而不是完全关机。 它有时标记为 Suspend 或 Sleep 键。(KEYCODE_SLEEP)
"WakeUp" 否 WakeUp 键。(KEYCODE_WAKEUP)

3.8. IME 和组合键

key 属性值 必需 典型用途(非规范性)
"AllCandidates" 否 All Candidates 键,用于启动多候选模式。
"Alphanumeric" 否 Alphanumeric 键。
"CodeInput" 否 Code Input 键,用于启动 Code Input 模式,以允许通过字符的 码点输入字符。
"Compose" 否 Compose 键,在 X Window System 上也称为 Multi_key。此键的作用方式 类似于死键,会触发一种模式,在该模式中,后续按键会被组合以 产生不同的字符。
"Convert" 否 Convert 键,用于转换当前输入法序列。
"Dead" 否 死键组合键。它可以是任何键盘布局中的任何组合键。例如,在 PC/AT 法式键盘上,使用法语映射且不激活任何修饰键时,这是 U+0302 COMBINING CIRCUMFLEX ACCENT 这个键值。在另一种布局中 这可能是不同的 Unicode 组合键。
对于需要区分 具体组合字符的应用程序,相关的 compositionupdate 事件的 data 属性提供 具体的键值。
"FinalMode" 否 某些亚洲键盘上使用的 Final Mode Final 键,用于为 IME 启用 final mode。
"GroupFirst" 否 切换到第一个字符组。(ISO/IEC 9995)
"GroupLast" 否 切换到最后一个字符组。(ISO/IEC 9995)
"GroupNext" 否 切换到下一个字符组。(ISO/IEC 9995)
"GroupPrevious" 否 切换到上一个字符组。(ISO/IEC 9995)
"ModeChange" 否 Mode Change 键,用于在 IME 的输入模式之间切换或循环。
"NextCandidate" 否 Next Candidate 功能键。
"NonConvert" 否 NonConvert(“Don’t Convert”)键,用于在 IME 中接受当前输入法序列而不进行转换。
"PreviousCandidate" 否 Previous Candidate 功能键。
"Process" 否 Process 键。
"SingleCandidate" 否 Single Candidate 功能键。

韩语键盘专用键:

key 属性值 必需 典型用途(非规范性)
"HangulMode" 否 Hangul(韩语字符)Mode 键,用于在韩文和英文模式之间切换。
"HanjaMode" 否 Hanja(韩语字符)Mode 键。
"JunjaMode" 否 Junja(韩语字符)Mode 键。

日语键盘专用键:

key 属性值 必需 典型用途(非规范性)
"Eisu" 否 Eisu 键。此键可能关闭 IME,但其用途由当前 IME 定义。(KEYCODE_EISU)
"Hankaku" 否 (半角)字符键。
"Hiragana" 否 Hiragana(日语假名字符)键。
"HiraganaKatakana" 否 Hiragana/Katakana 切换键。(KEYCODE_KATAKANA_HIRAGANA)
"KanaMode" 否 Kana Mode(Kana Lock)键。此键用于进入平假名模式(通常从罗马字 模式进入)。
"KanjiMode" 否 Kanji(日语中对源自中文的表意字符的称呼)Mode 键。此键通常用于 切换到平假名键盘,以便 将输入转换为汉字。(KEYCODE_KANA)
"Katakana" 否 Katakana(日语假名字符)键。
"Romaji" 否 罗马字符功能键。
"Zenkaku" 否 Zenkaku(全角)字符键。
"ZenkakuHankaku" 否 Zenkaku/Hankaku(全角/半角)切换键。(KEYCODE_ZENKAKU_HANKAKU)

3.9. 通用功能键

这些通用功能键的确切数量因平台而异, 此处仅显式定义了前几个。额外的 功能键名称通过递增功能键名称末尾的十进制索引而 隐式定义。因此,"F24" 和 "Soft8" 都是有效的键值。

key 属性值 必需 典型用途(非规范性)
"F1" 是 F1 键,索引为 1 的通用功能键。
"F2" 是 F2 键,索引为 2 的通用功能键。
"F3" 是 F3 键,索引为 3 的通用功能键。
"F4" 是 F4 键,索引为 4 的通用功能键。
"F5" 是 F5 键,索引为 5 的通用功能键。
"F6" 是 F6 键,索引为 6 的通用功能键。
"F7" 是 F7 键,索引为 7 的通用功能键。
"F8" 是 F8 键,索引为 8 的通用功能键。
"F9" 是 F9 键,索引为 9 的通用功能键。
"F10" 是 F10 键,索引为 10 的通用功能键。
"F11" 是 F11 键,索引为 11 的通用功能键。
"F12" 是 F12 键,索引为 12 的通用功能键。
"Soft1" 否 通用虚拟功能键,索引为 1。
"Soft2" 否 通用虚拟功能键,索引为 2。
"Soft3" 否 通用虚拟功能键,索引为 3。
"Soft4" 否 通用虚拟功能键,索引为 4。

3.10. 多媒体键

这些是在“多媒体”键盘上出现的额外按键。

key 属性值 必需 典型用途(非规范性)
"ChannelDown" 否 选择下一个(按数字或逻辑顺序)较低的频道。(APPCOMMAND_MEDIA_CHANNEL_DOWN, KEYCODE_CHANNEL_DOWN)
"ChannelUp" 否 选择下一个(按数字或逻辑顺序)较高的频道。(APPCOMMAND_MEDIA_CHANNEL_UP, KEYCODE_CHANNEL_UP)
"Close" 否 关闭当前文档或消息(注:这不会关闭应用程序)。(APPCOMMAND_CLOSE)
"MailForward" 否 打开编辑器以转发当前消息。(APPCOMMAND_FORWARD_MAIL)
"MailReply" 否 打开编辑器以回复当前消息。(APPCOMMAND_REPLY_TO_MAIL)
"MailSend" 否 发送当前消息。(APPCOMMAND_SEND_MAIL)
"MediaClose" 否 关闭当前媒体,例如关闭 CD 或 DVD 托盘。(KEYCODE_MEDIA_CLOSE)
"MediaFastForward" 否 发起或继续以快于正常速度的向前播放,或者在已快进时 提高速度。(APPCOMMAND_MEDIA_FAST_FORWARD, KEYCODE_MEDIA_FAST_FORWARD)
"MediaPause" 否 暂停当前正在播放的媒体。(APPCOMMAND_MEDIA_PAUSE, KEYCODE_MEDIA_PAUSE)

媒体控制器设备应将此值用于其暂停键,而不是 "Pause"。

"MediaPlay" 否 如果当前未以正常速度播放,则发起或继续以正常速度播放媒体。 (APPCOMMAND_MEDIA_PLAY, KEYCODE_MEDIA_PLAY)
"MediaPlayPause" 否 在播放和暂停状态之间切换媒体。(APPCOMMAND_MEDIA_PLAY_PAUSE, KEYCODE_MEDIA_PLAY_PAUSE)
"MediaRecord" 否 发起或恢复当前选定媒体的录制。(APPCOMMAND_MEDIA_RECORD, KEYCODE_MEDIA_RECORD)
"MediaRewind" 否 发起或继续以快于正常速度的反向播放,或者在已倒带时 提高速度。(APPCOMMAND_MEDIA_REWIND, KEYCODE_MEDIA_REWIND)
"MediaStop" 否 停止媒体播放、暂停、快进、倒带或录制(如果尚未停止)。(APPCOMMAND_MEDIA_STOP, KEYCODE_MEDIA_STOP)
"MediaTrackNext" 否 跳转到下一个媒体或节目轨道。(APPCOMMAND_MEDIA_NEXTTRACK, KEYCODE_MEDIA_NEXT)
"MediaTrackPrevious" 否 跳转到上一个媒体或节目轨道。(APPCOMMAND_MEDIA_PREVIOUSTRACK, KEYCODE_MEDIA_PREVIOUS)
"New" 否 打开新文档或消息。(APPCOMMAND_NEW)
"Open" 否 打开现有文档或消息。(APPCOMMAND_OPEN)
"Print" 否 打印当前文档或消息。(APPCOMMAND_PRINT)
"Save" 否 保存当前文档或消息。(APPCOMMAND_SAVE)
"SpellCheck" 否 对当前文档或选区进行拼写检查。(APPCOMMAND_SPELL_CHECK)

3.11. 多媒体数字小键盘键

普通的 0 ... 9 数字小键盘键 被编码为 "0" ... "9",但某些 多媒体小键盘具有从 1 ... 12 编号的按钮。 在这些情况下,10 键通常标记为 10 /0。

注:如果受支持,10 或 10 /0 键必须被分配一个 key 值 "0"。

key 属性值 必需 典型用途(非规范性)
"Key11" 否 在具有从 1 ... 12 按钮的媒体数字小键盘上找到的 11 键。
"Key12" 否 在具有从 1 ... 12 按钮的媒体数字小键盘上找到的 12 键。

3.12. 音频键

与音频相关的多媒体键。

key 属性值 必需 典型用途(非规范性)
"AudioBalanceLeft" 否 向左调整音频平衡。(VK_AUDIO_BALANCE_LEFT)
"AudioBalanceRight" 否 向右调整音频平衡。(VK_AUDIO_BALANCE_RIGHT)
"AudioBassBoostDown" 否 降低音频低音增强,或向下循环低音增强状态。(APPCOMMAND_BASS_DOWN, VK_BASS_BOOST_DOWN)
"AudioBassBoostToggle" 否 切换低音增强开/关。(APPCOMMAND_BASS_BOOST)
"AudioBassBoostUp" 否 提高音频低音增强,或向上循环低音增强状态。(APPCOMMAND_BASS_UP, VK_BASS_BOOST_UP)
"AudioFaderFront" 否 向前方调整音频 fader。(VK_FADER_FRONT)
"AudioFaderRear" 否 向后方调整音频 fader。(VK_FADER_REAR)
"AudioSurroundModeNext" 否 将环绕声音频模式前进到下一个可用模式。(VK_SURROUND_MODE_NEXT)
"AudioTrebleDown" 否 降低高音。(APPCOMMAND_TREBLE_DOWN)
"AudioTrebleUp" 否 提高高音。(APPCOMMAND_TREBLE_UP)
"AudioVolumeDown" 否 降低音频音量。(APPCOMMAND_VOLUME_DOWN, KEYCODE_VOLUME_DOWN)
"AudioVolumeUp" 否 提高音频音量。(APPCOMMAND_VOLUME_UP, KEYCODE_VOLUME_UP)
"AudioVolumeMute" 否 在静音状态和先前音量级别之间切换。(APPCOMMAND_VOLUME_MUTE, KEYCODE_VOLUME_MUTE)
"MicrophoneToggle" 否 切换麦克风开/关。(APPCOMMAND_MIC_ON_OFF_TOGGLE)
"MicrophoneVolumeDown" 否 降低麦克风音量。(APPCOMMAND_MICROPHONE_VOLUME_DOWN)
"MicrophoneVolumeUp" 否 提高麦克风音量。(APPCOMMAND_MICROPHONE_VOLUME_UP)
"MicrophoneVolumeMute" 否 将麦克风静音。(APPCOMMAND_MICROPHONE_VOLUME_MUTE, KEYCODE_MUTE)

3.13. 语音键

与语音识别相关的多媒体键。

key 属性值 必需 典型用途(非规范性)
"SpeechCorrectionList" 否 当单词被错误识别时显示更正列表。(APPCOMMAND_CORRECTION_LIST)
"SpeechInputToggle" 否 在听写模式和命令/控制模式之间切换。(APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE)

3.14. 应用程序键

Application Keys 是被分配用于启动特定应用程序的特殊键。 可通过将 "Launch" 与应用程序名称连接来定义额外的应用程序键名称。

key 属性值 必需 典型用途(非规范性)
"LaunchApplication1" 否 第一个通用 "LaunchApplication" 键。这通常与启动 "My Computer" 相关联,并且按键上可能有计算机符号。(APPCOMMAND_LAUNCH_APP1)
"LaunchApplication2" 否 第二个通用 "LaunchApplication" 键。这通常与启动 "Calculator" 相关联,并且按键上可能有计算器符号。(APPCOMMAND_LAUNCH_APP2, KEYCODE_CALCULATOR)
"LaunchCalendar" 否 "Calendar" 键。(KEYCODE_CALENDAR)
"LaunchContacts" 否 "Contacts" 键。(KEYCODE_CONTACTS)
"LaunchMail" 否 "Mail" 键。(APPCOMMAND_LAUNCH_MAIL)
"LaunchMediaPlayer" 否 "Media Player" 键。(APPCOMMAND_LAUNCH_MEDIA_SELECT)
"LaunchMusicPlayer" 否 "Music Player" 键。
"LaunchPhone" 否 "Phone" 键。
"LaunchScreenSaver" 否 "Screen Saver" 键。
"LaunchSpreadsheet" 否 "Spreadsheet" 键。
"LaunchWebBrowser" 否 "Web Browser" 键。
"LaunchWebCam" 否 "WebCam" 键。
"LaunchWordProcessor" 否 "Word Processor" 键。

3.15. 浏览器键

key 属性值 必需 典型用途(非规范性)
"BrowserBack" 否 导航到当前历史记录中的上一个内容或页面。(APPCOMMAND_BROWSER_BACKWARD)
"BrowserFavorites" 否 打开浏览器收藏夹列表。(APPCOMMAND_BROWSER_FAVORITES)
"BrowserForward" 否 导航到当前历史记录中的下一个内容或页面。(APPCOMMAND_BROWSER_FORWARD)
"BrowserHome" 否 转到用户首选的主页。(APPCOMMAND_BROWSER_HOME)
"BrowserRefresh" 否 刷新当前页面或内容。(APPCOMMAND_BROWSER_REFRESH)
"BrowserSearch" 否 调出用户首选的搜索页。(APPCOMMAND_BROWSER_SEARCH)
"BrowserStop" 否 停止加载当前页面或内容。(APPCOMMAND_BROWSER_STOP)

3.16. 移动电话键

key 属性值 必需 典型用途(非规范性)
"AppSwitch" 否 Application switch 键,它提供最近应用列表以便在应用之间切换。(KEYCODE_APP_SWITCH)
"Call" 否 Call 键。(KEYCODE_CALL)
"Camera" 否 Camera 键。(KEYCODE_CAMERA)
"CameraFocus" 否 Camera focus 键。(KEYCODE_FOCUS)
"EndCall" 否 End Call 键。(KEYCODE_ENDCALL)
"GoBack" 否 Back 键。(KEYCODE_BACK)
"GoHome" 否 Home 键,它转到电话主屏幕。(KEYCODE_HOME)
"HeadsetHook" 否 Headset Hook 键。(KEYCODE_HEADSETHOOK)
"LastNumberRedial" 否 Last Number Redial 键。
"Notification" 否 Notification 键。(KEYCODE_NOTIFICATION)
"MannerMode" 否 在情景模式状态之间切换:静音、振动、响铃,……(KEYCODE_MANNER_MODE)
"VoiceDial" 否 Voice Dial 键。

3.17. 电视键

key 属性值 必需 典型用途(非规范性)
"TV" 否 切换到观看电视。(KEYCODE_TV)
"TV3DMode" 否 TV 3D Mode。(KEYCODE_3D_MODE)
"TVAntennaCable" 否 在天线和有线输入之间切换。(KEYCODE_TV_ANTENNA_CABLE)
"TVAudioDescription" 否 音频描述。(KEYCODE_TV_AUDIO_DESCRIPTION)
"TVAudioDescriptionMixDown" 否 降低音频描述混合音量。(KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN)
"TVAudioDescriptionMixUp" 否 提高音频描述混合音量。(KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP)
"TVContentsMenu" 否 内容菜单。(KEYCODE_TV_CONTENTS_MENU)
"TVDataService" 否 内容菜单。(KEYCODE_TV_DATA_SERVICE)
"TVInput" 否 切换外部电视上的输入模式。(KEYCODE_TV_INPUT)
"TVInputComponent1" 否 切换到分量输入 #1。(KEYCODE_TV_INPUT_COMPONENT_1)
"TVInputComponent2" 否 切换到分量输入 #2。(KEYCODE_TV_INPUT_COMPONENT_2)
"TVInputComposite1" 否 切换到复合输入 #1。(KEYCODE_TV_INPUT_COMPOSITE_1)
"TVInputComposite2" 否 切换到复合输入 #2。(KEYCODE_TV_INPUT_COMPOSITE_2)
"TVInputHDMI1" 否 切换到 HDMI 输入 #1。(KEYCODE_TV_INPUT_HDMI_1)
"TVInputHDMI2" 否 切换到 HDMI 输入 #2。(KEYCODE_TV_INPUT_HDMI_2)
"TVInputHDMI3" 否 切换到 HDMI 输入 #3。(KEYCODE_TV_INPUT_HDMI_3)
"TVInputHDMI4" 否 切换到 HDMI 输入 #4。(KEYCODE_TV_INPUT_HDMI_4)
"TVInputVGA1" 否 切换到 VGA 输入 #1。(KEYCODE_TV_INPUT_VGA_1)
"TVMediaContext" 否 媒体上下文菜单。(KEYCODE_TV_MEDIA_CONTEXT_MENU)
"TVNetwork" 否 切换网络。(KEYCODE_TV_NETWORK)
"TVNumberEntry" 否 数字输入。(KEYCODE_TV_NUMBER_ENTRY)
"TVPower" 否 切换外部电视的电源。(KEYCODE_TV_POWER)
"TVRadioService" 否 广播。(KEYCODE_TV_RADIO_SERVICE)
"TVSatellite" 否 卫星。(KEYCODE_TV_SATELLITE)
"TVSatelliteBS" 否 广播卫星。(KEYCODE_TV_SATELLITE_BS)
"TVSatelliteCS" 否 通信卫星。(KEYCODE_TV_SATELLITE_CS)
"TVSatelliteToggle" 否 在可用卫星之间切换。(KEYCODE_TV_SATELLITE_SERVICE)
"TVTerrestrialAnalog" 否 模拟地面电视。(KEYCODE_TV_TERRESTRIAL_ANALOG)
"TVTerrestrialDigital" 否 数字地面电视。(KEYCODE_TV_TERRESTRIAL_DIGITAL)
"TVTimer" 否 定时器编程。(KEYCODE_TV_TIMER_PROGRAMMING)

3.18. 媒体控制器键

媒体控制器(例如电视、音频系统和机顶盒遥控器)的 key 属性 值部分源自 消费电子技术规范:

key 属性值 必需 典型用途(非规范性)
"AVRInput" 否 切换外部 AVR(音频/视频接收器)上的输入模式。(KEYCODE_AVR_INPUT)
"AVRPower" 否 切换外部 AVR(音频/视频接收器)的电源。(KEYCODE_AVR_POWER)
"ColorF0Red" 否 通用彩色编码媒体功能键,索引为 0(红色)。(VK_COLORED_KEY_0, KEYCODE_PROG_RED)
"ColorF1Green" 否 通用彩色编码媒体功能键,索引为 1(绿色)。(VK_COLORED_KEY_1, KEYCODE_PROG_GREEN)
"ColorF2Yellow" 否 通用彩色编码媒体功能键,索引为 2(黄色)。(VK_COLORED_KEY_2, KEYCODE_PROG_YELLOW)
"ColorF3Blue" 否 通用彩色编码媒体功能键,索引为 3(蓝色)。(VK_COLORED_KEY_3, KEYCODE_PROG_BLUE)
"ColorF4Grey" 否 通用彩色编码媒体功能键,索引为 4(灰色)。(VK_COLORED_KEY_4)
"ColorF5Brown" 否 通用彩色编码媒体功能键,索引为 5(棕色)。(VK_COLORED_KEY_5)
"ClosedCaptionToggle" 否 切换隐藏字幕的显示。(VK_CC, KEYCODE_CAPTIONS)
"Dimmer" 否 通过在状态之间切换或循环来调整设备亮度。(VK_DIMMER)
"DisplaySwap" 否 交换视频源。(VK_DISPLAY_SWAP)
"DVR" 否 选择数字录像机。(KEYCODE_DVR)
"Exit" 否 退出当前应用程序。(VK_EXIT)
"FavoriteClear0" 否 清除存储为收藏 0 的节目或内容。(VK_CLEAR_FAVORITE_0)
"FavoriteClear1" 否 清除存储为收藏 1 的节目或内容。(VK_CLEAR_FAVORITE_1)
"FavoriteClear2" 否 清除存储为收藏 2 的节目或内容。(VK_CLEAR_FAVORITE_2)
"FavoriteClear3" 否 清除存储为收藏 3 的节目或内容。(VK_CLEAR_FAVORITE_3)
"FavoriteRecall0" 否 选择(调出)存储为收藏 0 的节目或内容。(VK_RECALL_FAVORITE_0)
"FavoriteRecall1" 否 选择(调出)存储为收藏 1 的节目或内容。(VK_RECALL_FAVORITE_1)
"FavoriteRecall2" 否 选择(调出)存储为收藏 2 的节目或内容。(VK_RECALL_FAVORITE_2)
"FavoriteRecall3" 否 选择(调出)存储为收藏 3 的节目或内容。(VK_RECALL_FAVORITE_3)
"FavoriteStore0" 否 将当前节目或内容存储为收藏 0。(VK_STORE_FAVORITE_0)
"FavoriteStore1" 否 将当前节目或内容存储为收藏 1。(VK_STORE_FAVORITE_1)
"FavoriteStore2" 否 将当前节目或内容存储为收藏 2。(VK_STORE_FAVORITE_2)
"FavoriteStore3" 否 将当前节目或内容存储为收藏 3。(VK_STORE_FAVORITE_3)
"Guide" 否 切换节目或内容指南的显示。(VK_GUIDE, KEYCODE_GUIDE)
"GuideNextDay" 否 如果指南处于活动状态并已显示,则显示下一天的内容。(VK_NEXT_DAY)
"GuidePreviousDay" 否 如果指南处于活动状态并已显示,则显示前一天的内容。(VK_PREV_DAY)
"Info" 否 切换关于当前选中上下文或媒体的信息显示。(VK_INFO, KEYCODE_INFO)
"InstantReplay" 否 切换即时重放。(VK_INSTANT_REPLAY)
"Link" 否 在可用且适当时启动链接内容。(VK_LINK)
"ListProgram" 否 列出当前节目。(VK_LIST)
"LiveContent" 否 切换当前可用直播内容或节目的列表显示。(VK_LIVE)
"Lock" 否 锁定或解锁当前内容或节目。(VK_LOCK)
"MediaApps" 否 显示媒体应用程序列表:音频/视频播放器和图像查看器。(VK_APPS)

不要将此键值与 Windows 的 VK_APPS / VK_CONTEXT_MENU 键混淆,后者编码为 "ContextMenu"。

"MediaAudioTrack" 否 Audio track 键。(KEYCODE_MEDIA_AUDIO_TRACK)
"MediaLast" 否 选择上一次选中的频道或媒体。(VK_LAST, KEYCODE_LAST_CHANNEL)
"MediaSkipBackward" 否 向后跳到下一个内容或节目。(KEYCODE_MEDIA_SKIP_BACKWARD)
"MediaSkipForward" 否 向前跳到下一个内容或节目。(VK_SKIP, KEYCODE_MEDIA_SKIP_FORWARD)
"MediaStepBackward" 否 向后步进到下一个内容或节目。(KEYCODE_MEDIA_STEP_BACKWARD)
"MediaStepForward" 否 向前步进到下一个内容或节目。(KEYCODE_MEDIA_STEP_FORWARD)
"MediaTopMenu" 否 媒体顶级菜单。(KEYCODE_MEDIA_TOP_MENU)
"NavigateIn" 否 向内导航。(KEYCODE_NAVIGATE_IN)
"NavigateNext" 否 导航到下一个键。(KEYCODE_NAVIGATE_NEXT)
"NavigateOut" 否 向外导航。(KEYCODE_NAVIGATE_OUT)
"NavigatePrevious" 否 导航到上一个键。(KEYCODE_NAVIGATE_PREVIOUS)
"NextFavoriteChannel" 否 循环到下一个收藏频道(在收藏列表中)。(VK_NEXT_FAVORITE_CHANNEL)
"NextUserProfile" 否 循环到下一个用户资料(如果有多个用户资料)。(VK_USER)
"OnDemand" 否 访问点播内容或节目。(VK_ON_DEMAND)
"Pairing" 否 用于配对设备的配对键。(KEYCODE_PAIRING)
"PinPDown" 否 向下移动画中画窗口。(VK_PINP_DOWN)
"PinPMove" 否 移动画中画窗口。(VK_PINP_MOVE)
"PinPToggle" 否 切换画中画窗口的显示。(VK_PINP_TOGGLE)
"PinPUp" 否 向上移动画中画窗口。(VK_PINP_UP)
"PlaySpeedDown" 否 降低媒体播放速度。(VK_PLAY_SPEED_DOWN)
"PlaySpeedReset" 否 将播放重置为正常速度。(VK_PLAY_SPEED_RESET)
"PlaySpeedUp" 否 提高媒体播放速度。(VK_PLAY_SPEED_UP)
"RandomToggle" 否 切换随机媒体或内容随机播放模式。(VK_RANDOM_TOGGLE)
"RcLowBattery" 否 不是物理按键,但当遥控器电池电量低时会发送此键码。(VK_RC_LOW_BATTERY)
"RecordSpeedNext" 否 在媒体录制速度之间切换或循环。(VK_RECORD_SPEED_NEXT)
"RfBypass" 否 切换 RF(射频)输入旁路模式(将 RF 输入直接传递到 RF 输出)。(VK_RF_BYPASS)
"ScanChannelsToggle" 否 切换频道扫描模式。(VK_SCAN_CHANNELS_TOGGLE)
"ScreenModeNext" 否 将显示屏幕模式前进到下一个可用模式。(VK_SCREEN_MODE_NEXT)
"Settings" 否 切换设备设置屏幕的显示。(VK_SETTINGS, KEYCODE_SETTINGS)
"SplitScreenToggle" 否 切换分屏模式。(VK_SPLIT_SCREEN_TOGGLE)
"STBInput" 否 切换外部 STB(机顶盒)上的输入模式。(KEYCODE_STB_INPUT)
"STBPower" 否 切换外部 STB(机顶盒)的电源。(KEYCODE_STB_POWER)
"Subtitle" 否 切换字幕显示(如果可用)。(VK_SUBTITLE)
"Teletext" 否 切换图文电视显示(如果可用)(VK_TELETEXT, KEYCODE_TV_TELETEXT)。
"VideoModeNext" 否 将视频模式前进到下一个可用模式。(VK_VIDEO_MODE_NEXT)
"Wink" 否 使设备以某种方式标识自身,例如以声音或视觉方式。(VK_WINK)
"ZoomToggle" 否 在全屏和缩放内容之间切换,或改变放大级别。(VK_ZOOM, KEYCODE_TV_ZOOM_MODE)

媒体控制器标准中定义的一些按键已经在本规范其他章节中 定义了适当的键。下表总结了在支持这些键时 必须使用的键值:

key 属性值 必需 典型用途(非规范性)
"AudioVolumeDown" 否 降低音频音量。(VK_VOLUME_DOWN)
"AudioVolumeUp" 否 提高音频音量。(VK_VOLUME_UP)
"AudioVolumeMute" 否 在静音状态和先前音量级别之间切换。(VK_VOLUME_MUTE)
"BrowserBack" 否 导航到当前历史记录中的上一个内容或页面。(VK_BACK)
"BrowserForward" 否 导航到当前历史记录中的下一个内容或页面。(VK_FORWARD)
"ChannelDown" 否 选择下一个(按数字或逻辑顺序)较低的频道。(VK_CHANNEL_DOWN)
"ChannelUp" 否 选择下一个(按数字或逻辑顺序)较高的频道。(VK_CHANNEL_UP)
"ContextMenu" 是 切换屏幕菜单的显示。(VK_MENU)
"Eject" 否 切换可移动媒体的弹出(打开)和插入(关闭)状态。(VK_EJECT_TOGGLE)
"End" 是 End 键,与键盘输入一起使用,用于转到内容末尾。(VK_GO_TO_END)
"Enter" 是 Enter 键,用于激活当前选择或接受当前输入。(VK_SELECT)
"Home" 是 Home 键,与键盘输入一起使用,用于转到内容开头。(VK_GO_TO_START)
"MediaFastForward" 否 发起或继续以快于正常速度的向前播放,或者在已快进时 提高速度。(VK_FAST_FWD)
"MediaPlay" 否 如果当前未以正常速度播放,则发起或继续以正常速度播放媒体。 (VK_PLAY)
"MediaPlayPause" 否 在播放和暂停状态之间切换媒体。(VK_PLAY_PAUSE)
"MediaRecord" 否 发起或恢复当前选定媒体的录制。(VK_RECORD)
"MediaRewind" 否 发起或继续以快于正常速度的反向播放,或者在已倒带时 提高速度。(VK_REWIND)
"MediaStop" 否 停止媒体播放、暂停、快进、倒带或录制(如果尚未停止)。(VK_STOP)
"MediaPause" 否 暂停当前正在播放的媒体。(VK_PAUSE)
"MediaTrackNext" 否 跳转到下一个媒体或节目轨道。(VK_TRACK_NEXT)
"MediaTrackPrevious" 否 跳转到上一个媒体或节目轨道。(VK_TRACK_PREV)
"Power" 否 切换电源状态。(VK_POWER)
"Unidentified" 是 当实现由于硬件、平台或软件约束而无法识别其他按键值时, 使用此按键值。(VK_UNDEFINED)

4. 无障碍

本规范只是定义了一组可用于 key 属性的有效值。因此,它没有引入任何具有 无障碍顾虑的功能。

FAST 清单已经完成,并且没有任何 项目适用于本规范。

与 FAST 清单项目“如果技术提供国际化支持”相关的一条说明: 本规范本质上定义了支持国际化硬件的 key 值,例如 不同语言或布局的键盘。它还定义了许多特殊键,这些键被赋予 人类可读的名称(如 "Shift"、"Control"、"Home" 或 "ArrowLeft")。

这些特殊键值被定义为人类可读的字符串,以便检测特殊键的代码 更易理解。虽然这些值并非旨在直接暴露给用户, 但也没有任何东西阻止这样做。选择公开这些值的应用需要确定 是否适合对这些字符串进行翻译以用于呈现(例如:向 法语用户将 "Backspace" 呈现为 "Suppr. arrière")。

5. 国际化

简短 I18n 清单 已经完成,并且没有任何项目适用。

6. 安全考量

安全与隐私自审 问卷已经完成,并附有以下说明:

与 key 属性相关的安全顾虑在 [UIEvents] 规范中处理。

7. 隐私考量

安全与隐私自审 问卷已经完成,并附有以下说明:

与 key 属性相关的隐私顾虑在 [UIEvents] 规范中处理。

8. 致谢

多年来,许多人为 DOM KeyboardEvent 规范作出了贡献,其中包括 DOM Working Group 和 WebApps Working Group 的许多参与者。当前这一组 key 值是 在此期间对许多提案和变体进行迭代的结果。 我们特别感谢以下参与者的贡献:

Gary Kacmarcik (Google), Masayuki Nakano (Mozilla) 和 Travis Leithead (Microsoft)。

一致性

文档 约定

一致性要求通过 描述性断言 和 RFC 2119 术语的组合来表达。 本文档规范性部分中的关键词 “MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、 “MAY” 和 “OPTIONAL” 应按 RFC 2119 中的描述解释。 但是,为了可读性, 这些词在本规范中并非全部以大写字母出现。

本规范的所有文本均为规范性文本, 但明确标记为非规范性的章节、示例和注释除外。 [RFC2119]

本规范中的示例以 “for example” 这些词引入, 或者通过 class="example" 与规范性文本分隔开来, 如下所示:

这是一个资料性示例的例子。

资料性注释以 “Note” 一词开始, 并通过 class="note" 与规范性文本分隔开来, 如下所示:

注:这是一个资料性注释。

一致性 算法

作为算法一部分以祈使语气表述的要求 (例如 "strip any leading space characters" 或 "return false and abort these steps") 应按引入该算法时使用的关键词 ("must"、"should"、"may" 等) 的含义来解释。

以算法或具体步骤表述的一致性要求 可以用任何方式实现, 只要最终结果等价即可。 特别是,本规范中定义的算法 旨在易于理解, 而不旨在具有高性能。 鼓励实现者进行优化。

索引

由本规范定义的术语

由引用定义的术语

参考文献

规范性参考文献

[RFC2119]
S. Bradner. 用于 RFC 中表示要求级别的关键词. 1997 年 3 月。最佳当前实践。URL: https://datatracker.ietf.org/doc/html/rfc2119
[UAX15]
Ken Whistler. Unicode 规范化 形式. 2024 年 8 月 14 日。Unicode 标准附录 #15。URL: https://www.unicode.org/reports/tr15/tr15-56.html
[UIEvents]
Gary Kacmarcik; Travis Leithead. UI Events. 2024 年 9 月 7 日。WD。URL: https://www.w3.org/TR/uievents/
[UIEvents-Code]
Travis Leithead; Gary Kacmarcik. UI Events KeyboardEvent code 值. 2023 年 5 月 30 日。CR。URL: https://www.w3.org/TR/uievents-code/
[Unicode]
Unicode 标准. URL: https://www.unicode.org/versions/latest/

资料性参考文献

[AndroidKeycode]
Android KeyEvent. URL: http://developer.android.com/reference/android/view/KeyEvent.html
[DASE]
ATSC A/100-2,DTV 应用软件环境 Level 1(DASE-1)第 2 部分:声明式应用程序和 环境. 2003 年 3 月 09 日。URL: http://atsc.org/standard/a100-dtv-application-software-environment-level-1-dase-1/
[ISO9995-1]
ISO/IEC 9995-1:2009 信息技术 -- 文本和办公系统的键盘布局 -- 第 1 部分: 键盘布局的一般原则. URL: http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=51645
[KeyEventJava]
Java™ Platform, Standard Edition 6 API Specification,java.awt.events.KeyEvent 类. URL: http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html
[KeysNet]
.NET Framework 4.5 Class Library,Keys 枚举. URL: http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx
[OCAP]
Open Cable Application Platform 1.1.3. 2010 年 6 月 03 日。URL: https://apps.cablelabs.com/specification/opencable-application-platform-ocap/
[WEB4CE]
ANSI/CTA-2014-B, 用于 UPnP 网络和互联网中远程用户界面的基于 Web 的协议和框架 (Web4CE). 2011 年 1 月。URL: https://shop.cta.tech/products/web-based-protocol-and-framework-for-remote-user-interface-on-upnp-networks-and-the-internet
[WmAppCommand]
MSDN WM_APPCOMMAND 消息. URL: https://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx