Spec-Zone.ru › Web APIs

API клавиатуры

Экспериментально: Это экспериментальная технология.
Перед использованием в производстве внимательно изучите таблицу совместимости с браузерами.

API клавиатуры предоставляет методы для работы с физической клавиатурой, подключенной к устройству, на котором работает браузер.

Он предоставляет несколько возможностей. Картирование клавиатуры предоставляет интерфейс для получения строки, генерируемой конкретной физической клавишей на клавиатуре, чтобы правильно идентифицировать эту клавишу для пользователя. Блокировка клавиатуры позволяет веб-странице захватывать клавиши, которые обычно зарезервированы для пользователя или операционной системы. API клавиатуры предназначен для использования веб-приложениями, такими как игры или приложения удаленного доступа, которые обеспечивают полноэкранный интерактивный опыт.

Концепции и использование

Картирование клавиатуры

На физических клавиатурах атрибут code содержит физическое расположение нажатой клавиши, а атрибут key содержит строку, генерируемую при нажатии клавиши в этом физическом расположении на клавиатуре. Значение key учитывает языковую локаль клавиатуры (например, 'en-US'), раскладку (например, 'QWERTY') и состояние клавиш-модификаторов (Shift, Control и т. д.). Раньше получить эту информацию не было возможности.

API карты клавиатуры предоставляет способ получить строку, генерируемую конкретным нажатием клавиши, через интерфейс Keyboard и интерфейс KeyboardLayoutMap. К интерфейсу Keyboard можно получить доступ через navigator.keyboard. Keyboard предоставляет метод Keyboard.getLayoutMap, который возвращает обещание, разрешающее объект KeyboardLayoutMap, содержащий члены для преобразования кодов в клавиши. Список допустимых значений кода можно найти в разделе Клавиши письменности спецификации Коды значений KeyboardEvent в UI Events.

Следующий пример демонстрирует, как получить строку, специфичную для расположения или раскладки, связанную с клавишей W на английской клавиатуре QWERTY.

if (navigator.keyboard) {
  const keyboard = navigator.keyboard;
  keyboard.getLayoutMap().then((keyboardLayoutMap) => {
    const upKey = keyboardLayoutMap.get("KeyW");
    window.alert(`Press ${upKey} to move up.`);
  });
} else {
  // Do something else.
}

Блокировка клавиатуры

Богатые интерактивные веб-страницы, игры и потоковые приложения часто требуют доступа к специальным клавишам и сочетаниям клавиш в полноэкранном режиме. Примеры таких клавиш/сочетаний клавиш включают Escape, Alt+Tab и Ctrl+N. Эти клавиши и сочетания клавиш обычно захватываются пользователем или операционной системой, как показано в следующем примере.

Чтобы захватить клавиши W, A, S и D, вызовите lock() со списком, содержащим значение атрибута кода клавиши для каждой из этих клавиш:

navigator.keyboard.lock(["KeyW", "KeyA", "KeyS", "KeyD"]);

Это позволит захватить эти клавиши независимо от используемых модификаторов при нажатии. Предполагая стандартную раскладку QWERTY США, регистрация KeyW гарантирует, что W, Shift+W, Control+W, Control+Shift+W и все другие сочетания клавиш-модификаторов с W будут отправлены в приложение. То же самое относится к KeyA, KeyS, и KeyD.

Клавиши системы письма

Коды, передаваемые через Keyboard.lock, и различные методы интерфейса KeyboardLayoutMap называются «клавишами системы письма».

«Клавиши системы письма» определены в разделе Клавиши письменности спецификации Коды KeyboardEvent в UI Events, поскольку физические клавиши меняют свое значение в зависимости от текущей локали и раскладки клавиатуры. Эти клавиши показаны ниже. Синие клавиши присутствуют на всех стандартных клавиатурах, в то время как зеленые клавиши доступны только на некоторых клавиатурах.

Writing system keys as defined by the UI Events KeyboardEvent code Values spec.

Интерфейсы

Keyboard Экспериментально

Предоставляет функции для получения карт раскладки клавиатуры и переключения захвата нажатий клавиш с физической клавиатуры.

KeyboardLayoutMap Экспериментально

Объект, подобный карте, с функциями для получения строки, связанной с определенными физическими клавишами.

Расширения других интерфейсов

navigator.keyboard Только для чтения Экспериментально

Возвращает объект Keyboard, который предоставляет доступ к функциям для получения карт раскладки клавиатуры и переключения захвата нажатий клавиш с физической клавиатуры.

Спецификации

Спецификация
Блокировка клавиатуры
Карта клавиатуры

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
@@iterator 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
Keyboard_API 69 79 Нет 55 Нет 69 Нет 48 Нет 10.0 69
entries 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
forEach 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
get 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
has 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
keys 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
size 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
values 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
END_OF_DOCUMENT_MARKER
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
Keyboard_API 68 79 Нет 55 Нет 68 Нет 48 Нет 10.0 68
getLayoutMap 69 79 Нет 56 Нет 69 Нет 48 Нет 10.0 69
lock 68 79 Нет 55 Нет 68 Нет 48 Нет 10.0 68
unlock 68 79 Нет 55 Нет 68 Нет 48 Нет 10.0 68

api.Клавиатура

Таблицы BCD загружаются только в браузере

api.Карта раскладок клавиатуры

Таблицы BCD загружаются только в браузере

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Keyboard_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API