ESP32のBLE機能を使えば、ESP32をBLEのキーボード(HID)にすることができます。
ということは、キーボードのないiPadのキーボードショートカット代わりにすることができるということです!
構成はこんな感じです。
用意するものは、以下です。iPadやMacは除きます。
- M5StickC または M5StickC Plus
- M5Stack用赤外線送受信ユニット (https://www.switch-science.com/products/5699)
- 赤外線テレビリモコン
赤外線テレビリモコンから赤外線信号を送信し、
M5StickCにつないだ赤外線送受信ユニットで受信し、
M5StickCからiPadにBLEでキーボード押下を送信します。
(M5StickCを使っていますが、ESP32であれば何でも構いません。)
今回ボタン押下として赤外線テレビリモコンを選んだのは、ボタンも大きく、ボタンもたくさんあり、卓上に置いたまま押すことができて、Amazon等いろんなところで安価に入手できるためです。ご自身でお気に入りのテレビリモコンを探してみてください。
私は以下を用意しました。
ELPA-大きなボタンで押しやすさと見やすさを追求-国内主要メーカー対応-IRC-202T-BK/dp/B015DVZH3U
https://www.amazon.co.jp/gp/product/B015DVZH3U
ちなみに、M5StickCのボタンを長押しすることで、Editモードとなって、リモコン・ショートカットキーの登録ができるようにしてあります。その時は以下の構成となります。
Editモードにすると、M5StickCがWebサーバとして立ち上がりますので、ブラウザからショートカットキーを登録する作業ができます。
使うための準備
まずは使ってみてください。
M5StickCを用意して、さらにM5Stack用赤外線送受信ユニットをつなげておきます。
以下からダウンロードしてきます。
Visual Studio Code+PlatformIOで作りました。
先に、platformio.iniファイルに、M5StickCの ポート番号を指定しておきます。
以下の部分です。
upload_port = COM3
monitor_port = COM3
ショートカットキー情報は、ESP32のCPU内のSPIFFSに保存しています。
ですので、まずは、Flash Eraseします。
Visual Studio Codeの左側のPlatformIOのアイコンをクリックし、左上のProject Tasks→Platform→Erase Flashをクリックします。
次に、Webページを書き込みます。
Editモードで起動したとき、PCのブラウザからショートカットキーを登録するためのWebページを表示できるようになります。ちなみに、Webページは、フォルダdata/html
にあります。
左上のProject Tasks→Platform→Build Filesystem Imageをクリックしてから、Project Tasks→Platform→Upload Filesystem Imageをクリックします。
最後に、左下の→ボタンをクリックして、ESP32のファームウェアイメージのビルドと書き込みを行います。
これで書き込みは完了しましたので、Serial Monitorを立ち上げます。Ctrl+Shift+Pを押して、PlatformIO: Serial Monitorを選択します。
最初は、すでに起動完了してしまっているので、シリアル上の出力も終わってしまっていますので、M5StickC本体のボタンを押下して、再度M5StickCの電源Off・電源Onします。あるいは、M5StickCのAボタンの長押しでリブートできるようにしてあります。また、再起動した後もそのままAボタンを押し続けると、Editモードになります。LEDが点灯するのでわかります。
Editモードになると、WiFiルータにつなぎに行こうとします。
最初は、SSIDとパスワードが未設定なので、Serial Monitor上で入力が促されます。それぞれ入力してください。接続できるとM5StickCのLCDにIPアドレスが表示されます。この設定は覚えてくれているので、1回だけやればOKです。
それでは、ブラウザから、そのIPアドレスを入力してページを開いてみます。
更新ボタンを押してください。ですが、最初は何も登録されていません。
そこで、新規追加ボタンを押してください。
リモコン信号待ちとなります。10秒ほど待ち受けるようにしてあります。
赤外線リモコンのうち、適当なボタンを押してください。たとえば、チャネル④ボタンを押してみます。
リモコン信号を検出しました。
適当な名前を付けて登録します。例えば4とでもしておきます
次に、このリモコン信号に対して、ショートカットキーを割り当てます。
Key更新ボタンを押下します。
今回は、スクリーンショットのショートカットキーである、Command+Shift+3を入力しました。iPadのキーボードはちょっと特殊なので、key_typeはkey_macに、key_langはusに指定してください。key_nameにはわかりやすくスクリーンショットとしました。
これで準備完了です。同じWebページにあるリブートボタンを押すか、M5StickCのAボタンを長押しします。
iPadから使ってみる
設定→Bluetoothを開いてみると、「CustomKeyboard」というのが見つかるはずです。
これがM5StickCですので、タップしてペアリングします。
接続済みと表示されれば完了です。
さっそく、先ほど登録したチャネル4のボタンを押してみましょう。
無事にスクリーンショットが撮れたのではないでしょうか。
他にも有用なショートカットキーがあるので、明記しておきます。
- Command+Shift+3:スクリーンショット
- Control+Command+Q:画面ロック
- Option+Command+D:Dock表示
- Command+H:ホーム画面
(参考) https://support.apple.com/ja-jp/HT201236
ついでに、以下も追加しておきました。カーソル操作もよくするので。
- →:カーソル右
- ←:カーソル左
追加でショートカットキーを追加したり編集したりしたい場合は、M5StickCのAボタンを長押ししてEditモードにすることをお忘れなく。
グルーバルキーを活用する
最近のiPadでは、地球儀の刻印がされたグローバルキーも活用できます。以前はFnキーと呼ばれていたようです。
以降で、グローバルキーを絡めたショートカットキーを設定します。
その前に準備が必要です。一般的なHIDキーボードでは、地球儀のキーがないので、今回はあまり使わないCaps Lockキーをグローバルキーと見立てます。
設定→一般→キーボード→ハードウェアキーボード→装飾キーを選択します。
キーボードとして「CustomKeyboard」を選択状態にします。
そして、Caps Lockをタップします。
この画面で、地球儀を選択状態にすることで、Caps Lockを押下すると地球儀を押下したことになります。
ちなみに、この設定は、選択した「CustomKeyboard」でのみ有効ですので、別のハードウェアキーボードを接続していたとしても、そちらの方は変わりません。
戻るとこんな感じになっています。Caps Lockキーのところが地球儀になっています。
それではこれから以下のショートカットキーを登録していきます。(★がついているもの)
- 地球儀+H・・・デスクトップ表示
- 地球儀+F・・・フルスクリーン ★
- 地球儀+A・・・ドック表示(アプリを矢印キーで選択してenterで起動できる)
- 地球儀+C・・・コントロールセンター ★
- 地球儀+N・・・通知センター ★
M5StickCをリブートして、割り当てたリモコンボタンを押下すると、期待していた動作になったのではないでしょうか。
参考
ショートカットキーの参考となるページを張り付けておきます。
https://blog.skeg.jp/archives/2021/10/global-key-shortcut.html
https://support.apple.com/ja-jp/HT201236
https://www.sunmattu.net/pctablet/30882
https://www.sunmattu.net/pctablet/19516
過去の記事
SwitchBotとESP32と汎用リモコンで作るスマート家電
その他
iMacでも同様なことができます。
また、Windowsでも、key_langをjpとしていただければ、同様に使えますので、ぜひ使ってみてください。
不明な点や拡張してほしい点があればお知らせください。
以上