19 std::array<uint, 4> command;
21 constexpr
KeySpec(
bool imgKey, std::array<uint, 4> cmd) : command(cmd), imageKey(imgKey) {
25 static constexpr std::array<KeySpec, 1> K0{{
26 {
true, {SDLK_CAPSLOCK}}
35 bool mCapsLock{
false};
36 bool mShiftActive{
false};
41 static constexpr std::array<KeySpec, 11> keyDataRow0
43 {
false, {SDLK_q, SDLK_q, SDLK_1, SDLK_1}},
44 {
false, {SDLK_w, SDLK_w, SDLK_2, SDLK_2}},
45 {
false, {SDLK_e, SDLK_e, SDLK_3, SDLK_3}},
46 {
false, {SDLK_r, SDLK_r, SDLK_4, SDLK_4}},
47 {
false, {SDLK_t, SDLK_t, SDLK_5, SDLK_5}},
48 {
false, {SDLK_y, SDLK_y, SDLK_6, SDLK_6}},
49 {
false, {SDLK_u, SDLK_u, SDLK_7, SDLK_7}},
50 {
false, {SDLK_i, SDLK_i, SDLK_8, SDLK_8}},
51 {
false, {SDLK_o, SDLK_o, SDLK_9, SDLK_9}},
52 {
false, {SDLK_p, SDLK_p, SDLK_0, SDLK_0}},
53 {
true, {SDLK_BACKSPACE, SDLK_BACKSPACE, SDLK_BACKSPACE, SDLK_BACKSPACE}}
57 static constexpr std::array<KeySpec, 10> keyDataRow1
59 {
false, {SDLK_a, SDLK_a, SDLK_AT, SDLK_AT}},
60 {
false, {SDLK_s, SDLK_s, SDLK_HASH, SDLK_HASH}},
61 {
false, {SDLK_d, SDLK_d, SDLK_DOLLAR, SDLK_DOLLAR}},
62 {
false, {SDLK_f, SDLK_f, SDLK_PERCENT, SDLK_PERCENT}},
63 {
false, {SDLK_g, SDLK_g, SDLK_CARET, SDLK_CARET}},
64 {
false, {SDLK_h, SDLK_h, SDLK_AMPERSAND, SDLK_AMPERSAND}},
65 {
false, {SDLK_j, SDLK_j, SDLK_ASTERISK, SDLK_ASTERISK}},
66 {
false, {SDLK_k, SDLK_k, SDLK_LEFTPAREN, SDLK_LEFTPAREN}},
67 {
false, {SDLK_l, SDLK_l, SDLK_RIGHTPAREN, SDLK_RIGHTPAREN}},
68 {
true, {SDLK_RETURN, SDLK_RETURN, SDLK_RETURN, SDLK_RETURN}}
72 static constexpr std::array<KeySpec, 11> keyDataRow2
74 {
true, {SDLK_CAPSLOCK, SDLK_CAPSLOCK, SDLK_CAPSLOCK, SDLK_CAPSLOCK}},
75 {
false, {SDLK_z, SDLK_z,
'~',
'~'}},
76 {
false, {SDLK_x, SDLK_x, SDLK_BACKSLASH, SDLK_BACKSLASH}},
77 {
false, {SDLK_c, SDLK_c, SDLK_UNDERSCORE, SDLK_UNDERSCORE}},
78 {
false, {SDLK_v, SDLK_v, SDLK_LEFTBRACKET, SDLK_BACKQUOTE}},
79 {
false, {SDLK_b, SDLK_b, SDLK_RIGHTBRACKET, SDLK_COMMA}},
80 {
false, {SDLK_n, SDLK_n,
'{', SDLK_PERIOD}},
81 {
false, {SDLK_m, SDLK_m,
'}', SDLK_QUESTION}},
82 {
false, {SDLK_COMMA, SDLK_QUESTION, SDLK_COLON, SDLK_COLON}},
83 {
false, {SDLK_PERIOD, SDLK_SLASH, SDLK_SEMICOLON, SDLK_SEMICOLON}},
84 {
true, {SDLK_RSHIFT, SDLK_RSHIFT, SDLK_RSHIFT, SDLK_RSHIFT}}
88 static constexpr std::array<KeySpec, 6> keyDataRow3
90 {
true, {SDLK_LSHIFT, SDLK_LSHIFT, SDLK_LSHIFT, SDLK_LSHIFT}},
91 {
true, {SDLK_LALT, SDLK_LALT, SDLK_LALT, SDLK_LALT}},
92 {
false, {SDLK_SPACE, SDLK_SPACE, SDLK_SPACE, SDLK_SPACE}},
93 {
true, {SDLK_LEFT, SDLK_LEFT, SDLK_LEFT, SDLK_LEFT}},
94 {
true, {SDLK_RIGHT, SDLK_RIGHT, SDLK_RIGHT, SDLK_RIGHT}},
95 {
true, {SDLK_RALT, SDLK_RALT, SDLK_RALT, SDLK_RALT}}
103 void addedToContainer()
override;
115 std::array<uint, 4> mCommand;
118 void setTextFromCommand();
130 mCentreVertical =
true;
131 mCentreHorizontal =
true;
134 void addedToContainer()
override;
138 mKeyState = keyState;
139 setTextFromCommand();
152 void setImageFromCommand();
164 mCentreVertical =
true;
165 mCentreHorizontal =
true;
168 void addedToContainer()
override;
172 mKeyState = keyState;
173 setImageFromCommand();
183 bool mLockState{
false};
185 void setImageFromLockState();
197 void addedToContainer()
override;
ButtonStateChange
Definition: Callbacks.h:28
ImageKey(std::array< uint, 4 > cmd)
Construct an Image key.
Definition: Keyboard.h:163
std::array< uint, 4 > mCommand
The glyphs and controlls supported.
Definition: Keyboard.h:149
void setKeyState(uint keyState)
Set the key state.
Definition: Keyboard.h:137
LetterKey(std::array< uint, 4 > cmd)
Construct a letter key.
Definition: Keyboard.h:129
A touch keyboard.
Definition: Keyboard.h:33
A key which produces a character of input.
Definition: Keyboard.h:113
CapsLockKey(std::array< uint, 4 > cmd)
Construct a caps lock key.
Definition: Keyboard.h:194
ImageKey
Definition: Keyboard.h:147
A specialized ImageKey for Caps Lock.
Definition: Keyboard.h:181
void setKeyState(uint keyState)
Set the key state.
Definition: Keyboard.h:171
ToDo: There is an issue that the initial scroll interaction is lost if the click/press lands on a Wid...
Definition: CelestialOverlay.cpp:13
Definition: Keyboard.h:17