BLE化
自作キーボードはある程度快適なのですが、USBケーブルが思った以上に邪魔です。
ノートPCで使っているので、会議とかでPC持って移動すると結局電話持って動いているようなものです。
そこで、無線化を検討します。
ESP32でBLEキーボード
こちらも同じようなことを考えている人は世界にいるようで、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();
}
}
}