Keyboard.release()
Keyboard.release() отпускает конкретную клавишу, зажатую через Keyboard.press(), — это нужно для сочетаний вроде Ctrl+C, где клавиши удерживаются по очереди.
Полная статья
Описание
Keyboard.release() отпускает одну конкретную клавишу, которая была зажата через Keyboard.press(). Это нужно для сочетаний клавиш и сценариев, где клавиша должна оставаться удержанной некоторое время.
Когда вы вызываете Keyboard.press(), клавиша остаётся «зажатой» с точки зрения компьютера до тех пор, пока вы явно не отпустите её — именно для этого и нужен Keyboard.release(). Типичный пример: нажать Ctrl+C означает сначала зажать Ctrl, затем нажать C, а потом последовательно отпустить обе клавиши.
Если нужно отпустить сразу все зажатые клавиши, используйте Keyboard.releaseAll().
Синтаксис
Keyboard.release(key)
Параметры
key: клавиша, которую нужно отпустить. Допустимый тип данных: char. Можно передавать обычный символ ('a', 'Z') или специальную константу, например KEY_LEFT_CTRL, KEY_RETURN, KEY_F2.
Возвращает
Количество успешно отпущенных клавиш. Тип данных: size_t. Если клавиша не была зажата — функция вернёт 0.
Пример кода
#include <Keyboard.h>
// используйте этот вариант для OSX:
char ctrlKey = KEY_LEFT_GUI;
// используйте этот вариант для Windows и Linux:
// char ctrlKey = KEY_LEFT_CTRL;
void setup() {
// настроить пин 2 как вход и включить
// подтягивающий резистор, чтобы на нём был HIGH,
// если не подключён к GND:
pinMode(2, INPUT_PULLUP);
// инициализировать управление клавиатурой:
Keyboard.begin();
}
void loop() {
while (digitalRead(2) == HIGH) {
// ничего не делать, пока пин 2 не перейдёт в LOW
delay(500);
}
delay(1000);
// новый документ:
Keyboard.press(ctrlKey);
Keyboard.press('n');
delay(100);
Keyboard.release(ctrlKey);
Keyboard.release('n');
// ожидать открытия нового окна:
delay(1000);
}
Где применяется
- Управление сочетаниями клавиш, где важно отпустить модификатор позже обычной клавиши.
- Игровые контроллеры и панели управления, где клавиша удерживается ровно столько, сколько нажата физическая кнопка.
- Макропады, которые имитируют длинное удержание
Shift,Ctrl,Altили другой служебной клавиши.
Практические замечания
- Отпускайте ту же клавишу, которую передавали в
Keyboard.press(): аргументы должны совпадать — и по значению, и по типу. - Если после серии нажатий нужно гарантированно сбросить состояние клавиатуры, проще вызвать
Keyboard.releaseAll()— он отпустит всё сразу. - Забытый
release()оставит клавишу «зажатой» на стороне компьютера до тех пор, пока скетч не отпустит её или плата не будет отключена. Это частая причина странного поведения системы после загрузки скетча. - Для одиночного краткого нажатия чаще подходит
Keyboard.write(): он нажимает и отпускает клавишу за один вызов, без необходимости вручную управлять состоянием.