Arduino Keyboard.hライブラリとは?(説明とサンプルスケッチ)

Arduino
Arduino
記事内には広告が含まれています。

ラブラリに関しての説明

Arduino IDEの「Keyboard.h」ライブラリの7つの関数の解説とサンプルスケッチを載せてます。

Keyboard.hとは?

「Keyboard.h」は、ArduinoボードをUSBキーボードとして使えるようにするためのライブラリです。このライブラリを使うと、Arduinoを使ってコンピューターに文字やキーの入力を送信することができます。

単純なマクロキーボードならこのライブラリだけ完結できます。

主な機能

以下は、「Keyboard.h」ライブラリに含まれる主な機能とその使い方です。

1. Keyboard.begin()

この関数を使って、キーボードのエミュレーションを開始します。通常、setup()関数の中で呼び出します。

void setup() {
  Keyboard.begin();
}

2. Keyboard.end()

この関数を使って、キーボードのエミュレーションを終了します。

void cleanup() {
  Keyboard.end();
}

3. Keyboard.press()

指定したキーを押し続けます。キーは、文字またはキーコードで指定できます。

void loop() {
  Keyboard.press('a');  // 'a'キーを押します
  delay(1000);  // 1秒待ちます
  Keyboard.release('a');  // 'a'キーを離します
  delay(1000);  // 1秒待ちます
}

4. Keyboard.release()

指定したキーを離します。

void loop() {
  Keyboard.press('a');
  delay(1000);
  Keyboard.release('a');  // 'a'キーを離します
  delay(1000);
}

5. Keyboard.releaseAll()

押されているすべてのキーを離します。

void loop() {
  Keyboard.press('a');
  Keyboard.press('b');
  delay(1000);
  Keyboard.releaseAll();  // すべてのキーを離します
  delay(1000);
}

6. Keyboard.write()

指定したキーを押して離します。つまり、キーの入力を1回シミュレーションします。

void loop() {
  Keyboard.write('a');  // 'a'キーを押して離します
  delay(1000);  // 1秒待ちます
}

7. Keyboard.print()

Keyboard.print(text)は、指定したテキストを連続的に入力します。Keyboard.write()とは異なり、複数の文字を一度に送信します。

#include <Keyboard.h>

void setup() {
  // Initialize the Keyboard
  Keyboard.begin();
  delay(2000); // Give some time for the system to recognize the device
}

void loop() {
  // Send the text "Hello, World!" to the computer
  Keyboard.print("Hello, World!");

  // Wait for 5 seconds before sending the text again
  delay(5000);
}

このプログラムは、Arduinoボードを接続したコンピュータに対して、5秒ごとに「Hello, World!」というメッセージを送り続けます。

8. Keyboard.println()

Keyboard.println() は、指定したデータをキーボード入力としてPCに送信し、Enterキーを押したときのように改行を行います。つまり、データの後に改行(\n)が追加されます。

cppコードをコピーする#include <Keyboard.h>

void setup() {
  // USBキーボード機能の開始
  Keyboard.begin();
  
  // 少し待つ(PCがArduinoを認識するための時間)
  delay(5000);
  
  // データの送信
  Keyboard.println("Hello, NISSHY");
  
  // キーボード機能の終了
  Keyboard.end();
}

void loop() {
  // ループ内では何も行わない
}

以下は、Keyboard.println() を使用して、PCにテキストを送信し、改行するシンプルな例です。

このスケッチは、ArduinoがPCに接続された後、5秒待機してから「Hello, NISSHY」というメッセージをキーボードから入力されたかのようにPCに送信し、その後改行します。

  1. 自動化: 反復的なデータ入力を自動化するために使用します。例えば、テスト自動化や設定自動化のスクリプトを作成する場合。
  2. データの入力: テキストエディタや入力フィールドに自動でデータを入力する際に便利です。
  3. ログインやコマンドの送信: 特定のソフトウェアやツールに対してコマンドやログイン情報を自動的に送信することができます。

Keyboard.hを使うときの注意点

  • 対応ボード: このライブラリは、USBキーボードとして機能する特定のArduinoボード(Arduino Leonardo、Arduino Micro、Arduino Dueなど)でのみ使用できます。一般的なArduino UnoやMegaでは使用できません。

ArduinoIDEを利用する場合Raspberry Pi PICOでも動作します。

応用

#include <Keyboard.h>  // Keyboardライブラリをインクルード

void setup() {
  // キーボード機能を初期化
  Keyboard.begin();
  delay(2000); // システムがデバイスを認識するための時間を確保(2秒間待機)
}

void loop() {
  // 例: "Hello World" を送信
  Keyboard.print("Hello World");
  delay(2000); // 2秒間待機

  // 例: 'a'キーを押して離す
  Keyboard.press('a');  // 'a'キーを押す
  delay(100);  // キーを短時間(100ミリ秒)押したままにする
  Keyboard.release('a');  // 'a'キーを離す
  delay(1000);  // 1秒間待機

  // 例: 'b'キーを押して離す
  Keyboard.write('b');  // 'b'キーを押して離す
  delay(1000);  // 1秒間待機

  // 例: 複数キーの組み合わせ(Ctrl + Alt + Del)
  Keyboard.press(KEY_LEFT_CTRL);  // 左Ctrlキーを押す
  Keyboard.press(KEY_LEFT_ALT);   // 左Altキーを押す
  Keyboard.press(KEY_DELETE);     // Delキーを押す
  delay(100);  // 100ミリ秒間待機
  Keyboard.releaseAll();  // 全てのキーを離す
  delay(1000);  // 1秒間待機

  // キーボード接続を終了
  Keyboard.end();
  delay(1000);  // 1秒間待機

  // キーボード機能を再初期化
  Keyboard.begin();
  delay(2000);  // 2秒間待機
}

各部分の説明

  1. ライブラリのインクルード
    #include <Keyboard.h>Keyboard
    • ライブラリをインクルードして、キーボード機能を使用できるようにします。
  2. 初期化 (setup関数)
    void setup() { Keyboard.begin(); delay(2000); }
    • Keyboard.begin()を呼び出してキーボード機能を初期化します。
    • delay(2000)は、システムがArduinoデバイスを認識するための2秒間の待機時間を設けています。
  3. メインループ (loop関数)
    void loop() { Keyboard.print("Hello World"); delay(2000);
    • Keyboard.print("Hello World")は、PCに「Hello World」を送信します。2秒間待機 (delay(2000))

    Keyboard.press('a'); delay(100); Keyboard.release('a'); delay(1000);
    • Keyboard.press('a')で’a’キーを押し、100ミリ秒後にKeyboard.release('a')で離します。1秒間待機 (delay(1000)

    Keyboard.write('b'); delay(1000);
    • Keyboard.write('b')で’b’キーを押して離します。1秒間待機 (delay(1000)

    Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_DELETE); delay(100); Keyboard.releaseAll(); delay(1000);
    • 左Ctrlキー (KEY_LEFT_CTRL)、左Altキー (KEY_LEFT_ALT)、およびDelキー (KEY_DELETE)を押します。100ミリ秒間待機 (delay(100))Keyboard.releaseAll()で全てのキーを離します。1秒間待機 (delay(1000))

    Keyboard.end(); delay(1000); Keyboard.begin(); delay(2000);
    • Keyboard.end()でキーボード接続を終了します。
    • 1秒間待機 (delay(1000))
    • 再びKeyboard.begin()でキーボード機能を初期化します。
    • 2秒間待機 (delay(2000))

このコードをArduino IDEに書き込んで、対応するボードにアップロードすると、指定されたキー操作がPCに送信されることが確認できます。

まとめ

「Keyboard.h」ライブラリは、Arduinoボードを使ってコンピューターにキーボード入力を送信するための強力なツールです。このライブラリを使えば、手軽にマクロキーボードや自動化ツールを作成できます。

こちらのHID-Project.hライブラリに関しても合わせてどうぞ!

コメント

タイトルとURLをコピーしました