前置き
- micro:bit駆け出しエンジニアです。超初心者。
はじめに
- microbit-pxt-blehidを使えばHIDをmicro:bitで作成できるっぽい。
- 上記ライブラリを用いて擬似的なキーボードとマウスを作成し、実際に動かしてみる。
- 実装については20分程度で作れる規模感です。
一応Arduinoを使って実装する方法については先駆者あり。
↓参考
microbit-pxt-blehidについて
- micro:bit V2である必要あり。
- windows/macOSについて動作確認済み
- Android/iOSについては機能制限あり。
基本的な使い方は上記ページを参照すればあらかた理解できそう。
使ったもの
micro:bitについてはV2.21を使用した。下記リンクのワンセットで揃った物品のみ使用した。
また、動作環境として使用したPCスペックは下記。
- macOS Ventura 13.0
![PCスペック](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F7272da03-09a9-f9d6-f0e6-099e5e05163e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ff3405f78c039e123daaa12bc41a1023)
プロジェクト設定について
歯車マーク→プロジェクト設定にて、No Pairring Required
を設定して実施した。
![PCスペック](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F973c16c1-6f8e-2fc8-f877-1b673d329061.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f12341588778622c79047405299dbe05)
keyboard入力機能について
単純な文字を送る他にも、EnterキーやVolume upキーなどの特殊キーやCtrl+Aみたいな組み合わせも可能
![特殊キー](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F47d64f08-ad26-f809-5f1c-02eb23d0635b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1651936f432b8fdb1ec2aa093b9bf0df)
![組み合わせキー](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2Fb4270b39-5254-a03a-14bc-7259df6e0383.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=26a3eeb98ede2a5b65ab668a97236b2f)
実際に組み合わせる際には、文字の連結を行う。
![組み合わせキー](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F024bcbc8-4b0a-5c3b-0498-7b44c71d9266.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=abaf1faa3826081d33bb853b4a482fd1)
マウス機能について
基本的には見ての通りの機能で、そのままブロックを使うことができる。
ただ、カーソル量のx,y軸とスクロール量は共に-127~127の値をとり、0を不動とした相対移動量を入れるため注意。
![組み合わせキー](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F241eb517-e544-41f2-a760-eebe104252bc.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=28faa06fe94f0b0bb750124219e47bf9)
実装したコード
ブロックプログラミング故、超シンプル。すばらしい。
keyboard
ボタンAを押すとhttps://www.google.com/
とGoogleのページリンクがタイプされ、ボタンBを押すとEnterが入力される。また、ボタンAとボタンBを同時押しするとスクリーンショット画面になる。
![組み合わせキー](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F6773a579-9f84-1d7c-eff4-91cfaafea963.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e3600715c7a4ccf9a874eb6d684c0043)
一応pythonコードはこちら。
def on_button_pressed_a():
keyboard.send_string("https://www.google.com/")
input.on_button_pressed(Button.A, on_button_pressed_a)
def on_button_pressed_ab():
keyboard.send_string("" + keyboard.modifiers(keyboard._Modifier.APPLE) + keyboard.modifiers(keyboard._Modifier.SHIFT) + "5")
input.on_button_pressed(Button.AB, on_button_pressed_ab)
def on_button_pressed_b():
keyboard.send_string(keyboard.keys(keyboard._Key.ENTER))
input.on_button_pressed(Button.B, on_button_pressed_b)
keyboard.start_keyboard_service()
キーボード入力動作確認
ちゃんと動いた。キー組み合わせのスクショ機能もちゃんと動いてる。
だいたい10分位でつくったけど、結構便利な感じ。
マウス操作
micro:bitを傾けると傾けた方向にマウスカーソルが移動する。また、ボタンAを押すと左クリック、ボタンBを押すと右クリック、AボタンとBボタン同時押しで中クリックになる。
![組み合わせキー](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2Fcbab86d3-eb35-df7c-4979-6242036d9de1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2e9f1cf4815b0d2dc28f475b58078f3b)
def on_button_pressed_a():
mouse.click()
input.on_button_pressed(Button.A, on_button_pressed_a)
def on_button_pressed_ab():
mouse.middle_click()
input.on_button_pressed(Button.AB, on_button_pressed_ab)
def on_button_pressed_b():
mouse.right_click()
input.on_button_pressed(Button.B, on_button_pressed_b)
mouse.start_mouse_service()
def on_forever():
mouse.movexy(input.rotation(Rotation.ROLL) / 360 * 127,
input.rotation(Rotation.PITCH) / 360 * 127)
basic.forever(on_forever)
マウス動作確認
動いた。マウス操作はちょっとおもしろい。
ちなみに、今回のマウスは着手して10分程度でつくれた。
おわりに
- Bluetoothを介した簡単なキー入力、マウス操作をmicro:bit上から行った。
- microbit-pxt-blehidの導入が必要。
- HIDをまさかものの数分で作れるとはなぁ...