
Arduino入門
Chain DualKey の USB HID に関する API とサンプルプログラムです。
#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 を離す。
Chain DualKey の USB HID 機能は、arduino-esp32 に同梱の USB ライブラリを使用しています。詳細な API は次を参照してください: