Arduino:Примеры/KeyboardController

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление клавиатурой[1]

Плата Arduino Due способна выступать в качестве USB-хоста для периферийных устройств вроде клавиатуры, подключенной к порту SerialUSB. Данный пример демонстрирует использование класса KeyboardController из библиотеки USBHost.

Необходимое оборудование

  • Плата Arduino Due
  • USB-клавиатура (примечание: клавиатуры, подключаемые через встроенный USB-хаб, работать не будут; среди таких клавиатур, к примеру, модели от Apple)

Код

/*
 Управление клавиатурой

 Демонстрирует использование USB-клавиатуры, подключенной к USB-контроллеру
 на плате Arduino Due.

 Создан Кристианом Мэгли (Cristian Maglie) 8 октября 2012 года. 

 http://arduino.cc/en/Tutorial/MouseController
 */

// подключаем библиотеку KeyboardController:
#include <KeyboardController.h>

// инициализируем USB-контроллер:
USBHost usb;

// подсоединяем к USB-контроллеру контроллер для клавиатуры:
KeyboardController keyboard(usb);

// функция, «перехватывающая» нажатия на клавиши:
void keyPressed() {
  Serial.print("Pressed:  ");  //  "Нажата клавиша: "
  printKey();
}

// функция, «перехватывающая» отпускания клавиш:
void keyReleased() {
  Serial.print("Released: ");  //  "Отпущена клавиша: "
  printKey();
}

void printKey() {
  // функция getOemKey() возвращает OEM-номер, привязанный к клавише: 
  Serial.print(" key:");  //  " клавиша: "
  Serial.print(keyboard.getOemKey());

  // функция getModifiers() возвращает число, обозначающее клавишу-модификатор: 
  int mod = keyboard.getModifiers();
  Serial.print(" mod:");  //  " модификатор: "
  Serial.print(mod);

  Serial.print(" => ");

  if (mod & LeftCtrl)
    Serial.print("L-Ctrl ");  //  " Левый Ctrl "
  if (mod & LeftShift)
    Serial.print("L-Shift ");  //  " Левый Shift "
  if (mod & Alt)
    Serial.print("Alt ");
  if (mod & LeftCmd)
    Serial.print("L-Cmd ");  //  " Левый Cmd "
  if (mod & RightCtrl)
    Serial.print("R-Ctrl ");  //  " Правый Ctrl "
  if (mod & RightShift)
    Serial.print("R-Shift ");  //  " Правый Shift "
  if (mod & AltGr)
    Serial.print("AltGr ");
  if (mod & RightCmd)
    Serial.print("R-Cmd ");  //  " Правый Cmd "

  // функция getKey() возвращает ASCII-значение OEM-клавиши, объединенной с модификаторами: 
  Serial.write(keyboard.getKey());
  Serial.println();
}

void setup()
{
  Serial.begin(115200);
  Serial.println("Program started");   //  "Скетч запущен"
  delay(200);
}

void loop()
{
  // обрабатываем USB-задачи:
  usb.Task();
}

См.также

Внешние ссылки