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_CTRL | 0x80 | 128 | |
| KEY_LEFT_SHIFT | 0x81 | 129 | |
| KEY_LEFT_ALT | 0x82 | 130 | Option (⌥) на Mac |
| KEY_LEFT_GUI | 0x83 | 131 | Клавиша с логотипом ОС, Command (⌘) на Mac |
| KEY_RIGHT_CTRL | 0x84 | 132 | |
| KEY_RIGHT_SHIFT | 0x85 | 133 | |
| KEY_RIGHT_ALT | 0x86 | 134 | Также AltGr, Option (⌥) на Mac |
| KEY_RIGHT_GUI | 0x87 | 135 | Клавиша с логотипом ОС, Command (⌘) на Mac |
Специальные клавиши
Специальные клавиши не имеют соответствующего печатного символа ASCII. Их передают в Keyboard.press() или Keyboard.write() по именованной константе.
Буквенно-цифровой блок
| Константа | Шестнадцатеричное значение | Десятичное значение |
|---|---|---|
| KEY_TAB | 0xB3 | 179 |
| KEY_CAPS_LOCK | 0xC1 | 193 |
| KEY_BACKSPACE | 0xB2 | 178 |
| KEY_RETURN | 0xB0 | 176 |
| KEY_MENU | 0xED | 237 |
Навигационный блок
| Константа | Шестнадцатеричное значение | Десятичное значение |
|---|---|---|
| KEY_INSERT | 0xD1 | 209 |
| KEY_DELETE | 0xD4 | 212 |
| KEY_HOME | 0xD2 | 210 |
| KEY_END | 0xD5 | 213 |
| KEY_PAGE_UP | 0xD3 | 211 |
| KEY_PAGE_DOWN | 0xD6 | 214 |
| KEY_UP_ARROW | 0xDA | 218 |
| KEY_DOWN_ARROW | 0xD9 | 217 |
| KEY_LEFT_ARROW | 0xD8 | 216 |
| KEY_RIGHT_ARROW | 0xD7 | 215 |
Цифровая клавиатура
| Константа | Шестнадцатеричное значение | Десятичное значение |
|---|---|---|
| KEY_NUM_LOCK | 0xDB | 219 |
| KEY_KP_SLASH | 0xDC | 220 |
| KEY_KP_ASTERISK | 0xDD | 221 |
| KEY_KP_MINUS | 0xDE | 222 |
| KEY_KP_PLUS | 0xDF | 223 |
| KEY_KP_ENTER | 0xE0 | 224 |
| KEY_KP_1 | 0xE1 | 225 |
| KEY_KP_2 | 0xE2 | 226 |
| KEY_KP_3 | 0xE3 | 227 |
| KEY_KP_4 | 0xE4 | 228 |
| KEY_KP_5 | 0xE5 | 229 |
| KEY_KP_6 | 0xE6 | 230 |
| KEY_KP_7 | 0xE7 | 231 |
| KEY_KP_8 | 0xE8 | 232 |
| KEY_KP_9 | 0xE9 | 233 |
| KEY_KP_0 | 0xEA | 234 |
| KEY_KP_DOT | 0xEB | 235 |
Escape и функциональные клавиши
Библиотека поддерживает Esc и функциональные клавиши вплоть до F24. Это открывает широкие возможности для макропадов, управляющих панелей, тестовых стендов и автоматизации приложений.
| Константа | Шестнадцатеричное значение | Десятичное значение |
|---|---|---|
| KEY_ESC | 0xB1 | 177 |
| KEY_F1 | 0xC2 | 194 |
| KEY_F2 | 0xC3 | 195 |
| KEY_F3 | 0xC4 | 196 |
| KEY_F4 | 0xC5 | 197 |
| KEY_F5 | 0xC6 | 198 |
| KEY_F6 | 0xC7 | 199 |
| KEY_F7 | 0xC8 | 200 |
| KEY_F8 | 0xC9 | 201 |
| KEY_F9 | 0xCA | 202 |
| KEY_F10 | 0xCB | 203 |
| KEY_F11 | 0xCC | 204 |
| KEY_F12 | 0xCD | 205 |
| KEY_F13 | 0xF0 | 240 |
| KEY_F14 | 0xF1 | 241 |
| KEY_F15 | 0xF2 | 242 |
| KEY_F16 | 0xF3 | 243 |
| KEY_F17 | 0xF4 | 244 |
| KEY_F18 | 0xF5 | 245 |
| KEY_F19 | 0xF6 | 246 |
| KEY_F20 | 0xF7 | 247 |
| KEY_F21 | 0xF8 | 248 |
| KEY_F22 | 0xF9 | 249 |
| KEY_F23 | 0xFA | 250 |
| KEY_F24 | 0xFB | 251 |
Служебные клавиши
Эти клавиши обычно расположены рядом с функциональным рядом или над навигационным блоком и не относятся к печатным символам.
| Константа | Шестнадцатеричное значение | Десятичное значение | Примечания |
|---|---|---|---|
| KEY_PRINT_SCREEN | 0xCE | 206 | Print Screen или PrtSc/SysRq |
| KEY_SCROLL_LOCK | 0xCF | 207 | |
| KEY_PAUSE | 0xD0 | 208 | Pause / 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()— иначе можно потерять управление компьютером ещё до того, как успеете что-то предпринять.