Metadata-Version: 2.1
Name: arduino-hid-emulator
Version: 0.1.0
Summary: Python module for controlling an Arduino-based HID emulator for keyboard and mouse.
Home-page: https://github.com/mvandrew/arduino-hid-emulator
Author: Andrey Mishchenko
Author-email: msav@msav.ru
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pyserial>=3.5
Requires-Dist: pyautogui>=0.9.53
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: mock>=5.0; extra == "dev"

# Arduino HID Emulator

`arduino-hid-emulator` вЂ” СЌС‚Рѕ Python-Р±РёР±Р»РёРѕС‚РµРєР°, РїСЂРµРґРЅР°Р·РЅР°С‡РµРЅРЅР°СЏ РґР»СЏ СѓРїСЂР°РІР»РµРЅРёСЏ HID-СѓСЃС‚СЂРѕР№СЃС‚РІР°РјРё (РєР»Р°РІРёР°С‚СѓСЂРѕР№ Рё РјС‹С€СЊСЋ), СЌРјСѓР»РёСЂРѕРІР°РЅРЅС‹РјРё РЅР° Р±Р°Р·Рµ Arduino. Р‘РёР±Р»РёРѕС‚РµРєР° РїРѕР·РІРѕР»СЏРµС‚ РѕС‚РїСЂР°РІР»СЏС‚СЊ РєРѕРјР°РЅРґС‹ РґР»СЏ СѓРїСЂР°РІР»РµРЅРёСЏ РґРІРёР¶РµРЅРёРµРј РјС‹С€Рё, РЅР°Р¶Р°С‚РёСЏРјРё РєР»Р°РІРёС€ Рё РєРЅРѕРїРѕРє РјС‹С€Рё, Р° С‚Р°РєР¶Рµ РІС‹РїРѕР»РЅСЏС‚СЊ РєР°Р»РёР±СЂРѕРІРєСѓ РґР»СЏ С‚РѕС‡РЅРѕРіРѕ РїРµСЂРµРјРµС‰РµРЅРёСЏ.

## Р’РѕР·РјРѕР¶РЅРѕСЃС‚Рё

- **РЈРїСЂР°РІР»РµРЅРёРµ РјС‹С€СЊСЋ**:
  - РџСЂСЏРјРѕР»РёРЅРµР№РЅРѕРµ РїРµСЂРµРјРµС‰РµРЅРёРµ РЅР° Р·Р°РґР°РЅРЅРѕРµ СЃРјРµС‰РµРЅРёРµ.
  - РџР»Р°РІРЅРѕРµ РґРІРёР¶РµРЅРёРµ РјС‹С€Рё СЃ РёСЃРїРѕР»СЊР·РѕРІР°РЅРёРµРј РєСЂРёРІРѕР№ Р‘РµР·СЊРµ.
  - РќР°Р¶Р°С‚РёРµ, РѕС‚РїСѓСЃРєР°РЅРёРµ Рё РєР»РёРє РєРЅРѕРїРѕРє РјС‹С€Рё.

- **РЈРїСЂР°РІР»РµРЅРёРµ РєР»Р°РІРёР°С‚СѓСЂРѕР№**:
  - РќР°Р¶Р°С‚РёРµ Рё РѕС‚РїСѓСЃРєР°РЅРёРµ РєР»Р°РІРёС€.
  - РЎРёРјСѓР»СЏС†РёСЏ РєРѕРјР±РёРЅР°С†РёР№ РєР»Р°РІРёС€ (РЅР°РїСЂРёРјРµСЂ, `Ctrl + C`).

- **РљР°Р»РёР±СЂРѕРІРєР°**:
  - РђРІС‚РѕРјР°С‚РёС‡РµСЃРєР°СЏ РєР°Р»РёР±СЂРѕРІРєР° РєРѕСЌС„С„РёС†РёРµРЅС‚РѕРІ РїРµСЂРµРјРµС‰РµРЅРёСЏ РјС‹С€Рё РґР»СЏ РѕР±РµСЃРїРµС‡РµРЅРёСЏ С‚РѕС‡РЅРѕРіРѕ РїРѕР·РёС†РёРѕРЅРёСЂРѕРІР°РЅРёСЏ.

