キーボード/マウス エミュレーターを macOS で操作する
初稿: 2024-05-05
小松弘幸 (@komatsuh:bsky, @komatsuh:twitter)
「キーボード/マウス エミュレーター」というデバイスを macOS の Python で動作させる方法のメモです。
キーボード/マウス エミュレーター
「キーボード/マウス エミュレーター」は、USB キーボードおよび USB マウスとして動作する端末です。一般的なキーボードやマウスとの違い、プログラムによってキー入力やマウス操作を制御できます。
そのため、操作の自動化や、条件によってのキー入力などをプログラムによって実現できるようになります。
制御側が microUSB、使用側が USB-A の端子になっています。
今回の場合、macOS から操作して、他デバイスの外付けキーボードとして制御したいので、下記の接続になります。
- macOS と microUSB を接続する
- 他デバイスと USB-A を接続する
デバイスの解説書およびサンプルコードと仕様書
デバイスの制作者の方が、解説書にくわえてサンプルコードと仕様書を提供してくださっておりとても参考になります。
デバイスの構成 (参考)
デバイスには 2 つのチップが使われていました。
- CH340: USB でシリアル通信を行うチップ (microUSB 側)
- CH9329: USB HID デバイスとして動作し、シリアル通信で制御を受け付ける (USB-A 側)
macOS の Python で操作する
Python で書かれたサンプルコードを macOS で動作させるには若干の変更が必要でした。この記事の執筆時点での環境は次の通りです。
- macOS 14.4.1 (Sonoma)
- Python 3.11.4
pyserial をインストールする
サンプルコードでは serial
をインポートしています。
import sys,time,serial
そのため、macOS では pyserial
を追加でインストールします。
python3 -m pip install pyserial
デバイス ID の指定
サンプルコードでは後半部分 176 行目で、デバイス ID として COM24
を指定しています。
drv=CH9329('COM24',9600,1920,1080)
macOS では /dev/tty.usbserial-1234567
という形式で指定します。1234567
の部分は環境によって異なりますので、 ls
などで確認してください。
ls /dev/tty.usbserial-*
drv=CH9329('/dev/tty.usbserial-1234567',9600,1920,1080) # COM24 から書き換える
制御コードを送信する
サンプルコード内では、制御コードを送信する部分はコメントアウトされています。適宜コメントを外せば、該当する制御コードを送信できます。
drv.print('#Abc') # ’#Abc' の4文字をキー入力として送信する
# drv.write('#')
# drv.push(0x02,0x04)
# drv.moveabs(100,100)
# drv.moveabs(968,500)
# ...
これで macOS から「キーボード/マウス エミュレーター」の操作を確認できます。
さらなる操作については、サンプルコードや仕様書が参考になります。
まとめ
キーボードやマウスをプログラムで制御できるようになると、マクロパッドや手順の自動化などで便利に使えるようになります。
まずはサンプルコードからはじめて、いろいろな面白いデバイスに発展していけたらいいですね。
Discussion