Главная chevron_right Функции chevron_right USB chevron_right Keyboard Modifiers and Special Keys

Keyboard Modifiers and Special Keys

Справочник констант модификаторов и специальных клавиш (KEY_LEFT_CTRL, KEY_F1, KEY_RETURN и др.) для работы с библиотекой Keyboard.

Полная статья

Описание

Библиотека Keyboard позволяет отправлять не только обычные буквы и цифры, но и служебные клавиши: Ctrl, Shift, Alt, Esc, стрелки, функциональные клавиши и клавиши цифрового блока. Для каждой такой клавиши предусмотрена именованная константа — например, KEY_LEFT_CTRL, KEY_RETURN, KEY_F1 и другие.

Когда в Keyboard.write(), Keyboard.press() или Keyboard.release() передаётся обычный символ ASCII, библиотека сама разбирается, какой USB HID-код отправить. Например:

    Keyboard.write('a');  // нажать и отпустить клавишу 'A'
    Keyboard.write('A');  // нажать Shift и 'A', затем отпустить обе

Но у многих клавиш вообще нет ASCII-представления. Именно для них и существуют константы из таблиц ниже. Чтобы отправить сочетание Shift+F2, нужно написать:

    Keyboard.press(KEY_LEFT_SHIFT);  // нажать и удерживать Shift
    Keyboard.press(KEY_F2);          // нажать и удерживать F2
    Keyboard.releaseAll();           // отпустить обе клавиши

Для комбинаций клавиш подходит только Keyboard.press(): он удерживает клавишу нажатой, пока вы не вызовете Keyboard.write() или Keyboard.write(). Функция Keyboard.write() нажимает и тут же отпускает клавишу, поэтому сочетания вроде Ctrl+C или Shift+F2 с ней не получится собрать.

Модификаторы клавиатуры

Модификаторы — это клавиши, которые меняют смысл другой клавиши, если удерживаются вместе с ней. К ним относятся Ctrl, Shift, Alt, AltGr, а также системные клавиши GUI и Command.

КонстантаШестнадцатеричное значениеДесятичное значениеПримечания
KEY_LEFT_CTRL0x80128
KEY_LEFT_SHIFT0x81129
KEY_LEFT_ALT0x82130Option (⌥) на Mac
KEY_LEFT_GUI0x83131Клавиша с логотипом ОС, Command (⌘) на Mac
KEY_RIGHT_CTRL0x84132
KEY_RIGHT_SHIFT0x85133
KEY_RIGHT_ALT0x86134Также AltGr, Option (⌥) на Mac
KEY_RIGHT_GUI0x87135Клавиша с логотипом ОС, Command (⌘) на Mac

Специальные клавиши

Специальные клавиши не имеют соответствующего печатного символа ASCII. Их передают в Keyboard.press() или Keyboard.write() по именованной константе.

Буквенно-цифровой блок

КонстантаШестнадцатеричное значениеДесятичное значение
KEY_TAB0xB3179
KEY_CAPS_LOCK0xC1193
KEY_BACKSPACE0xB2178
KEY_RETURN0xB0176
KEY_MENU0xED237

Навигационный блок

КонстантаШестнадцатеричное значениеДесятичное значение
KEY_INSERT0xD1209
KEY_DELETE0xD4212
KEY_HOME0xD2210
KEY_END0xD5213
KEY_PAGE_UP0xD3211
KEY_PAGE_DOWN0xD6214
KEY_UP_ARROW0xDA218
KEY_DOWN_ARROW0xD9217
KEY_LEFT_ARROW0xD8216
KEY_RIGHT_ARROW0xD7215

Цифровая клавиатура

КонстантаШестнадцатеричное значениеДесятичное значение
KEY_NUM_LOCK0xDB219
KEY_KP_SLASH0xDC220
KEY_KP_ASTERISK0xDD221
KEY_KP_MINUS0xDE222
KEY_KP_PLUS0xDF223
KEY_KP_ENTER0xE0224
KEY_KP_10xE1225
KEY_KP_20xE2226
KEY_KP_30xE3227
KEY_KP_40xE4228
KEY_KP_50xE5229
KEY_KP_60xE6230
KEY_KP_70xE7231
KEY_KP_80xE8232
KEY_KP_90xE9233
KEY_KP_00xEA234
KEY_KP_DOT0xEB235

Escape и функциональные клавиши

Библиотека поддерживает Esc и функциональные клавиши вплоть до F24. Это открывает широкие возможности для макропадов, управляющих панелей, тестовых стендов и автоматизации приложений.

КонстантаШестнадцатеричное значениеДесятичное значение
KEY_ESC0xB1177
KEY_F10xC2194
KEY_F20xC3195
KEY_F30xC4196
KEY_F40xC5197
KEY_F50xC6198
KEY_F60xC7199
KEY_F70xC8200
KEY_F80xC9201
KEY_F90xCA202
KEY_F100xCB203
KEY_F110xCC204
KEY_F120xCD205
KEY_F130xF0240
KEY_F140xF1241
KEY_F150xF2242
KEY_F160xF3243
KEY_F170xF4244
KEY_F180xF5245
KEY_F190xF6246
KEY_F200xF7247
KEY_F210xF8248
KEY_F220xF9249
KEY_F230xFA250
KEY_F240xFB251

Служебные клавиши

Эти клавиши обычно расположены рядом с функциональным рядом или над навигационным блоком и не относятся к печатным символам.

КонстантаШестнадцатеричное значениеДесятичное значениеПримечания
KEY_PRINT_SCREEN0xCE206Print Screen или PrtSc/SysRq
KEY_SCROLL_LOCK0xCF207
KEY_PAUSE0xD0208Pause / Break

Международные раскладки

В некоторых национальных раскладках есть дополнительные клавиши, отсутствующие в стандартной US-раскладке. Например, в шведской и датской раскладках константа KEY_A_RING имеет значение 0xB7: это клавиша справа от P, обозначенная на клавиатуре как Å, а в раскладке US она соответствует клавишам { / [.

Чтобы задействовать дополнительные определения нужной раскладки, подключите соответствующий заголовочный файл:

    #include <Keyboard.h>
    #include <Keyboard_sv_SE.h> // дополнительные определения клавиш для шведской раскладки

    void setup() {
      Keyboard.begin(KeyboardLayout_sv_SE); // использовать шведскую раскладку
      Keyboard.write(KEY_A_RING);
    }

    void loop() {} // пустой цикл

Если символы на экране не совпадают с ожидаемыми, первым делом проверьте, совпадает ли раскладка в скетче с активной раскладкой операционной системы. Это особенно важно для русскоязычных пользователей: библиотека отправляет USB HID-коды физических клавиш, а не Unicode-символы, поэтому итоговый символ целиком определяется раскладкой, активной на компьютере в момент нажатия.

Практические замечания

  • Для одиночной специальной клавиши достаточно Keyboard.write(KEY_RETURN) — он сам нажмёт и отпустит её.
  • Для сочетаний используйте Keyboard.press() и обязательно завершайте последовательность вызовом Keyboard.releaseAll(), иначе клавиши останутся «зажатыми».
  • KEY_LEFT_GUI на Windows соответствует клавише Windows, а на macOS — Command.
  • KEY_RIGHT_ALT во многих международных раскладках работает как AltGr и служит для ввода дополнительных символов.
  • Если скетч автоматически отправляет горячие клавиши при старте, добавьте физическую кнопку-разрешение или задержку delay() в начале setup() — иначе можно потерять управление компьютером ещё до того, как успеете что-то предпринять.