Skip to content
forked from GyverLibs/EasyHID

Библиотека программного USB клавиатуры и мыши для Arduino Nano/UNO/Mega и прочих

License

Notifications You must be signed in to change notification settings

alakeng/EasyHID

 
 

Repository files navigation

Foo Foo Foo

EasyHID

Библиотека для программной реализации USB клавиатуры и мышки на ATmega328p - (Arduino Nano/UNO/Mini/Pro Mini)

  • Библиотека предназначена ТОЛЬКО для плат на базе ATmega328p, работающих на частоте 16 МГц
  • В текущей реализации не работают системные клавиши (TAB, CAPS, SHIFT, CTRL, WIN, ALT)
  • Библиотека подходит для:
    • Печати текста
    • Управления мультимедиа
    • Удалённого выключения ПК

Совместимость

AVR ATmega328 16 MHz

Содержание

Установка

  • БИБЛИОТЕКА НЕДОСТУПНА В МЕНЕДЖЕРЕ БИБЛИОТЕК
  • Скачать библиотеку .zip архивом для ручной установки:
    • Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
    • Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
    • Распаковать и положить в Документы/Arduino/libraries/
    • (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
  • Читай более подробную инструкцию по установке библиотек здесь

Подключение

scheme

Использование

HID

HID.begin();        // Инициализация шины USB
HID.tick();         // Поллинг шины (вызывать не реже чем раз в 10мс!)
HID.isConnected();  // (bool) Статус шины
HID.isNumLock();    // (bool) проверка numLock
HID.isCapsLock();   // (bool) проверка capsLock
HID.isScrollLock(); // (bool) проверка scrollLock

Mouse

Mouse.move(int8_t x, int8_t y);         // Двигаем курсор
Mouse.click(uint8_t btn = MOUSE_LEFT);  // Кликаем на клавишу
Mouse.press(uint8_t btn = MOUSE_LEFT);  // Зажимаем клавишу
Mouse.releaseAll();                     // Отпускаем все

// КОНСТАНТЫ КНОПОК
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_MIDDLE

Keyboard

Keyboard.releaseAll(void);                                      // Отпускаем все

Keyboard.press(uint8_t key);                                    // Жмем 1 клавишу
Keyboard.press(uint8_t key_0, uint8_t key_1);                   // Жмем 2 клавиши
Keyboard.press(uint8_t key_0, uint8_t key_1, uint8_t key_2);    // Жмем 3 клавиши

Keyboard.click(uint8_t key);                                    // Кликаем 1 клавишу
Keyboard.click(uint8_t key_0, uint8_t key_1);                   // Кликаем 2 клавиши
Keyboard.click(uint8_t key_0, uint8_t key_1, uint8_t key_2);    // Кликаем 3 клавиши

Keyboard.clickMultimediaKey(uint8_t key);                       // Кликаем мультимедиа клавишу
Keyboard.clickSystemKey(uint8_t key);                           // Кликаем системную клавишу
КОНСТАНТЫ КЛАВИШ
// для сочетаний
KEY_MOD_LEFT_CONTROL
KEY_MOD_LEFT_SHIFT
KEY_MOD_LEFT_ALT
KEY_MOD_LEFT_GUI
KEY_MOD_RIGHT_CONTROL
KEY_MOD_RIGHT_SHIFT
KEY_MOD_RIGHT_ALT
KEY_MOD_RIGHT_GUI

// обычные
KEY_LEFT_CONTROL
KEY_LEFT_SHIFT
KEY_LEFT_ALT
KEY_LEFT_GUI
KEY_RIGHT_CONTROL
KEY_RIGHT_SHIFT
KEY_RIGHT_ALT
KEY_RIGHT_GUI

KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_0
KEY_A
KEY_B
KEY_C
KEY_D
KEY_E
KEY_F
KEY_G
KEY_H
KEY_I
KEY_J
KEY_K
KEY_L
KEY_M
KEY_N
KEY_O
KEY_P
KEY_Q
KEY_R
KEY_S
KEY_T
KEY_U
KEY_V
KEY_W
KEY_X
KEY_Y
KEY_Z
KEY_COMMA
KEY_PERIOD
KEY_MINUS
KEY_EQUAL
KEY_BACKSLASH
KEY_SQBRAK_LEFT
KEY_SQBRAK_RIGHT
KEY_SLASH
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_F12
KEY_APP
KEY_ENTER
KEY_BACKSPACE
KEY_ESC
KEY_TAB
KEY_SPACE
KEY_INSERT
KEY_HOME
KEY_PAGE_UP
KEY_DELETE
KEY_END
KEY_PAGE_DOWN
KEY_PRINTSCREEN
KEY_ARROW_RIGHT
KEY_ARROW_LEFT
KEY_ARROW_DOWN
KEY_ARROW_UP

// multimedia
KEY_VOL_UP
KEY_VOL_DOWN
KEY_SCAN_NEXT_TRACK
KEY_SCAN_PREV_TRACK
KEY_STOP
KEY_PLAYPAUSE
KEY_MUTE
KEY_BASSBOOST
KEY_LOUDNESS
KEY_KB_EXECUTE
KEY_KB_HELP
KEY_KB_MENU
KEY_KB_SELECT
KEY_KB_STOP
KEY_KB_AGAIN
KEY_KB_UNDO
KEY_KB_CUT
KEY_KB_COPY
KEY_KB_PASTE
KEY_KB_FIND

// system
KEY_POWER
KEY_SLEEP
KEY_WAKE

Пример

Клавиатура

#include <EasyHID.h>

void setup() {
  HID.begin();                          // Инициализация USB
}

void loop() {
  static uint32_t timer = millis();     // Миллис - таймер (НЕ DELAY!!!)
  if (millis() - timer >= 1000) {       // Каждые 1000 мс
    timer = millis();

    Keyboard.press(KEY_1);              // Зажимаем клавишу '1'
    Keyboard.releaseAll();              // Отпускаем все клавиши
    Keyboard.click(KEY_SPACE);          // Кликаем пробел (press + releaseAll)
    Keyboard.write('-');                // Выводим тире
    Keyboard.println(" Hello world!");  // Печать в println
  }

  HID.tick();   // Вызываем тикер не реже чем каждые 10 мс!
}

Мышь

#include <EasyHID.h>

void setup() {
  HID.begin();                          // Инициализация USB
}

void loop() {
  static uint8_t count = 0;             // Направление
  static uint32_t timer = millis();     // Миллис - таймер (НЕ DELAY!!!)
  if (millis() - timer >= 1000) {       // Каждые 1000 мс
    timer = millis();
    switch (count) {
      case 0: Mouse.move(100, 0);  break; // Двигаем мышкой на X-Y пикс.
      case 1: Mouse.move(0, 100);  break;
      case 2: Mouse.move(-100, 0); break;
      case 3: Mouse.move(0, -100); break;
    }
    // Mouse.click();                   // Можно кликнуть ЛКМ
    // Mouse.click(MOUSE_MIDDLE);       // Или RIGHT, LEFT, MIDDLE
    if (++count > 3) count = 0;         // Циклический сдвиг от 0 до 3
  }

  HID.tick();   // Вызываем тикер не реже чем каждые 10 мс!
}

Версии

  • v1.0

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту [email protected]
Библиотека открыта для доработки и ваших Pull Request'ов!

About

Библиотека программного USB клавиатуры и мыши для Arduino Nano/UNO/Mega и прочих

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 62.0%
  • Assembly 32.4%
  • C++ 5.6%