10#ifndef M5_UNIT_KEYBOARD_UNIT_CARD_KB_HPP
11#define M5_UNIT_KEYBOARD_UNIT_CARD_KB_HPP
14#include <m5_utility/container/circular_buffer.hpp>
36class UnitCardKB :
public UnitKeyboardBitwise {
37 M5_UNIT_COMPONENT_HPP_BUILDER(
UnitCardKB, 0x5F);
46 static constexpr keyboard::key_index_t KEY_1{1};
47 static constexpr keyboard::key_index_t KEY_2{2};
48 static constexpr keyboard::key_index_t KEY_3{3};
49 static constexpr keyboard::key_index_t KEY_4{4};
50 static constexpr keyboard::key_index_t KEY_5{5};
51 static constexpr keyboard::key_index_t KEY_6{6};
52 static constexpr keyboard::key_index_t KEY_7{7};
53 static constexpr keyboard::key_index_t KEY_8{8};
54 static constexpr keyboard::key_index_t KEY_9{9};
55 static constexpr keyboard::key_index_t KEY_0{10};
56 static constexpr keyboard::key_index_t KEY_BS{11};
57 static constexpr keyboard::key_index_t KEY_TAB{12};
58 static constexpr keyboard::key_index_t KEY_Q{13};
59 static constexpr keyboard::key_index_t KEY_W{14};
60 static constexpr keyboard::key_index_t KEY_E{15};
61 static constexpr keyboard::key_index_t KEY_R{16};
62 static constexpr keyboard::key_index_t KEY_T{17};
63 static constexpr keyboard::key_index_t KEY_Y{18};
64 static constexpr keyboard::key_index_t KEY_U{19};
65 static constexpr keyboard::key_index_t KEY_I{20};
66 static constexpr keyboard::key_index_t KEY_O{21};
67 static constexpr keyboard::key_index_t KEY_P{22};
68 static constexpr keyboard::key_index_t KEY_NO_KEY{23};
69 static constexpr keyboard::key_index_t KEY_LEFT{24};
70 static constexpr keyboard::key_index_t KEY_UP{25};
71 static constexpr keyboard::key_index_t KEY_A{26};
72 static constexpr keyboard::key_index_t KEY_S{27};
73 static constexpr keyboard::key_index_t KEY_D{28};
74 static constexpr keyboard::key_index_t KEY_F{29};
75 static constexpr keyboard::key_index_t KEY_G{30};
76 static constexpr keyboard::key_index_t KEY_H{31};
77 static constexpr keyboard::key_index_t KEY_J{32};
78 static constexpr keyboard::key_index_t KEY_K{33};
79 static constexpr keyboard::key_index_t KEY_L{34};
80 static constexpr keyboard::key_index_t KEY_ENTER{35};
81 static constexpr keyboard::key_index_t KEY_DOWN{36};
82 static constexpr keyboard::key_index_t KEY_RIGHT{37};
83 static constexpr keyboard::key_index_t KEY_Z{38};
84 static constexpr keyboard::key_index_t KEY_X{39};
85 static constexpr keyboard::key_index_t KEY_C{40};
86 static constexpr keyboard::key_index_t KEY_V{41};
87 static constexpr keyboard::key_index_t KEY_B{42};
88 static constexpr keyboard::key_index_t KEY_N{43};
89 static constexpr keyboard::key_index_t KEY_M{44};
90 static constexpr keyboard::key_index_t KEY_COMMA{45};
91 static constexpr keyboard::key_index_t KEY_PERIOD{46};
92 static constexpr keyboard::key_index_t KEY_SPACE{47};
97 static constexpr char SCHAR_LEFT{
static_cast<char>(180)};
98 static constexpr char SCHAR_UP{
static_cast<char>(181)};
99 static constexpr char SCHAR_DOWN{
static_cast<char>(182)};
100 static constexpr char SCHAR_RIGHT{
static_cast<char>(183)};
131 virtual bool begin()
override;
133 virtual void update(
const bool force =
false)
override;
194 bool update_new_firmware(
const types::elapsed_time_t at);
195 void push_back(m5::container::CircularBuffer<uint8_t>* container,
const uint8_t kidx,
const uint8_t mod8);
197 inline virtual uint8_t to_mode_bits(
const char ch)
const override
210constexpr uint8_t CMD_HARDWARE_TYPE_REG{0xFD};
void config(const config_t &cfg)
Set the configuration.
Definition unit_CardKB.hpp:146
virtual void update(const bool force=false) override
Definition unit_CardKB.cpp:296
static constexpr uint8_t NUMBER_OF_KEYS
Number of keys in the scan matrix (Shift/Sym/Fn modifiers are tracked separately, not included here)
Definition unit_CardKB.hpp:41
static keyboard::key_index_t character_to_key_index(const char ch)
Character to key index.
Definition unit_CardKB.cpp:227
bool readHardwareType(uint8_t &htype)
Read the hardware type.
Definition unit_CardKB.cpp:373
UnitCardKB(const uint8_t addr=DEFAULT_ADDRESS)
Constructor.
Definition unit_CardKB.hpp:127
static uint8_t character_to_mode_bits(const char ch)
Character to mode bits.
Definition unit_CardKB.cpp:243
virtual bool begin() override
Definition unit_CardKB.cpp:263
virtual keyboard::key_index_t toKeyIndex(const char ch) const override
Obtains the key index corresponding to the specified character.
Definition unit_CardKB.hpp:153
uint8_t hardwareType() const
Gets the hardware type.
Definition unit_CardKB.hpp:181
config_t config() const
Gets the configuration.
Definition unit_CardKB.hpp:138
Class supporting keyboard state acquisition by key press bits.
Top level namespace of M5Stack.
Settings for begin.
Definition unit_CardKB.hpp:107
uint32_t repeating_threshold
Threshold for key repeating (ms)
Definition unit_CardKB.hpp:117
uint32_t interval
Periodic interval.
Definition unit_CardKB.hpp:115
uint32_t holding_threshold
Threshold for key holding (ms)
Definition unit_CardKB.hpp:119
bool start_periodic
Start periodic measurement on begin?
Definition unit_CardKB.hpp:109
keyboard::Mode mode
Definition unit_CardKB.hpp:113
constexpr uint8_t TYPE_CARDKB_V11
V11 SKU:U035-B.
Definition unit_CardKB.hpp:27
constexpr uint8_t TYPE_CARDKB
SKU:U035.
Definition unit_CardKB.hpp:26
uint8_t key_index_t
Key index (Not character)
Definition unit_Keyboard.hpp:26
Mode
Operation mode for M5Unit-KEYBOARD firmware.
Definition unit_Keyboard.hpp:58