Arduino:Примеры/KeyboardController
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Управление клавиатурой[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();
}