Эмуляция клавиатуры

Функции эмуляции клавиатуры просты в использовании. Они входят в состав стандартной библиотеки языка, поэтому для доступа к ним не требуется подключать дополнительные библиотеки. Чтобы включить режим эмуляции клавиатуры, добавьте в функцию setup следующую команду:

Keyboard.begin();

Чтобы заставить Arduino печатать что-нибудь, можно воспользоваться командами print и println, и переданный им текст появится в позиции текстового курсора:

Keyboard.println("It was the best of times.");

Чтобы сымитировать нажатие клавиш-модификаторов, например ввести комбинацию CTRL+C, используйте команду press:

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('x');

delay(100);

Keyboard.releasrAll();

Команда press имеет односимвольный параметр, в котором ей можно передавать любые обычные символы или предопределенные константы, такие как KEY_LEFT_CTRL. После вызова команды press плата будет имитировать удержание клавиши в нажатом состоянии, пока не будет вызвана команда releaseAll. Полный список специальных клавиш можно найти по адресу http://arduino.cc/en/Reference/KeyboardModifiers.

ПРИМЕЧАНИЕ

При использовании функций эмуляции клавиатуры и мыши можно столкнуться со сложностями при программировании платы, так как она будет пытаться вводить текст, пока вы пытаетесь запрограммировать ее. Чтобы преодолеть эту проблему, примените следующий трюк: нажмите и удерживайте нажатой кнопку сброса Reset и отпустите ее, только когда в строке состояния Arduino IDE появится сообщение «uploading» («загрузка»).

Пример эмуляции клавиатуры

Следующий пример автоматически вводит текст по вашему выбору (например, пароль) после каждого сброса платы Arduino:

// sketch_11_01_keyboard

char phrase[] = "secretpassword";

void setup()

{

  Keyboard.begin();

  delay(5000);

  Keyboard.println(phrase);

}

void loop()

{

}

Этот пример можно сделать эффективнее, если активировать ввод нажатием внешней клавиши: если вы пользуетесь компьютером Mac, операционная система будет думать, что в момент сброса платы к компьютеру подключается новая клавиатура, и выведет системный диалог, который нужно успеть закрыть до того, как плата напечатает текст.

Эмуляция мыши

Эмуляция мыши реализуется с применением того же шаблона, что и эмуляция клавиатуры. Вообще говоря, нет никаких причин, препятствующих эмуляции обоих устройств ввода в одном скетче.

Чтобы запустить эмуляцию, прежде всего следует выполнить команду

Mouse.begin();

Управление указателем мыши осуществляется командой Mouse.move. Она имеет три параметра: смещение по осям x и y и поворот колесика. Все три параметра измеряются в пикселах. Эти значения могут быть положительными (смещение указателя вправо или вниз) или отрицательными (смещение указателя влево или вверх). Смещения откладываются относительно текущей позиции указателя, а так как нет никакой возможности указать абсолютные координаты указателя, эта команда лишь имитирует поведение мыши, перемещающей указатель, но не управляет самим указателем.

Сымитировать щелчок мышью можно с помощью команды click. Без параметров эта команда имитирует щелчок левой кнопкой мыши. При желании ей можно передать аргумент MOUSE_RIGHT или MOUSE_MIDDLE.

Для управления длительностью щелчка можно использовать команды Mouse.press и Mouse.release. Команда Mouse.press принимает те же необязательные аргументы, что и команда Mouse.click. Эти две команды могут пригодиться, например, чтобы заставить свою «мышь» на основе Arduino выполнять щелчок при изменении состояния цифрового входа на плате. Кроме того, с их помощью можно сымитировать двойной или даже тройной щелчок.

Пример эмуляции мыши

Следующий пример перемещает указатель мыши по экрану в случайных направлениях. Чтобы прервать программу и восстановить управление компьютером, нажмите и удерживайте кнопку сброса Reset или просто отсоедините плату от компьютера.

// sketch_11_02_mouse

void setup()

{

  Mouse.begin();

}

void loop()

}

  int x=random(61)-30;

  int y=random(61)-30;

  Mouse.move(x, y);

  delay(50);

}

Программирование хоста USB

Перейти на страницу:

Похожие книги