ShishGL  1.0
A simple modular cross-platform graphics library
Keyboard.hpp
Go to the documentation of this file.
1 /*============================================================================*/
2 #ifndef SHISHGL_KEYBOARD_HPP
3 #define SHISHGL_KEYBOARD_HPP
4 /*============================================================================*/
5 #include <cstdint>
6 /*============================================================================*/
7 namespace Sh {
8 
9  class Keyboard {
10  public:
11 
12  enum KeyState {
14  UP
15  };
16 
17  using ModifierMask = uint8_t;
18 
19  static constexpr ModifierMask
20  L_SHIFT_MOD = 0b00000001,
21  R_SHIFT_MOD = 0b00010000,
22  L_CTRL_MOD = 0b00000010,
23  R_CTRL_MOD = 0b00100000,
24  L_ALT_MOD = 0b00000100,
25  R_ALT_MOD = 0b01000000,
26  META_MOD = 0b10000000;
27 
28  enum Key {
29  UNKNOWN = -1,
30 
31  /* convertible: */
32  A,
33  B,
34  C,
35  D,
36  E,
37  F,
38  G,
39  H,
40  I,
41  J,
42  K,
43  L,
44  M,
45  N,
46  O,
47  P,
48  Q,
49  R,
50  S,
51  T,
52  U,
53  V,
54  W,
55  X,
56  Y,
57  Z,
71  DOT,
72 
74 
75  /* non-convertible: */
77  DEL,
78  ESC,
79  TAB,
92 
93  /* TODO: handle more */
94 
95  KEY_COUNT
96  };
97 
98  [[nodiscard]]
99  static bool isConvertible(Keyboard::Key key);
100 
101  [[nodiscard]]
102  static uint8_t convertToChar(Keyboard::Key key);
103 
104  };
105 
106 }
107 /*============================================================================*/
108 #endif //SHISHGL_KEYBOARD_HPP
109 /*============================================================================*/
Sh::Keyboard::convertToChar
static uint8_t convertToChar(Keyboard::Key key)
Definition: Keyboard.cpp:13
Sh::Keyboard::L_ALT_MOD
static constexpr ModifierMask L_ALT_MOD
Definition: Keyboard.hpp:24
Sh::Keyboard::T
@ T
Definition: Keyboard.hpp:51
Sh::Keyboard::L_SHIFT_MOD
static constexpr ModifierMask L_SHIFT_MOD
Definition: Keyboard.hpp:20
Sh::Keyboard::Num1
@ Num1
Definition: Keyboard.hpp:59
Sh::Keyboard::J
@ J
Definition: Keyboard.hpp:41
Sh::Keyboard::Num8
@ Num8
Definition: Keyboard.hpp:66
Sh::Keyboard::A
@ A
Definition: Keyboard.hpp:32
Sh::Keyboard::L_SHIFT
@ L_SHIFT
Definition: Keyboard.hpp:81
Sh::Keyboard::K
@ K
Definition: Keyboard.hpp:42
Sh::Keyboard::Key
Key
Definition: Keyboard.hpp:28
Sh::Keyboard::Z
@ Z
Definition: Keyboard.hpp:57
Sh::Keyboard::LAST_CONVERTIBLE
@ LAST_CONVERTIBLE
Definition: Keyboard.hpp:73
Sh::Keyboard::I
@ I
Definition: Keyboard.hpp:40
Sh::Keyboard::R_ALT
@ R_ALT
Definition: Keyboard.hpp:87
Sh::Keyboard::D
@ D
Definition: Keyboard.hpp:35
Sh::Keyboard::META
@ META
Definition: Keyboard.hpp:85
Sh::Keyboard::ARROW_RIGHT
@ ARROW_RIGHT
Definition: Keyboard.hpp:91
Sh::Keyboard::H
@ H
Definition: Keyboard.hpp:39
Sh::Keyboard::W
@ W
Definition: Keyboard.hpp:54
Sh::Keyboard::V
@ V
Definition: Keyboard.hpp:53
Sh::Keyboard
Definition: Keyboard.hpp:9
Sh::Keyboard::UP
@ UP
Definition: Keyboard.hpp:14
Sh::Keyboard::ModifierMask
uint8_t ModifierMask
Definition: Keyboard.hpp:17
Sh::Keyboard::SPACE
@ SPACE
Definition: Keyboard.hpp:68
Sh::Keyboard::Y
@ Y
Definition: Keyboard.hpp:56
Sh::Keyboard::R_CTRL
@ R_CTRL
Definition: Keyboard.hpp:84
Sh::Keyboard::TAB
@ TAB
Definition: Keyboard.hpp:79
Sh::Keyboard::CAPS_LOCK
@ CAPS_LOCK
Definition: Keyboard.hpp:80
Sh::Keyboard::L_CTRL_MOD
static constexpr ModifierMask L_CTRL_MOD
Definition: Keyboard.hpp:22
Sh::Keyboard::UNKNOWN
@ UNKNOWN
Definition: Keyboard.hpp:29
Sh::Keyboard::E
@ E
Definition: Keyboard.hpp:36
Sh::Keyboard::Num9
@ Num9
Definition: Keyboard.hpp:67
Sh::Keyboard::C
@ C
Definition: Keyboard.hpp:34
Sh::Keyboard::Q
@ Q
Definition: Keyboard.hpp:48
Sh::Keyboard::B
@ B
Definition: Keyboard.hpp:33
Sh::Keyboard::Num4
@ Num4
Definition: Keyboard.hpp:62
Sh::Keyboard::DEL
@ DEL
Definition: Keyboard.hpp:77
Sh::Keyboard::RETURN
@ RETURN
Definition: Keyboard.hpp:69
Sh
Definition: CoreApplication.hpp:10
Sh::Keyboard::R_SHIFT
@ R_SHIFT
Definition: Keyboard.hpp:82
Sh::Keyboard::S
@ S
Definition: Keyboard.hpp:50
Sh::Keyboard::R_SHIFT_MOD
static constexpr ModifierMask R_SHIFT_MOD
Definition: Keyboard.hpp:21
Sh::Keyboard::R_CTRL_MOD
static constexpr ModifierMask R_CTRL_MOD
Definition: Keyboard.hpp:23
Sh::Keyboard::F
@ F
Definition: Keyboard.hpp:37
Sh::Keyboard::R
@ R
Definition: Keyboard.hpp:49
Sh::Keyboard::L
@ L
Definition: Keyboard.hpp:43
Sh::Keyboard::G
@ G
Definition: Keyboard.hpp:38
Sh::Keyboard::L_ALT
@ L_ALT
Definition: Keyboard.hpp:86
Sh::Keyboard::Num2
@ Num2
Definition: Keyboard.hpp:60
Sh::Keyboard::U
@ U
Definition: Keyboard.hpp:52
Sh::Keyboard::isConvertible
static bool isConvertible(Keyboard::Key key)
Definition: Keyboard.cpp:7
Sh::Keyboard::META_MOD
static constexpr ModifierMask META_MOD
Definition: Keyboard.hpp:26
Sh::Keyboard::Num3
@ Num3
Definition: Keyboard.hpp:61
Sh::Keyboard::Num7
@ Num7
Definition: Keyboard.hpp:65
Sh::Keyboard::ESC
@ ESC
Definition: Keyboard.hpp:78
Sh::Keyboard::BACKSPACE
@ BACKSPACE
Definition: Keyboard.hpp:76
Sh::Keyboard::Num0
@ Num0
Definition: Keyboard.hpp:58
Sh::Keyboard::L_CTRL
@ L_CTRL
Definition: Keyboard.hpp:83
Sh::Keyboard::DOT
@ DOT
Definition: Keyboard.hpp:71
Sh::Keyboard::Num6
@ Num6
Definition: Keyboard.hpp:64
Sh::Keyboard::P
@ P
Definition: Keyboard.hpp:47
Sh::Keyboard::KeyState
KeyState
Definition: Keyboard.hpp:12
Sh::Keyboard::M
@ M
Definition: Keyboard.hpp:44
Sh::Keyboard::N
@ N
Definition: Keyboard.hpp:45
Sh::Keyboard::R_ALT_MOD
static constexpr ModifierMask R_ALT_MOD
Definition: Keyboard.hpp:25
Sh::Keyboard::COMMA
@ COMMA
Definition: Keyboard.hpp:70
Sh::Keyboard::KEY_COUNT
@ KEY_COUNT
Definition: Keyboard.hpp:95
Sh::Keyboard::DOWN
@ DOWN
Definition: Keyboard.hpp:13
Sh::Keyboard::ARROW_UP
@ ARROW_UP
Definition: Keyboard.hpp:88
Sh::Keyboard::ARROW_DOWN
@ ARROW_DOWN
Definition: Keyboard.hpp:89
Sh::Keyboard::X
@ X
Definition: Keyboard.hpp:55
Sh::Keyboard::ARROW_LEFT
@ ARROW_LEFT
Definition: Keyboard.hpp:90
Sh::Keyboard::O
@ O
Definition: Keyboard.hpp:46
Sh::Keyboard::Num5
@ Num5
Definition: Keyboard.hpp:63