
Всем привет, сегодня разберем как эмулировать клавиатуру и мышь c помощью плат Arduino Leonardo и Digispark.
Сначала разберем эмуляцию клавиатуры и мыши с помощью digispark а потом с arduino leonardo.
Если вы работаете с Digispark-ом впервые, рекомендую прочесть нашу статью. После того как вы установили необходимые драйвера и платы в arduino ide можно переходить к следующему шагу.
Для работы с клавиатурой и мышью подключаем библиотеку DigiKeyboard.h или DigiMouse.h:

Загружаем... Digispark имеет особенность: его не надо подключать как обычные платы сразу и выбирать порт. После нажатия на кнопку загрузки, ждем пока скомпилируется и после отображения сообщения:

Вставляем Digispark в любой разъем и ждем загрузки, она происходит почти мгновенно. В случае успеха будет выведено:
> Starting the user app... running: 100 % complete >> Micronucleus done.Thank you!
После этого выполниться программа, в данном случае наберется: "Hello Digispark!" Так как будто это набрано на клавиатуре, только очень быстро.
Для демонстрации работы с мышью загрузим следующий скетч:
#include <DigiMouse.h>
void setup() {
DigiMouse.begin(); //Инциализация мыши
}
void loop() {
DigiMouse.moveY(10); //Сместить мышь на 10 px по Y
DigiMouse.delay(500); //Задержка
DigiMouse.moveX(20); //Сместить мышь на 20 px по X
DigiMouse.delay(500);
DigiMouse.scroll(5); //Прокрутка
DigiMouse.delay(500);
DigiMouse.move(X, Y, scroll) //Также можно использовать это
DigiMouse.delay(500);
DigiMouse.setButtons(0); //Отпустить все
DigiMouse.delay(500);
DigiMouse.rightClick(); //Клик правой кнопкой мыши
DigiMouse.delay(500);
DigiMouse.leftClick(); //Клик левой кнопкой мыши
DigiMouse.delay(500);
DigiMouse.middleClick(); //Клик средней кнопкой мыши
DigiMouse.delay(500);
}
С помощью этого базового набора команд можно создавать сценарии для автоматизации, например, для скачивания и установки однотипного программного обеспечения на несколько компьютеров.
Для Arduino Leonardo никаких доп. установок плат и библиотек не нужно, она установлена по умолчанию в Arduino IDE.
Для примера я написал скетч, который открывает сайт на полный экран в браузере Chrome:
#include "Keyboard.h"
void setup() {
Keyboard.begin(); //Инициализация
}
void loop() {
Keyboard.press(KEY_LEFT_GUI); //Кнопка win
delay(500);
Keyboard.press('r'); //Win+R
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.println("cmd"); // вызываем командную строку
pressEnter();
delay(500);
Keyboard.print("starrt chrome https://amperkot.ru/"); //Открываем браузер через cmd
pressEnter();
Keyboard.print("exit");
pressEnter();
delay(1000);
Keyboard.press(KEY_F11); //На весь экран
delay(500);
Keyboard.release(KEY_F11);
Keyboard.releaseAll(); //Отпустить все
Keyboard.end();
}
void pressEnter() {
Keyboard.press(KEY_RETURN);
delay(50);
Keyboard.release(KEY_RETURN);
}
Загружаем как обычно. Profit!
Для быстрого написания подобных скетчей, можно воспользоваться онлайн-конвертером от SpaceHun. Более подробную информацию по этому проекту можно найти тут. В этом конвертере команды указываются в таком формате:
DELAY 1000 GUI r STRING start chrome https://amperkot.ru/ ENTER
Если подключить кнопки к arduino и подредактировать скетч, можно сделать самодельную клавиатуру!
Также вместо большой leonardo можно использовать arduino pro micro. Это самая маленькая плата, также поддерживает HID.

Всем спасибо за внимание, удачи в ваших проектах!
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Комментарии