某ゲームでアイテムを交換する作業が面倒になってきたので
キーボード操作を自動化したいと思った。
まず思いついたのは、手元にあった
サンワサプライ製のプログラマブルテンキー NT-19UH2BK。
久しぶりに引っぱりだして確認したところ、これは Ctrl + C のような同時押しには対応しているが、
ウェイトをはさみながら複数のキーを順次入力する用途には対応していなかった。
次に AZ-Macro
というマクロ機能のある自作 Bluetooth キーボードキットがあることを思い出した。
これは ESP32 で作られていて、
ファームウェアのソースコードも公開
されている。
手持ちの M5StickC なら同じ ESP32 が内蔵されており
Bluetooth にも対応しているため、目的を実現できるのではないか?
ということで、M5StickC を Bluetooth キーボードとして PC へ接続し操作を自動化する。
Arduino IDE へ ESP32-BLE-Keyboard をインストール
まずは M5StickC を Bluetooth キーボードとして使うためのライブラリを
Arduino IDE へインストールする。
- Releases · T-vK/ESP32-BLE-Keyboard
から ESP32-BLE-Keyboard.zip をダウンロード
- Arduino IDE のメニューで [スケッチ] - [ライブラリをインクルード] - [.ZIP形式のライブラリをインストール…] をクリック
- さきほどダウンロードした ESP32-BLE-Keyboard.zip を選択
ESP32-BLE-Keyboard の使い方
公式のサンプル
を見れば大まかな使い方はわかると思うが、メソッドの説明がないので補足しておく。
BleKeyboard クラスの以下のメソッドでキーを操作できる。
- print: 文字列を入力
- write: キーを押してすぐに離す
- press: キーを押す (release するまで押したままにする)
- release: キーを離す
- releaseAll: すべてのキーを離す
キーの指定は、英数記号の場合、文字をそのまま渡す。
大文字を渡すと自動でシフトキーが補完され大文字での入力になる。
ファンクションキー、修飾キーなどの場合は
BleKeyboard.h
で定義されている定数を渡す。
スケッチの作成
M5StickC のボタンA (正面の「M5」ボタン) を押すと
500ms 間隔で順番に B, L, E, Enterキーを押すサンプルスケッチを作成した。
今回は同時押しが不要だったため
keystroke に書かれたキーを順に write で出力するだけとなっている。
動作確認
以下の手順で動作を確認できる。
- M5StickC にスケッチを書き込む
- M5StickC の画面に “Waiting 5 seconds…” と表示されていることを確認
- PC で Bluetooth デバイスを検索し “ESP32 BLE Keyboard” へ接続
- メモ帳などのアプリを開く
- M5StickC のボタンA (正面の「M5」ボタン) を押す
これで複雑なキーボードマクロでも思い通りに実行できるようになった。
キーボードでできることなら何でもボタン一発で実行できるため、
思っていた以上に利便性が高い。
参考サイト