KeyPresser Hardware — Arduinoで実現する自動キーボード/マウス入力装置

Tool

概要

KeyPresser Hardwareは、Arduino Leonardoボードを使ってPC上での入力(キーボード/マウス)をハードウェア的にエミュレートするプロジェクトです。クライアント側はQtで書かれたデスクトップアプリで、デバイス検出、操作スクリプトの作成、開始・停止スケジュール設定、対象ウィンドウの指定などを行います。Arduino側のファームウェアはシリアル経由で受け取った指示を解釈し、HID機能を使って実際の入力を生成します。LeonardoのHID対応を活かしたシンプルで拡張性の高い自動化ソリューションです。

GitHub

リポジトリの統計情報

  • スター数: 16
  • フォーク数: 3
  • ウォッチャー数: 16
  • コミット数: 6
  • ファイル数: 18
  • メインの言語: C++

主な特徴

  • Arduino Leonardoを用いたUSB HID(キーボード/マウス)エミュレーションによる物理的自動入力
  • Qtベースのクライアントアプリでデバイス管理・スクリプト作成・タイミング制御が可能
  • シリアル通信によるコマンド駆動アーキテクチャでPC⇄デバイス間の柔軟な指示伝達
  • ウィンドウ指定や文字列入力、複合キー対応など実用的な操作をサポート

技術的なポイント

本プロジェクトの技術的核は「PC側(Qt/C++)とArduino側(ファームウェア)の分離」と「LeonardoのHID機能活用」にあります。クライアントはQtフレームワークで組まれており、クロスプラットフォームなUIとシリアルポート操作を提供します。Arduino側はLeonardo専用に設計されており、USBのHIDプロファイルを通じてキーボード/マウスイベントを生成できる点が強みです。シリアル通信プロトコルはコマンドベースで、例えば「押下」「離す」「文字列送信」「遅延」などを簡潔なメッセージで伝達します。これによりPC側で複雑なスクリプトを作成し、デバイスはその指示に忠実に従うだけで実装が軽量になります。

コード構成面では、ArduinoController.hppなどのヘッダに制御ロジックのインターフェースが定義され、.proファイルでQtプロジェクトが管理されています。リソース(KeyPresser_resource.rc)やライセンスファイルも含まれ、ビルドや配布に必要な要素が揃っています。注意点としては、HIDエミュレーションはボード(Leonardo等)が対応している必要があり、プラットフォームごとのシリアルポート識別(VID/PID)やドライバの依存性、OS側のセキュリティ制約(特にmacOSや一部Windows環境)があるため、配布先での動作確認とドキュメント整備が望まれます。将来的な拡張としては、より高度なスクリプト言語やネットワーク経由のコマンド受信、複数デバイスの同時制御などが考えられます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • Arduino: dir (Arduino用スケッチ、HID制御ロジックを含む)
  • ArduinoController.hpp: file (クライアント側でArduinoを制御するインターフェース定義)
  • KeyPresserHardware.pro: file (Qtプロジェクトファイル)
  • KeyPresser_resource.rc: file (Windowsリソース定義)
  • LICENSE: file (ライセンス情報)

…他 13 ファイル

各ファイルの簡単な役割:

  • Arduinoディレクトリ:Leonardoに書き込むファームウェア(シリアル受信→HID出力)
  • Qtクライアント:デバイス検出、コマンド生成、タスクスケジュール、UI表示
  • プロジェクトファイル(.pro):Qtビルド設定。必要なライブラリやビルドターゲットが記述
  • リソースファイル:アイコンやアプリ情報を格納(Windows版向け)

まとめ

ArduinoとQtを組み合わせた実践的な自動入力ソリューション。学習用や小規模自動化に適する。

リポジトリ情報:

READMEの抜粋:

KeyPresser Hardware

KeyPresser Hardware 是一款功能强大的自动化操作工具,通过 Arduino 硬件设备实现键盘模拟、鼠标操作等自动化功能。该项目由两部分组成:客户端应用程序和 Arduino 固件。

KeyPresser Hardware

项目组成

1. 客户端应用程序

客户端是使用 Qt 框架开发的桌面应用程序,提供用户界面和控制逻辑,用于配置和控制 Arduino 设备执行自动化操作。

2. Arduino 固件

Arduino 固件需要烧录到 Arduino Leonardo 开发板中,负责接收来自客户端的命令并执行实际的键盘和鼠标操作。

功能特点

核心功能

  • Arduino 设备自动检测:自动识别并连接 Arduino Leonardo 设备
  • 键盘模拟:支持单个按键、组合键、字符串输入
  • 定时任务:设置定时开始和结束的自动化任务
  • **窗口选择…