- **Р“РёР±РєРѕСЃС‚СЊ**:
  - Р’РѕР·РјРѕР¶РЅРѕСЃС‚СЊ РЅР°СЃС‚СЂРѕР№РєРё РјРёРЅРёРјР°Р»СЊРЅРѕР№ Рё РјР°РєСЃРёРјР°Р»СЊРЅРѕР№ РґР»РёС‚РµР»СЊРЅРѕСЃС‚Рё РїРµСЂРµРјРµС‰РµРЅРёСЏ РјС‹С€Рё.
  - Р›С‘РіРєРѕРµ РїРѕРґРєР»СЋС‡РµРЅРёРµ Рё СѓРїСЂР°РІР»РµРЅРёРµ С‡РµСЂРµР· РїРѕСЃР»РµРґРѕРІР°С‚РµР»СЊРЅС‹Р№ РїРѕСЂС‚.

## РЈСЃС‚Р°РЅРѕРІРєР°

РЈР±РµРґРёС‚РµСЃСЊ, С‡С‚Рѕ Python 3.x СѓСЃС‚Р°РЅРѕРІР»РµРЅ РІ РІР°С€РµР№ СЃРёСЃС‚РµРјРµ, Р° С‚Р°РєР¶Рµ СѓСЃС‚Р°РЅРѕРІРёС‚Рµ Р±РёР±Р»РёРѕС‚РµРєСѓ СЃ РїРѕРјРѕС‰СЊСЋ `pip`:

```bash
pip install arduino-hid-emulator
```

## РўСЂРµР±РѕРІР°РЅРёСЏ

- Arduino СЃ РїРѕРґРґРµСЂР¶РєРѕР№ HID (РЅР°РїСЂРёРјРµСЂ, Arduino Pro Micro РёР»Рё Leonardo).
- Р—Р°РіСЂСѓР·РєР° РїСЂРѕРіСЂР°РјРјС‹ РґР»СЏ Arduino (`hid_emulator.ino`), РєРѕС‚РѕСЂР°СЏ РЅР°С…РѕРґРёС‚СЃСЏ РІ РїР°РїРєРµ `arduino/hid_emulator`.
- Р‘РёР±Р»РёРѕС‚РµРєРё Python:
  - `pyserial`
  - `pyautogui`

## Р‘С‹СЃС‚СЂС‹Р№ СЃС‚Р°СЂС‚

1. **РџРѕРґРєР»СЋС‡РёС‚Рµ Arduino**:
   Р—Р°РіСЂСѓР·РёС‚Рµ СЃРєРµС‚С‡ `hid_emulator.ino` РЅР° РІР°С€Сѓ РїР»Р°С‚Сѓ Arduino, РїРѕРґРєР»СЋС‡РёС‚Рµ РµС‘ Рє РєРѕРјРїСЊСЋС‚РµСЂСѓ С‡РµСЂРµР· USB.

2. **РЎРѕР·РґР°Р№С‚Рµ РѕР±СЉРµРєС‚ РїРѕРґРєР»СЋС‡РµРЅРёСЏ**:
   ```python
   from arduino_hid_emulator.arduino import ArduinoConnection
   from arduino_hid_emulator.mouse import MouseController

   arduino = ArduinoConnection()
   mouse = MouseController(arduino)
   ```

3. **РџСЂРёРјРµСЂ РёСЃРїРѕР»СЊР·РѕРІР°РЅРёСЏ**:
   ```python
   # РџРµСЂРµРјРµС‰РµРЅРёРµ РјС‹С€Рё РЅР° Р·Р°РґР°РЅРЅРѕРµ СЃРјРµС‰РµРЅРёРµ
   mouse.move_direct(100, 100)

   # РџР»Р°РІРЅРѕРµ РїРµСЂРµРјРµС‰РµРЅРёРµ РјС‹С€Рё Рє СѓРєР°Р·Р°РЅРЅРѕР№ С‚РѕС‡РєРµ
   mouse.mouse_move(500, 500, duration_min=1000, duration_max=2000)

   # РљР»РёРє Р»РµРІРѕР№ РєРЅРѕРїРєРѕР№ РјС‹С€Рё
   mouse.click("left")
   ```

