Главная chevron_right Функции chevron_right USB chevron_right Keyboard.releaseAll()

Keyboard.releaseAll()

Keyboard.releaseAll() отпускает все клавиши, удерживаемые через Keyboard.press(), — один вызов в конце комбинации гарантирует, что ни одна клавиша не «залипнет».

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

Описание

Keyboard.releaseAll() отпускает разом все клавиши, которые на данный момент удерживает библиотека Keyboard — то есть те, что были зажаты через Keyboard.press() и ещё не освобождены явно. Это самый надёжный способ привести клавиатуру в исходное состояние после серии нажатий.

Особенно удобно при работе с горячими клавишами вроде Ctrl+N, Ctrl+S или Shift+F2: вместо того чтобы отпускать каждую клавишу вручную, достаточно одного вызова Keyboard.releaseAll() в конце комбинации.

Синтаксис

Keyboard.releaseAll()

Параметры

Нет

Возвращает

Ничего

Пример кода

    #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.releaseAll();
      // ожидать открытия нового окна:
      delay(1000);
    }

Где применяется

  • Завершение горячих клавиш и макросов — чтобы гарантированно отпустить все клавиши после комбинации.
  • Аварийный сброс состояния после нескольких последовательных Keyboard.press(), если логика программы стала сложной.
  • Сценарии, где набор удерживаемых клавиш зависит от условий во время выполнения — проще отпустить всё сразу, чем отслеживать, что именно зажато.

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

  • Возьмите за правило: каждый блок с Keyboard.press() завершать вызовом Keyboard.releaseAll(). Это исключает ситуацию, когда клавиша «залипает» из-за прерванного выполнения скетча.
  • Keyboard.releaseAll() не генерирует новые символы и не нажимает ничего — функция лишь сообщает компьютеру, что все ранее удерживаемые клавиши теперь отпущены.
  • Если скетч может уйти в другой режим работы или прерваться по условию, вызывайте Keyboard.releaseAll() перед переходом — иначе компьютер продолжит считать часть клавиш зажатыми.
  • Для точечного управления конкретной клавишей есть Keyboard.release(key), но когда нужно гарантированно очистить всё состояние, releaseAll() проще и надёжнее.