Cardputer Keyboard 入力に関する API とサンプルプログラムで、Cardputer と Cardputer-Adv に対応しています。
M5Cardputer.update()
関数を含めて状態更新を読み取る必要があります。さらに、できるだけブロッキング処理を減らさないと、キーボードの変化をタイムリーに取得できない場合があります。#include "M5Cardputer.h"
M5Canvas canvas(&M5Cardputer.Display);
String data = "> ";
void setup() {
auto cfg = M5.config();
M5Cardputer.begin(cfg, true); // enableKeyboard
M5Cardputer.Display.setRotation(1);
M5Cardputer.Display.setTextSize(0.5);
M5Cardputer.Display.setTextFont(&fonts::FreeSerifBoldItalic18pt7b);
M5Cardputer.Display.drawRect(0, 0, M5Cardputer.Display.width(), M5Cardputer.Display.height() - 28, GREEN);
M5Cardputer.Display.fillRect(0, M5Cardputer.Display.height() - 4, M5Cardputer.Display.width(), 4, GREEN);
canvas.setTextSize(0.5);
canvas.setTextFont(&fonts::FreeSerifBoldItalic18pt7b);
canvas.setTextScroll(true);
canvas.createSprite(M5Cardputer.Display.width() - 8, M5Cardputer.Display.height() - 36);
canvas.println("Press Key and Enter to Input Text");
canvas.pushSprite(4, 4);
M5Cardputer.Display.drawString(data, 4, M5Cardputer.Display.height() - 24);
}
void loop() {
M5Cardputer.update();
if (M5Cardputer.Keyboard.isChange()) {
if (M5Cardputer.Keyboard.isPressed()) {
Keyboard_Class::KeysState status = M5Cardputer.Keyboard.keysState();
for (auto i : status.word) {
data += i;
}
if (status.del) {
data.remove(data.length() - 1);
}
if (status.enter) {
data.remove(0, 2);
canvas.println(data);
canvas.pushSprite(4, 4);
data = "> ";
}
M5Cardputer.Display.fillRect(0, M5Cardputer.Display.height() - 28, M5Cardputer.Display.width(), 25, BLACK);
M5Cardputer.Display.drawString(data, 4, M5Cardputer.Display.height() - 24);
}
}
}
実行結果は以下の図の通りです:
関数プロトタイプ:
void begin();
機能説明:
M5Cardputer.begin()
を呼び出す際に、パラメータ enableKeyboard
を true
に設定すると、同時にキーボードを初期化できます。
M5Cardputer.begin(m5::M5Unified::config_t cfg, bool enableKeyboard);
入力パラメータ:
戻り値:
関数プロトタイプ:
bool isChange();
機能説明:
入力パラメータ:
戻り値:
関数プロトタイプ:
uint8_t isPressed();
機能説明:
入力パラメータ:
戻り値:
関数プロトタイプ:
bool isKeyPressed(char c);
機能説明:
入力パラメータ:
'A'
、'a'
、'1'
、','
、' '
(スペース)、KEY_LEFT_SHIFT
、KEY_BACKSPACE
、KEY_ENTER
、KEY_FN
など。戻り値:
関数プロトタイプ:
uint8_t getKey(Point2D_t keyCoor);
機能説明:
入力パラメータ:
戻り値: