块编辑器开发文档

@wordpress/keycodes

💡 云策文档标注

概述

@wordpress/keycodes 是 WordPress 的键盘键码实用工具包,用于在 onKeyDown 等事件中检查按下的键。它提供了键盘键的常量(如 DOWN、ENTER)和辅助函数,以简化键盘事件处理和快捷键管理。

关键要点

  • 提供键盘键码常量,如 ALT、BACKSPACE、ENTER、SPACE 等,用于事件处理中的键码比较。
  • 包含 ariaKeyShortcut、displayShortcut、rawShortcut 等对象,用于生成兼容 ARIA 属性、显示格式或原始格式的快捷键字符串。
  • 提供 isKeyboardEvent 函数来检查键盘事件是否匹配预定义的快捷键组合,支持跨平台(如 macOS 和 Windows)处理。
  • 包含 isAppleOS 函数,用于检测当前平台是否为 macOS,以适配不同操作系统的快捷键修饰符。
  • 安装要求 ES2015+ 环境,否则需包含 @wordpress/babel-preset-default 中的 polyfill。
  • 此包是 Gutenberg 项目的一部分,采用 monorepo 结构,可通过 npm 安装并用于 WordPress 和其他软件项目。

代码示例

import { DOWN, ENTER } from '@wordpress/keycodes';

onKeyDown( event ) {
    const { keyCode } = event;

    if ( keyCode === DOWN ) {
        alert( 'You pressed the down arrow!' );
    } else if ( keyCode === ENTER ) {
        alert( 'You pressed the enter key!' );
    } else {
        alert( 'You pressed another key.' );
    }
}

注意事项

  • ariaKeyShortcut 生成的快捷键字符串应遵循 UI Events KeyboardEvent key Values 规范,例如使用 "Enter"、"Space"(空格键的例外)等值。
  • modifiers 对象根据平台返回可用的修饰符,确保快捷键在不同操作系统下正确工作。
  • 使用前需确保环境支持 ES2015+,否则需添加 polyfill 以避免兼容性问题。

📄 原文内容

Keycodes utilities for WordPress, used to check the key pressed in events like onKeyDown. Contains keycodes constants for keyboard keys like DOWN, UP, ENTER, etc.

Installation

Install the module

npm install @wordpress/keycodes --save

This package assumes that your code will run in an ES2015+ environment. If you’re using an environment that has limited or no support for such language features and APIs, you should include the polyfill shipped in @wordpress/babel-preset-default in your code.

Usage

Check which key was used in an onKeyDown event:

import { DOWN, ENTER } from '@wordpress/keycodes';

// [...]

onKeyDown( event ) {
    const { keyCode } = event;

    if ( keyCode === DOWN ) {
        alert( 'You pressed the down arrow!' );
    } else if ( keyCode === ENTER ) {
        alert( 'You pressed the enter key!' );
    } else {
        alert( 'You pressed another key.' );
    }
}

API

ALT

Keycode for ALT key.

ariaKeyShortcut

An object that contains functions to get shortcuts in a format compatible with the aria-keyshortcuts HTML attribute.

Note: The provided shortcut character strings (ie. not the modifiers) should follow the values specified in the UI Events KeyboardEvent key Values spec — for example, “Enter”, “Tab”, “ArrowRight”, “PageDown”, “Escape”, “Plus”, or “F1”. The spacebar key should be represented with the “Space” string (an exception to the UI Events KeyboardEvent key Values spec).

Related

Usage

// Assuming macOS:
ariaKeyShortcut.primary( 'm' );
// "Meta+M"

ariaKeyShortcut.primaryAlt( 'm' );
// "Meta+Alt+M"

// Assuming Windows:
ariaKeyShortcut.primary( 'm' );
// "Control+M"

ariaKeyShortcut.primaryAlt( 'm' );
// "Control+Alt+M"

ariaKeyShortcut.primaryShift( 'del' );
// "Control+Shift+Delete"

BACKSPACE

Keycode for BACKSPACE key.

COMMAND

Keycode for COMMAND/META key.

CTRL

Keycode for CTRL key.

DELETE

Keycode for DELETE key.

displayShortcut

An object that contains functions to display shortcuts.

Usage

// Assuming macOS:
displayShortcut.primary( 'm' );
// "⌘M"

Keyed map of functions to display shortcuts.

displayShortcutList

Return an array of the parts of a keyboard shortcut chord for display.

Usage

// Assuming macOS:
displayShortcutList.primary( 'm' );
// [ "⌘", "M" ]

Keyed map of functions to shortcut sequences.

DOWN

Keycode for DOWN key.

END

Keycode for END key.

ENTER

Keycode for ENTER key.

ESCAPE

Keycode for ESCAPE key.

F10

Keycode for F10 key.

HOME

Keycode for HOME key.

isAppleOS

Return true if platform is MacOS.

Parameters

  • _window Window: window object by default; used for DI testing.

Returns

  • boolean: True if MacOS; false otherwise.

isKeyboardEvent

An object that contains functions to check if a keyboard event matches a predefined shortcut combination.

Usage

// Assuming an event for ⌘M key press:
isKeyboardEvent.primary( event, 'm' );
// true

Keyed map of functions to match events.

LEFT

Keycode for LEFT key.

modifiers

Object that contains functions that return the available modifier depending on platform.

Type

  • WPModifierHandler< WPModifier >

PAGEDOWN

Keycode for PAGEDOWN key.

PAGEUP

Keycode for PAGEUP key.

rawShortcut

An object that contains functions to get raw shortcuts.

These are intended for user with the KeyboardShortcuts.

Usage

// Assuming macOS:
rawShortcut.primary( 'm' );
// "meta+m"

RIGHT

Keycode for RIGHT key.

SHIFT

Keycode for SHIFT key.

shortcutAriaLabel

An object that contains functions to return an aria label for a keyboard shortcut.

Usage

// Assuming macOS:
shortcutAriaLabel.primary( '.' );
// "Command + Period"

Keyed map of functions to shortcut ARIA labels.

SPACE

Keycode for SPACE key.

TAB

Keycode for TAB key.

UP

Keycode for UP key.

ZERO

Keycode for ZERO key.

Contributing to this package

This is an individual package that’s part of the Gutenberg project. The project is organized as a monorepo. It’s made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to npm and used by WordPress as well as other software projects.

To find out more about contributing to this package or Gutenberg as a whole, please read the project’s main contributor guide.