Keyboard.write()
Keyboard.write() имитирует одиночное нажатие и отпускание клавиши — принимает символ или код клавиши; для сочетаний используйте Keyboard.press().
Полная статья
Описание
Keyboard.write() имитирует одиночное нажатие клавиши: библиотека сигнализирует компьютеру о нажатии и тут же об отпускании. Это самый простой способ отправить символ, когда удерживать клавишу не нужно.
Функция принимает печатаемые ASCII-символы, их числовые коды, а также специальные константы клавиш из раздела Keyboard Modifiers and Special Keys — например, Enter или Esc. Если передать заглавную букву, библиотека автоматически добавит Shift, точно так же, как это происходит при обычном наборе текста.
Когда нужно удержать клавишу или собрать сочетание вроде Ctrl+C, Keyboard.write() не подойдёт — в таких случаях используйте Keyboard.press(), а затем Keyboard.release() или Keyboard.releaseAll().
Синтаксис
Keyboard.write(character)
Параметры
character: символ, его ASCII-код или константа специальной клавиши, которую нужно отправить. Один и тот же символ можно задать в нескольких эквивалентных формах:
Keyboard.write(65); // отправляет ASCII-значение 65, то есть A
Keyboard.write('A'); // то же самое, что символ в кавычках
Keyboard.write(0x41); // то же самое в шестнадцатеричном формате
Keyboard.write(0b01000001); // то же самое в двоичном формате (странный выбор, но работает)
Возвращает
Количество отправленных байтов. Тип данных: size_t.
Если функция вернула 0, значит символ не был отправлен — например, из-за того, что Keyboard.begin() не вызывался или передан неподдерживаемый код.
Пример кода
#include <Keyboard.h>
void setup() {
// настроить пин 2 как вход и включить
// подтягивающий резистор, чтобы на нём был HIGH, если
// не подключён к GND:
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
//если кнопка нажата
if (digitalRead(2) == LOW) {
//отправить ASCII-символ 'A',
Keyboard.write(65);
}
}
Где применяется
- Автоматический ввод текста — заполнение форм, терминальных команд или паролей по нажатию физической кнопки.
- Навигация в интерфейсе — отправка
Enter,Escили стрелок для управления программами без мыши. - Горячие клавиши — запуск макросов в графических редакторах или IDE.
- Учебные стенды — демонстрация HID-устройств без написания драйверов.
Практические замечания
Keyboard.write()рассчитана на одиночное нажатие. Если нужно удерживать клавишу или отправить сочетание, используйтеKeyboard.press()вместе сKeyboard.release()илиKeyboard.releaseAll().- Число
97будет интерпретировано как ASCII-код и отправит символa, а не строку"97". Если хотите отправить именно цифру как символ, передавайте её в одинарных кавычках:'6'. - Результат зависит от раскладки клавиатуры, выбранной в операционной системе. Для корректной работы с национальными символами задайте нужную раскладку через
Keyboard.begin(layout). - Перед тем как скетч начнёт автоматически отправлять нажатия, добавьте управляемый запуск: кнопку, тумблер или хотя бы задержку
delay()после старта платы. Иначе при каждом подключении USB плата может неожиданно «напечатать» что-то в активном окне.