4. **Р—Р°РєСЂРѕР№С‚Рµ СЃРѕРµРґРёРЅРµРЅРёРµ**:
   ```python
   arduino.close()
   ```

## РљР°Р»РёР±СЂРѕРІРєР°

Р”Р»СЏ С‚РѕС‡РЅРѕРіРѕ РїРµСЂРµРјРµС‰РµРЅРёСЏ СЂРµРєРѕРјРµРЅРґСѓРµС‚СЃСЏ РІС‹РїРѕР»РЅРёС‚СЊ РєР°Р»РёР±СЂРѕРІРєСѓ:
```python
mouse.calibrate()
```
РљР°Р»РёР±СЂРѕРІРєР° РІС‹РїРѕР»РЅСЏРµС‚СЃСЏ Р°РІС‚РѕРјР°С‚РёС‡РµСЃРєРё, РЅР°СЃС‚СЂР°РёРІР°СЏ РєРѕСЌС„С„РёС†РёРµРЅС‚С‹ РїРµСЂРµРјРµС‰РµРЅРёСЏ РјС‹С€Рё.

## РЎС‚СЂСѓРєС‚СѓСЂР° РїСЂРѕРµРєС‚Р°

- `arduino_hid_emulator/` вЂ” РёСЃС…РѕРґРЅС‹Р№ РєРѕРґ Р±РёР±Р»РёРѕС‚РµРєРё.
- `arduino/hid_emulator/` вЂ” СЃРєРµС‚С‡ РґР»СЏ Р·Р°РіСЂСѓР·РєРё РІ Arduino.
- `examples/` вЂ” РїСЂРёРјРµСЂС‹ РёСЃРїРѕР»СЊР·РѕРІР°РЅРёСЏ.

## Р›РёС†РµРЅР·РёСЏ

РџСЂРѕРµРєС‚ СЂР°СЃРїСЂРѕСЃС‚СЂР°РЅСЏРµС‚СЃСЏ РїРѕРґ Р»РёС†РµРЅР·РёРµР№ [GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.html). Р’С‹ РјРѕР¶РµС‚Рµ СЃРІРѕР±РѕРґРЅРѕ РёСЃРїРѕР»СЊР·РѕРІР°С‚СЊ, РјРѕРґРёС„РёС†РёСЂРѕРІР°С‚СЊ Рё СЂР°СЃРїСЂРѕСЃС‚СЂР°РЅСЏС‚СЊ Р±РёР±Р»РёРѕС‚РµРєСѓ РІ СЃРѕРѕС‚РІРµС‚СЃС‚РІРёРё СЃ РµС‘ СѓСЃР»РѕРІРёСЏРјРё.

## Р’РєР»Р°Рґ РІ РїСЂРѕРµРєС‚

Р•СЃР»Рё РІС‹ С…РѕС‚РёС‚Рµ РїСЂРµРґР»РѕР¶РёС‚СЊ СѓР»СѓС‡С€РµРЅРёСЏ, СЃРѕРѕР±С‰РёС‚СЊ РѕР± РѕС€РёР±РєР°С… РёР»Рё РІРЅРµСЃС‚Рё СЃРІРѕР№ РІРєР»Р°Рґ, СЃРѕР·РґР°Р№С‚Рµ pull request РёР»Рё РѕС‚РєСЂРѕР№С‚Рµ issue РІ [СЂРµРїРѕР·РёС‚РѕСЂРёРё РїСЂРѕРµРєС‚Р°](https://github.com/mvandrew/arduino-hid-emulator).

---
**РџСЂРёРјРµС‡Р°РЅРёРµ**: РЈР±РµРґРёС‚РµСЃСЊ, С‡С‚Рѕ СЃРєРµС‚С‡ РґР»СЏ Arduino Р·Р°РіСЂСѓР¶РµРЅ Рё СѓСЃС‚СЂРѕР№СЃС‚РІРѕ РїРѕРґРґРµСЂР¶РёРІР°РµС‚ HID.
