Эмуляция клавиатуры и мыши HID на Digispark и Arduino Leonardo

30 октября 2022


Всем привет, сегодня разберем как эмулировать клавиатуру и мышь 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. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: