pdf-icon

Arduino入門

2. デバイス&サンプル

6. アプリケーション

Chain DualKey USB HID

Chain DualKey の USB HID に関する API とサンプルプログラムです。

サンプルプログラム

ビルド要件

  • M5Stack ボードマネージャーのバージョン ≥ 3.2.4
  • 開発ボードの設定 = M5ChainDualKey
  • M5Unified ライブラリのバージョン ≥ 0.2.11
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#include "USB.h"
#include "USBHIDKeyboard.h"
#include "USBHIDMouse.h"
#include "M5Unified.h"

#define pin_Key1 0
#define pin_Key2 17

m5::Button_Class Key1;
m5::Button_Class Key2;
USBHIDKeyboard Keyboard;
USBHIDMouse Mouse;

void setup() {
  pinMode(pin_Key1, INPUT);
  pinMode(pin_Key2, INPUT);

  Keyboard.begin();
  Mouse.begin();
  USB.begin();
}

void loop() {
  uint32_t ms = millis();
  Key1.setRawState(ms, !digitalRead(pin_Key1));
  Key2.setRawState(ms, !digitalRead(pin_Key2));

  if (Key1.wasPressed()) {
    // Keyboard.print("123 ABC def ,?#");
  }
  if (Key1.wasReleased()) {
    // Keyboard.write(KEY_RETURN);
  }
  if (Key1.wasHold()) {
    // Keyboard.press(KEY_LEFT_GUI);  // Command key in macOS, Windows key in Windows
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('c');
    delay(500);
    Keyboard.releaseAll();
  }

  if (Key2.wasPressed()) {
    Mouse.move(50, 50);  // x, y
  }
  if (Key2.wasHold()) {
    Mouse.click(MOUSE_RIGHT);
  }

  delay(10);
}

上記のコードを Arduino IDE に貼り付けてビルドし、Chain DualKey に書き込みます。書き込み完了後、Key1 を長押しすると Windows では Ctrl + C のキーコンビネーションが発火してコピーを実行します(macOS の Command キーの割り当てについてはコード内コメントを参照)。Key2 を短く押すとマウスカーソルが右下へ少し移動し、Key2 を長押しすると右クリックをトリガーします。コード内のコメントアウト部分を解除すれば、より多くの USB HID のキーボード機能を試すことができます(各ボタンのトリガー条件と USB HID イベントの論理的な衝突に注意)。

書き込み後にボタンが反応しない場合は、デバイスを再起動してください。手順:スイッチを中央位置にし、USB-C データケーブルをいったん抜いて差し直す(Key1 は押し続けない)。

Chain DualKey がすでに USB HID デバイスとして動作している場合は、新しいスケッチを書き込む前にダウンロードモードへ入れる必要があります。手順:USB-C ケーブルを抜く → スイッチを中央位置にする → Key1 を押しながら USB-C ケーブルを挿し直す → Key1 を離す。

API

Chain DualKey の USB HID 機能は、arduino-esp32 に同梱の USB ライブラリを使用しています。詳細な API は次を参照してください:

On This Page