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

Keyboard.begin()

Keyboard.begin() запускает эмуляцию USB-клавиатуры, после чего плата воспринимается системой как HID-устройство ввода. Поддерживает выбор раскладки через параметр layout.

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

Описание

Функция Keyboard.begin() активирует режим эмуляции USB-клавиатуры — после её вызова плата начинает представляться компьютеру как HID-устройство ввода. Всё, что вы отправите через библиотеку Keyboard, будет восприниматься системой как нажатия реальных клавиш.

Работает только на платах с нативной поддержкой USB: Leonardo и Arduino Due. На обычном Uno эта функция недоступна.

Чтобы остановить эмуляцию, вызовите Keyboard.end().

Синтаксис

  • Keyboard.begin()
  • Keyboard.begin(layout)

Параметры

layout: раскладка клавиатуры, которую будет использовать плата при отправке символов. Параметр необязателен — если его не указывать, применяется раскладка KeyboardLayout_en_US (американская).

Раскладка важна, потому что символы кодируются через скан-коды, а не через Unicode. Если раскладка на плате не совпадает с раскладкой операционной системы, на экране появятся не те символы. Например, при отправке @ с раскладкой en_US на немецкой системе результат будет неожиданным.

Раскладки клавиатуры

Библиотека поддерживает следующие национальные раскладки:

  • KeyboardLayout_da_DK: Дания
  • KeyboardLayout_de_DE: Германия
  • KeyboardLayout_en_US: США
  • KeyboardLayout_es_ES: Испания
  • KeyboardLayout_fr_FR: Франция
  • KeyboardLayout_hu_HU: Венгрия
  • KeyboardLayout_it_IT: Италия
  • KeyboardLayout_pt_PT: Португалия
  • KeyboardLayout_sv_SE: Швеция

Если нужной раскладки в списке нет, её можно создать самостоятельно: скопируйте любой существующий файл раскладки из библиотеки и адаптируйте под свою локаль. Подробные инструкции находятся в файле KeyboardLayout.h.

Возврат

Ничего

Пример кода

    #include <Keyboard.h>

    void setup() {
      // настраиваем пин 2 как вход и включаем
      // подтягивающий резистор, чтобы на нём был HIGH, если
      // не подключён к GND:
      pinMode(2, INPUT_PULLUP);
      Keyboard.begin();
    }

    void loop() {
      //если кнопка нажата
      if (digitalRead(2) == LOW) {
        //отправляем сообщение
        Keyboard.print("Hello!");
      }
    }

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

  • Автоматический ввод текста — плата набирает заранее заданные строки, например логин или команду в терминале.
  • Макросы и горячие клавиши — нажатие физической кнопки на устройстве вызывает сочетание клавиш в приложении.
  • Тестирование интерфейсов — автоматизированная имитация пользовательского ввода без участия человека.
  • Специализированные устройства ввода — педали, джойстики или адаптивные клавиатуры на базе Arduino.

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

  • Вызывайте Keyboard.begin() один раз в setup() — до любых других вызовов библиотеки Keyboard.
  • Если ваша ОС настроена на раскладку, отличную от en_US, передайте нужный layout явно, иначе символы будут отображаться неправильно.
  • После подключения платы к компьютеру дайте системе секунду-другую на распознавание устройства, прежде чем начинать отправку нажатий — иначе первые символы могут потеряться.
  • Эмуляция клавиатуры работает параллельно с Serial: вы можете одновременно выводить отладочные сообщения через Serial.print() и отправлять нажатия клавиш.
  • Если плата начала бесконтрольно «печатать» символы и вы не успеваете загрузить новый скетч, зажмите кнопку Reset в момент начала загрузки — это даст IDE время подключиться до запуска loop().