0
0

備忘録 Teams用の便利キーボードを作る  03

Last updated at Posted at 2024-08-03

BLE化

自作キーボードはある程度快適なのですが、USBケーブルが思った以上に邪魔です。
ノートPCで使っているので、会議とかでPC持って移動すると結局電話持って動いているようなものです。
そこで、無線化を検討します。

ESP32でBLEキーボード

IMG20240803184202.jpg

こちらも同じようなことを考えている人は世界にいるようで、ESP32でBLEキーボードのライブラリがあります。
これやら、ネット上の情報を見ながら見様見真似で作ってみました。

とりあえず、試作しています。
写真はケーブルつながっていますが、ちゃんとBLEキーボードで認識されています。
もう少し時間をかけて使い合点を試してみます。

BleKeyboard.h
https://github.com/T-vK/ESP32-BLE-Keyboard

これが肝になるヘッダなのですが、今これをArduino IDE2.0の最新のもので動作させようとするとコンパイルすらうまくいきません!
BLEでの接続もできません!

古いIDE1.8系で作業すると動きます。

へたくそですけど試作中のソースコードおいておきます。

#include <BleKeyboard.h>

BleKeyboard bleKeyboard("BLE_key");  

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleKeyboard.begin();

  pinMode(16, INPUT_PULLUP);  // GPIO16(pullup)
  pinMode(17, INPUT_PULLUP);  // GPIO17(pullup)
  pinMode(18, INPUT_PULLUP);  // GPIO18(pullup)
  pinMode(19, INPUT_PULLUP);  // GPIO19(pullup) shift
}

void loop() {
  if (bleKeyboard.isConnected()) {  // Check to see if they are connected.

    if (digitalRead(16) == LOW) {   // If GPIO16 change to LOW Ctrl + Shift + S
      Serial.println("CTRL+SHIFT+s");
      bleKeyboard.press(KEY_LEFT_CTRL);
      bleKeyboard.press(KEY_LEFT_SHIFT);
      bleKeyboard.press('s');
      delay(200);
      bleKeyboard.releaseAll();
    }
    if (digitalRead(17) == LOW) {        // If GPIO17 change to LOW
      Serial.println("CTRL+SHIFT+a");
      bleKeyboard.press(KEY_LEFT_CTRL);  // Ctrl + Shift + A
      bleKeyboard.press(KEY_LEFT_SHIFT);
      bleKeyboard.press('a');
      delay(200);
      bleKeyboard.releaseAll();
    }
    if (digitalRead(18) == LOW) {        // If GPIO18 change to LOW Ctrl + Shift + H
      Serial.println("CTRL+SHIFT+h");
      bleKeyboard.press(KEY_LEFT_CTRL);  // Ctrl + Shift + A
      bleKeyboard.press(KEY_LEFT_SHIFT);
      bleKeyboard.press('h');
      delay(200);
      bleKeyboard.releaseAll();
    }

    if (digitalRead(19) == LOW && digitalRead(16) == LOW) {  // If GPIO19 change to LOW KEY_LEFT_GUI
      Serial.println("win+ALT+1");
      bleKeyboard.press(KEY_LEFT_GUI);                       // win KEY
      bleKeyboard.press(KEY_LEFT_ALT);
      bleKeyboard.press(1);
      delay(500);
      bleKeyboard.releaseAll();
    }
    if (digitalRead(19) == LOW && digitalRead(17) == LOW) {  // If GPIO19 change to LOW KEY_LEFT_GUI
      Serial.println("win+ALT+4");
      bleKeyboard.press(KEY_LEFT_CTRL);                      //
      bleKeyboard.press(4);
      delay(500);
      bleKeyboard.releaseAll();
    }
  }
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0