Numworks Epsilon  1.4.1
Graphing Calculator Operating System
events.h
Go to the documentation of this file.
1 #ifndef ION_EVENTS_H
2 #define ION_EVENTS_H
3 
4 #include <ion/keyboard.h>
5 
6 namespace Ion {
7 namespace Events {
8 
9 class Event {
10 public:
11  static constexpr Event PlainKey(Keyboard::Key k) { return Event((int)k); }
12  static constexpr Event ShiftKey(Keyboard::Key k) { return Event(PageSize+(int)k); }
13  static constexpr Event AlphaKey(Keyboard::Key k) { return Event(2*PageSize+(int)k); }
14  static constexpr Event ShiftAlphaKey(Keyboard::Key k) { return Event(3*PageSize+(int)k); }
15  static constexpr Event Special(int i) { return Event(4*PageSize+i); }
16 
17  constexpr Event() : m_id(4*PageSize){} // Return Ion::Event::None by default
18  constexpr Event(int i) : m_id(i){} // TODO: Assert here that i>=0 && i<255
19 #if DEBUG
20  uint8_t id() const { return m_id; }
21  const char * name() const;
22 #endif
23  Event(Keyboard::Key key, bool shift, bool alpha);
24 
25  bool operator==(const Event & other) const {
26  return (m_id == other.m_id);
27  }
28  bool operator!=(const Event & other) const {
29  return (m_id != other.m_id);
30  }
31  const char * text() const;
32  bool hasText() const;
33  bool isKeyboardEvent() const { return m_id < 4*PageSize; }
34  bool isSpecialEvent() const { return m_id >= 4*PageSize; }
35  bool isDefined() const;
36  static constexpr int PageSize = Keyboard::NumberOfKeys;
37 private:
38  uint8_t m_id;
39 };
40 
41 enum class ShiftAlphaStatus {
42  Default,
43  Shift,
44  Alpha,
45  ShiftAlpha,
46  AlphaLock,
48 };
49 
50 // Timeout is decremented
51 Event getEvent(int * timeout);
52 
55 bool isShiftActive();
56 bool isAlphaActive();
57 void updateModifiersFromEvent(Event e);
58 
59 // Plain
60 
67 
70 
77 
84 
91 
97 
103 
109 
115 
116 // Shift
117 
120 
126 
133 
140 
141 // Alpha
142 
146 
153 
160 
166 
172 
178 
181 
182 // Shift + Alpha
183 
190 
197 
203 
209 
214 
215 constexpr Event None = Event::Special(0);
219 constexpr Event USBPlug = Event::Special(4);
220 
221 }
222 }
223 
224 #endif
constexpr Event UpperC
Definition: events.h:186
constexpr Event LowerJ
Definition: events.h:157
constexpr Event LowerL
Definition: events.h:159
constexpr Event LowerP
Definition: events.h:164
constexpr Event DoubleQuotes
Definition: events.h:145
constexpr Event Plus
Definition: events.h:107
constexpr Event Colon
Definition: events.h:143
constexpr Event UpperI
Definition: events.h:193
constexpr Event UpperR
Definition: events.h:204
constexpr Event EE
Definition: events.h:112
Event getEvent(int *timeout)
Definition: events.cpp:12
constexpr Event Four
Definition: events.h:98
constexpr Event Var
Definition: events.h:74
constexpr Event LowerW
Definition: events.h:173
constexpr Event UpperA
Definition: events.h:184
constexpr Event Underscore
Definition: events.h:131
constexpr Event Power
Definition: events.h:83
constexpr Event Arctangent
Definition: events.h:136
constexpr Event UpperY
Definition: events.h:212
constexpr Event LeftParenthesis
Definition: events.h:95
constexpr Event Tangent
Definition: events.h:87
ShiftAlphaStatus
Definition: events.h:41
constexpr Event Question
Definition: events.h:179
constexpr Event Square
Definition: events.h:90
constexpr Event Minus
Definition: events.h:108
constexpr Event Exp
Definition: events.h:78
constexpr Event Greater
Definition: events.h:139
constexpr Event UpperG
Definition: events.h:191
bool isDefined() const
Definition: events.cpp:126
constexpr Event LowerZ
Definition: events.h:176
constexpr Event UpperE
Definition: events.h:188
constexpr Event EXE
Definition: events.h:114
constexpr Event Ln
Definition: events.h:79
constexpr Event UpperD
Definition: events.h:187
constexpr Event Up
Definition: events.h:62
constexpr Event Down
Definition: events.h:63
constexpr Event LowerV
Definition: events.h:171
void updateModifiersFromEvent(Event e)
constexpr Event UpperZ
Definition: events.h:213
constexpr Event None
Definition: events.h:215
constexpr Event Exclamation
Definition: events.h:180
constexpr Event Sqrt
Definition: events.h:89
constexpr Event UpperW
Definition: events.h:210
unsigned char uint8_t
Definition: stdint.h:4
constexpr Event LowerF
Definition: events.h:152
constexpr Event RightParenthesis
Definition: events.h:96
constexpr Event RightBrace
Definition: events.h:130
constexpr Event LowerQ
Definition: events.h:165
constexpr Event Cosine
Definition: events.h:86
constexpr Event Two
Definition: events.h:105
constexpr Event LeftBracket
Definition: events.h:127
constexpr Event LowerN
Definition: events.h:162
constexpr Event Arcsine
Definition: events.h:134
constexpr Event UpperK
Definition: events.h:195
constexpr Event Comma
Definition: events.h:82
constexpr Event LowerA
Definition: events.h:147
constexpr Event Back
Definition: events.h:66
constexpr Event Pi
Definition: events.h:88
constexpr Event UpperJ
Definition: events.h:194
constexpr Event LowerM
Definition: events.h:161
constexpr Event Paste
Definition: events.h:124
constexpr int NumberOfKeys
Definition: keyboard.h:33
bool operator!=(const Event &other) const
Definition: events.h:28
constexpr Event Zero
Definition: events.h:110
constexpr Event Division
Definition: events.h:102
constexpr Event UpperB
Definition: events.h:185
bool hasText() const
Definition: events.cpp:122
constexpr Event Dot
Definition: events.h:111
constexpr Event Five
Definition: events.h:99
constexpr Event LowerO
Definition: events.h:163
constexpr Event UpperT
Definition: events.h:206
constexpr Event UpperP
Definition: events.h:201
ShiftAlphaStatus shiftAlphaStatus()
constexpr Event Ans
Definition: events.h:113
Definition: app.cpp:9
constexpr Event LowerK
Definition: events.h:158
constexpr Event LowerE
Definition: events.h:151
static constexpr Event ShiftKey(Keyboard::Key k)
Definition: events.h:12
static constexpr Event ShiftAlphaKey(Keyboard::Key k)
Definition: events.h:14
constexpr Event LowerY
Definition: events.h:175
const char * text() const
Definition: events.cpp:61
constexpr Event Space
Definition: events.h:177
constexpr Event USBPlug
Definition: events.h:219
constexpr Event SemiColon
Definition: events.h:144
constexpr Event UpperS
Definition: events.h:205
constexpr Event Seven
Definition: events.h:92
constexpr Event UpperO
Definition: events.h:200
constexpr Event UpperX
Definition: events.h:211
constexpr Event()
Definition: events.h:17
constexpr Event LowerG
Definition: events.h:154
constexpr Event UpperQ
Definition: events.h:202
constexpr Event LowerC
Definition: events.h:149
bool isKeyboardEvent() const
Definition: events.h:33
constexpr Event Equal
Definition: events.h:137
constexpr Event AlphaLock
Definition: events.h:121
constexpr Event XNT
Definition: events.h:73
constexpr Event Eight
Definition: events.h:93
void setShiftAlphaStatus(ShiftAlphaStatus s)
bool isAlphaActive()
constexpr Event LowerS
Definition: events.h:168
constexpr Event(int i)
Definition: events.h:18
constexpr Event UpperH
Definition: events.h:192
constexpr Event Three
Definition: events.h:106
constexpr Event Left
Definition: events.h:61
bool isShiftActive()
constexpr Event UpperF
Definition: events.h:189
constexpr Event TimerFire
Definition: events.h:217
constexpr Event UpperL
Definition: events.h:196
constexpr Event ShiftLeft
Definition: events.h:118
constexpr Event OnOff
Definition: events.h:69
constexpr Event Arccosine
Definition: events.h:135
constexpr Event Sine
Definition: events.h:85
constexpr Event Copy
Definition: events.h:123
constexpr Event Imaginary
Definition: events.h:81
constexpr Event LowerD
Definition: events.h:150
constexpr Event Sto
Definition: events.h:132
constexpr Event ShiftRight
Definition: events.h:119
constexpr Event LowerI
Definition: events.h:156
static constexpr Event PlainKey(Keyboard::Key k)
Definition: events.h:11
constexpr Event Lower
Definition: events.h:138
static constexpr int PageSize
Definition: events.h:36
constexpr Event Right
Definition: events.h:64
constexpr Event UpperU
Definition: events.h:207
constexpr Event UpperN
Definition: events.h:199
constexpr Event LowerU
Definition: events.h:170
constexpr Event Multiplication
Definition: events.h:101
constexpr Event LowerX
Definition: events.h:174
constexpr Event USBEnumeration
Definition: events.h:218
constexpr Event LowerT
Definition: events.h:169
constexpr Event Cut
Definition: events.h:122
static constexpr Event Special(int i)
Definition: events.h:15
constexpr Event LeftBrace
Definition: events.h:129
constexpr Event Alpha
Definition: events.h:72
constexpr Event LowerH
Definition: events.h:155
constexpr Event OK
Definition: events.h:65
bool operator==(const Event &other) const
Definition: events.h:25
Definition: backlight.h:6
constexpr Event Six
Definition: events.h:100
constexpr Event Shift
Definition: events.h:71
constexpr Event Clear
Definition: events.h:125
constexpr Event UpperV
Definition: events.h:208
static constexpr Event AlphaKey(Keyboard::Key k)
Definition: events.h:13
constexpr Event LowerR
Definition: events.h:167
constexpr Event One
Definition: events.h:104
constexpr Event LowerB
Definition: events.h:148
constexpr Event Termination
Definition: events.h:216
constexpr Event Log
Definition: events.h:80
constexpr Event Nine
Definition: events.h:94
bool isSpecialEvent() const
Definition: events.h:34
constexpr Event Backspace
Definition: events.h:76
constexpr Event RightBracket
Definition: events.h:128
constexpr Event UpperM
Definition: events.h:198