Banjo API 0.0.1
Multi-purpose C99 API
Loading...
Searching...
No Matches
input.h
Go to the documentation of this file.
1
9#pragma once
10
11#include <banjo/api.h>
12
23
24// TODO Align buttons and keys
26#define BJ_BUTTON_1 1
28#define BJ_BUTTON_2 2
30#define BJ_BUTTON_3 3
32#define BJ_BUTTON_4 4
34#define BJ_BUTTON_5 5
36#define BJ_BUTTON_LEFT BJ_BUTTON_1
38#define BJ_BUTTON_RIGHT BJ_BUTTON_3
40#define BJ_BUTTON_MIDDLE BJ_BUTTON_2
42#define BJ_BUTTON_UP BJ_BUTTON_4
44#define BJ_BUTTON_DOWN BJ_BUTTON_5
45
60typedef enum bj_key_t {
68 // 0x07 Reserved
69 BJ_KEY_BACK = 0x08,
70 BJ_KEY_TAB = 0x09,
71 // 0x0A-0B Reserved
72 BJ_KEY_CLEAR = 0x0C,
74 // 0x0E-0F Unassigned
75 BJ_KEY_SHIFT = 0x10,
77 BJ_KEY_MENU = 0x12,
78 BJ_KEY_PAUSE = 0x13,
80 BJ_KEY_KANA = 0x15,
82 BJ_KEY_JUNJA = 0x17,
83 BJ_KEY_FINAL = 0x18,
84 BJ_KEY_KANJI = 0x19,
91 BJ_KEY_SPACE = 0x20,
92 BJ_KEY_PRIOR = 0x21,
93 BJ_KEY_NEXT = 0x22,
94 BJ_KEY_END = 0x23,
95 BJ_KEY_HOME = 0x24,
96 BJ_KEY_LEFT = 0x25,
97 BJ_KEY_UP = 0x26,
98 BJ_KEY_RIGHT = 0x27,
99 BJ_KEY_DOWN = 0x28,
106 BJ_KEY_HELP = 0x2F,
107 BJ_KEY_0 = 0x30,
108 BJ_KEY_1 = 0x31,
109 BJ_KEY_2 = 0x32,
110 BJ_KEY_3 = 0x33,
111 BJ_KEY_4 = 0x34,
112 BJ_KEY_5 = 0x35,
113 BJ_KEY_6 = 0x36,
114 BJ_KEY_7 = 0x37,
115 BJ_KEY_8 = 0x38,
116 BJ_KEY_9 = 0x39,
117 // 0x3A-40 Undefined
118 BJ_KEY_A = 0x41,
119 BJ_KEY_B = 0x42,
120 BJ_KEY_C = 0x43,
121 BJ_KEY_D = 0x44,
122 BJ_KEY_E = 0x45,
123 BJ_KEY_F = 0x46,
124 BJ_KEY_G = 0x47,
125 BJ_KEY_H = 0x48,
126 BJ_KEY_I = 0x49,
127 BJ_KEY_J = 0x4A,
128 BJ_KEY_K = 0x4B,
129 BJ_KEY_L = 0x4C,
130 BJ_KEY_M = 0x4D,
131 BJ_KEY_N = 0x4E,
132 BJ_KEY_O = 0x4F,
133 BJ_KEY_P = 0x50,
134 BJ_KEY_Q = 0x51,
135 BJ_KEY_R = 0x52,
136 BJ_KEY_S = 0x53,
137 BJ_KEY_T = 0x54,
138 BJ_KEY_U = 0x55,
139 BJ_KEY_V = 0x56,
140 BJ_KEY_W = 0x57,
141 BJ_KEY_X = 0x58,
142 BJ_KEY_Y = 0x59,
143 BJ_KEY_Z = 0x5A,
144 BJ_KEY_LWIN = 0x5B,
145 BJ_KEY_RWIN = 0x5C,
146 BJ_KEY_APPS = 0x5D,
147 // 0x5E Reserved
160 BJ_KEY_ADD = 0x6B,
165 BJ_KEY_F1 = 0x70,
166 BJ_KEY_F2 = 0x71,
167 BJ_KEY_F3 = 0x72,
168 BJ_KEY_F4 = 0x73,
169 BJ_KEY_F5 = 0x74,
170 BJ_KEY_F6 = 0x75,
171 BJ_KEY_F7 = 0x76,
172 BJ_KEY_F8 = 0x77,
173 BJ_KEY_F9 = 0x78,
174 BJ_KEY_F10 = 0x79,
175 BJ_KEY_F11 = 0x7A,
176 BJ_KEY_F12 = 0x7B,
177 BJ_KEY_F13 = 0x7C,
178 BJ_KEY_F14 = 0x7D,
179 BJ_KEY_F15 = 0x7E,
180 BJ_KEY_F16 = 0x7F,
181 BJ_KEY_F17 = 0x80,
182 BJ_KEY_F18 = 0x81,
183 BJ_KEY_F19 = 0x82,
184 BJ_KEY_F20 = 0x83,
185 BJ_KEY_F21 = 0x84,
186 BJ_KEY_F22 = 0x85,
187 BJ_KEY_F23 = 0x86,
188 BJ_KEY_F24 = 0x87,
189 // 0x88-8F Reserved
192 // 0x92-96 OEM specific
193 // 0x97-9F Unassigned
218 // 0xB8-B9 Reserved
226 // 0xC1-DA Reserved
232 // 0xE0 Reserved
233 // 0xE1 OEM specific
235 // 0xE3-E4 OEM specific
237 // 0xE6 OEM specific
239 // 0xE8 Unassigned
240 // 0xE9-F5 OEM specific
241 BJ_KEY_ATTN = 0xF6,
245 BJ_KEY_PLAY = 0xFA,
246 BJ_KEY_ZOOM = 0xFB,
248 BJ_KEY_PA1 = 0xFD,
251
252// Some Keycode aliases
253#define BJ_KEY_APOSTROPHE BJ_KEY_OEM_7
254#define BJ_KEY_BACKSLASH BJ_KEY_OEM_5
255#define BJ_KEY_BACKSPACE BJ_KEY_BACK
256#define BJ_KEY_CAPSLOCK BJ_KEY_CAPITAL
257#define BJ_KEY_COMMA BJ_KEY_OEM_COMMA
258#define BJ_KEY_ENTER BJ_KEY_RETURN
259#define BJ_KEY_GRAVE_ACCENT BJ_KEY_OEM_3
260#define BJ_KEY_HANGUL BJ_KEY_KANA
261#define BJ_KEY_HANJA BJ_KEY_KANJI
262#define BJ_KEY_LEFT_ALT BJ_KEY_LMENU
263#define BJ_KEY_LEFT_BRACKET BJ_KEY_OEM_4
264#define BJ_KEY_LEFT_CONTROL BJ_KEY_LCONTROL
265#define BJ_KEY_LEFT_OS BJ_KEY_LWIN
266#define BJ_KEY_LEFT_SHIT BJ_KEY_LSHIFT
267#define BJ_KEY_MINUS BJ_KEY_OEM_MINUS
268#define BJ_KEY_PAGE_DOWN BJ_KEY_NEXT
269#define BJ_KEY_PAGE_UP BJ_KEY_PRIOR
270#define BJ_KEY_PERIOD BJ_KEY_OEM_PERIOD
271#define BJ_KEY_PLUS BJ_KEY_OEM_PLUS
272#define BJ_KEY_PRINT_SCREEN BJ_KEY_SNAPSHOT
273#define BJ_KEY_RIGHT_ALT BJ_KEY_RMENU
274#define BJ_KEY_RIGHT_BRACKET BJ_KEY_OEM_6
275#define BJ_KEY_RIGHT_CONTROL BJ_KEY_RCONTROL
276#define BJ_KEY_RIGHT_OS BJ_KEY_RWIN
277#define BJ_KEY_RIGHT_SHIFT BJ_KEY_RSHIFT
278#define BJ_KEY_SEMICOLON BJ_KEY_OEM_1
279#define BJ_KEY_SLASH BJ_KEY_OEM_2
280
295BANJO_EXPORT const char* bj_get_key_name(
296 int key
297);
298
General-purpose definitions for Banjo API.
bj_event_action_t
Event action type enumeration.
Definition input.h:18
enum bj_event_action_t bj_event_action
Event action type enumeration.
enum bj_key_t bj_key
List of possible keys on a keyboard.
const char * bj_get_key_name(int key)
Get a C-String representation of a key.
bj_key_t
List of possible keys on a keyboard.
Definition input.h:60
@ BJ_PRESS
The button/key is pressed.
Definition input.h:20
@ BJ_REPEAT
The button/key is kept being pressed.
Definition input.h:21
@ BJ_RELEASE
The button/key is released.
Definition input.h:19
@ BJ_KEY_F10
F10 key.
Definition input.h:174
@ BJ_KEY_XBUTTON2
X2 mouse button.
Definition input.h:67
@ BJ_KEY_U
U key.
Definition input.h:138
@ BJ_KEY_RMENU
Right Alt key.
Definition input.h:199
@ BJ_KEY_4
4 key
Definition input.h:111
@ BJ_KEY_DELETE
Delete key.
Definition input.h:105
@ BJ_KEY_LSHIFT
Left Shift key.
Definition input.h:194
@ BJ_KEY_MEDIA_PREV_TRACK
Previous Track key.
Definition input.h:211
@ BJ_KEY_F24
F24 key.
Definition input.h:188
@ BJ_KEY_LBUTTON
Left mouse button.
Definition input.h:62
@ BJ_KEY_M
M key.
Definition input.h:130
@ BJ_KEY_L
L key.
Definition input.h:129
@ BJ_KEY_MODECHANGE
IME mode change request.
Definition input.h:90
@ BJ_KEY_O
O key.
Definition input.h:132
@ BJ_KEY_S
S key.
Definition input.h:136
@ BJ_KEY_DOWN
Down arrow key.
Definition input.h:99
@ BJ_KEY_G
G key.
Definition input.h:124
@ BJ_KEY_OEM_PERIOD
For any country/region, the .
Definition input.h:223
@ BJ_KEY_Y
Y key.
Definition input.h:142
@ BJ_KEY_F17
F17 key.
Definition input.h:181
@ BJ_KEY_F18
F18 key.
Definition input.h:182
@ BJ_KEY_RWIN
Right Windows logo key.
Definition input.h:145
@ BJ_KEY_FINAL
IME final mode.
Definition input.h:83
@ BJ_KEY_CONVERT
IME convert.
Definition input.h:87
@ BJ_KEY_SCROLL
Scroll lock key.
Definition input.h:191
@ BJ_KEY_OEM_1
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:219
@ BJ_KEY_T
T key.
Definition input.h:137
@ BJ_KEY_OEM_7
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:230
@ BJ_KEY_8
8 key
Definition input.h:115
@ BJ_KEY_VOLUME_UP
Volume Up key.
Definition input.h:209
@ BJ_KEY_ADD
Add key.
Definition input.h:160
@ BJ_KEY_OEM_4
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:227
@ BJ_KEY_ATTN
Attn key.
Definition input.h:241
@ BJ_KEY_OEM_MINUS
For any country/region, the - key.
Definition input.h:222
@ BJ_KEY_W
W key.
Definition input.h:140
@ BJ_KEY_P
P key.
Definition input.h:133
@ BJ_KEY_KANJI
IME Hanja mode.
Definition input.h:84
@ BJ_KEY_ESCAPE
Esc key.
Definition input.h:86
@ BJ_KEY_E
E key.
Definition input.h:122
@ BJ_KEY_SLEEP
Computer Sleep key.
Definition input.h:148
@ BJ_KEY_MEDIA_PLAY_PAUSE
Play/Pause Media key.
Definition input.h:213
@ BJ_KEY_F22
F22 key.
Definition input.h:186
@ BJ_KEY_RSHIFT
Right Shift key.
Definition input.h:195
@ BJ_KEY_BROWSER_SEARCH
Browser Search key.
Definition input.h:204
@ BJ_KEY_SEPARATOR
Separator key.
Definition input.h:161
@ BJ_KEY_HELP
Help key.
Definition input.h:106
@ BJ_KEY_F19
F19 key.
Definition input.h:183
@ BJ_KEY_9
9 key
Definition input.h:116
@ BJ_KEY_NUMPAD5
Numeric keypad 5 key.
Definition input.h:154
@ BJ_KEY_H
H key.
Definition input.h:125
@ BJ_KEY_5
5 key
Definition input.h:112
@ BJ_KEY_PROCESSKEY
IME PROCESS key.
Definition input.h:236
@ BJ_KEY_V
V key.
Definition input.h:139
@ BJ_KEY_EXECUTE
Execute key.
Definition input.h:102
@ BJ_KEY_LAUNCH_MAIL
Start Mail key.
Definition input.h:214
@ BJ_KEY_F1
F1 key.
Definition input.h:165
@ BJ_KEY_BROWSER_HOME
Browser Start and Home key.
Definition input.h:206
@ BJ_KEY_KANA
IME Kana mode.
Definition input.h:80
@ BJ_KEY_OEM_2
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:224
@ BJ_KEY_F16
F16 key.
Definition input.h:180
@ BJ_KEY_CRSEL
CrSel key.
Definition input.h:242
@ BJ_KEY_NEXT
Page down key.
Definition input.h:93
@ BJ_KEY_MBUTTON
Middle mouse button.
Definition input.h:65
@ BJ_KEY_J
J key.
Definition input.h:127
@ BJ_KEY_2
2 key
Definition input.h:109
@ BJ_KEY_IME_ON
IME On.
Definition input.h:81
@ BJ_KEY_NUMPAD7
Numeric keypad 7 key.
Definition input.h:156
@ BJ_KEY_NUMPAD1
Numeric keypad 1 key.
Definition input.h:150
@ BJ_KEY_OEM_COMMA
For any country/region, the , key.
Definition input.h:221
@ BJ_KEY_PRIOR
Page up key.
Definition input.h:92
@ BJ_KEY_F6
F6 key.
Definition input.h:170
@ BJ_KEY_CONTROL
Ctrl key.
Definition input.h:76
@ BJ_KEY_F23
F23 key.
Definition input.h:187
@ BJ_KEY_LWIN
Left Windows logo key.
Definition input.h:144
@ BJ_KEY_LEFT
Left arrow key.
Definition input.h:96
@ BJ_KEY_C
C key.
Definition input.h:120
@ BJ_KEY_IME_OFF
IME Off.
Definition input.h:85
@ BJ_KEY_F
F key.
Definition input.h:123
@ BJ_KEY_D
D key.
Definition input.h:121
@ BJ_KEY_NUMPAD8
Numeric keypad 8 key.
Definition input.h:157
@ BJ_KEY_RIGHT
Right arrow key.
Definition input.h:98
@ BJ_KEY_Q
Q key.
Definition input.h:134
@ BJ_KEY_BROWSER_REFRESH
Browser Refresh key.
Definition input.h:202
@ BJ_KEY_PRINT
Print key.
Definition input.h:101
@ BJ_KEY_N
N key.
Definition input.h:131
@ BJ_KEY_MEDIA_NEXT_TRACK
Next Track key.
Definition input.h:210
@ BJ_KEY_F15
F15 key.
Definition input.h:179
@ BJ_KEY_LAUNCH_APP1
Start Application 1 key.
Definition input.h:216
@ BJ_KEY_NUMLOCK
Num lock key.
Definition input.h:190
@ BJ_KEY_INSERT
Insert key.
Definition input.h:104
@ BJ_KEY_PLAY
Play key.
Definition input.h:245
@ BJ_KEY_DIVIDE
Divide key.
Definition input.h:164
@ BJ_KEY_EXSEL
ExSel key.
Definition input.h:243
@ BJ_KEY_F14
F14 key.
Definition input.h:178
@ BJ_KEY_ZOOM
Zoom key.
Definition input.h:246
@ BJ_KEY_ACCEPT
IME accept.
Definition input.h:89
@ BJ_KEY_DECIMAL
Decimal key.
Definition input.h:163
@ BJ_KEY_RBUTTON
Right mouse button.
Definition input.h:63
@ BJ_KEY_PACKET
Used to pass Unicode characters as if they were keystrokes.
Definition input.h:238
@ BJ_KEY_SNAPSHOT
Print screen key.
Definition input.h:103
@ BJ_KEY_F13
F13 key.
Definition input.h:177
@ BJ_KEY_K
K key.
Definition input.h:128
@ BJ_KEY_F4
F4 key.
Definition input.h:168
@ BJ_KEY_OEM_3
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:225
@ BJ_KEY_NUMPAD6
Numeric keypad 6 key.
Definition input.h:155
@ BJ_KEY_LAUNCH_MEDIA_SELECT
Select Media key.
Definition input.h:215
@ BJ_KEY_TAB
Tab key.
Definition input.h:70
@ BJ_KEY_EREOF
Erase EOF key.
Definition input.h:244
@ BJ_KEY_1
1 key
Definition input.h:108
@ BJ_KEY_F8
F8 key.
Definition input.h:172
@ BJ_KEY_VOLUME_MUTE
Volume Mute key.
Definition input.h:207
@ BJ_KEY_OEM_CLEAR
Clear key.
Definition input.h:249
@ BJ_KEY_Z
Z key.
Definition input.h:143
@ BJ_KEY_B
B key.
Definition input.h:119
@ BJ_KEY_F9
F9 key.
Definition input.h:173
@ BJ_KEY_R
R key.
Definition input.h:135
@ BJ_KEY_X
X key.
Definition input.h:141
@ BJ_KEY_PA1
PA1 key.
Definition input.h:248
@ BJ_KEY_NUMPAD3
Numeric keypad 3 key.
Definition input.h:152
@ BJ_KEY_6
6 key
Definition input.h:113
@ BJ_KEY_RCONTROL
Right Ctrl key.
Definition input.h:197
@ BJ_KEY_NUMPAD9
Numeric keypad 9 key.
Definition input.h:158
@ BJ_KEY_SUBTRACT
Subtract key.
Definition input.h:162
@ BJ_KEY_APPS
Application key.
Definition input.h:146
@ BJ_KEY_F7
F7 key.
Definition input.h:171
@ BJ_KEY_RETURN
Enter key.
Definition input.h:73
@ BJ_KEY_END
End key.
Definition input.h:94
@ BJ_KEY_BROWSER_STOP
Browser Stop key.
Definition input.h:203
@ BJ_KEY_LCONTROL
Left Ctrl key.
Definition input.h:196
@ BJ_KEY_3
3 key
Definition input.h:110
@ BJ_KEY_BROWSER_BACK
Browser Back key.
Definition input.h:200
@ BJ_KEY_CLEAR
Clear key.
Definition input.h:72
@ BJ_KEY_BROWSER_FORWARD
Browser Forward key.
Definition input.h:201
@ BJ_KEY_UNKNOWN
No Button.
Definition input.h:61
@ BJ_KEY_OEM_8
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:231
@ BJ_KEY_CAPITAL
Caps lock key.
Definition input.h:79
@ BJ_KEY_NONCONVERT
IME nonconvert.
Definition input.h:88
@ BJ_KEY_OEM_5
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:228
@ BJ_KEY_I
I key.
Definition input.h:126
@ BJ_KEY_F21
F21 key.
Definition input.h:185
@ BJ_KEY_F11
F11 key.
Definition input.h:175
@ BJ_KEY_HOME
Home key.
Definition input.h:95
@ BJ_KEY_PAUSE
Pause key.
Definition input.h:78
@ BJ_KEY_NUMPAD4
Numeric keypad 4 key.
Definition input.h:153
@ BJ_KEY_F20
F20 key.
Definition input.h:184
@ BJ_KEY_MENU
Alt key.
Definition input.h:77
@ BJ_KEY_BROWSER_FAVORITES
Browser Favorites key.
Definition input.h:205
@ BJ_KEY_MEDIA_STOP
Stop Media key.
Definition input.h:212
@ BJ_KEY_A
A key.
Definition input.h:118
@ BJ_KEY_F5
F5 key.
Definition input.h:169
@ BJ_KEY_BACK
Backspace key.
Definition input.h:69
@ BJ_KEY_OEM_PLUS
For any country/region, the + key.
Definition input.h:220
@ BJ_KEY_JUNJA
IME Junja mode.
Definition input.h:82
@ BJ_KEY_NUMPAD0
Numeric keypad 0 key.
Definition input.h:149
@ BJ_KEY_OEM_6
Used for miscellaneous characters; it can vary by keyboard.
Definition input.h:229
@ BJ_KEY_VOLUME_DOWN
Volume Down key.
Definition input.h:208
@ BJ_KEY_UP
Up arrow key.
Definition input.h:97
@ BJ_KEY_LAUNCH_APP2
Start Application 2 key.
Definition input.h:217
@ BJ_KEY_0
0 key
Definition input.h:107
@ BJ_KEY_F3
F3 key.
Definition input.h:167
@ BJ_KEY_SHIFT
Shift key.
Definition input.h:75
@ BJ_KEY_XBUTTON1
X1 mouse button.
Definition input.h:66
@ BJ_KEY_LMENU
Left Alt key.
Definition input.h:198
@ BJ_KEY_SELECT
Select key.
Definition input.h:100
@ BJ_KEY_CANCEL
Control-break processing.
Definition input.h:64
@ BJ_KEY_OEM_102
The <> keys on the US standard keyboard, or the \| key on the non-US 102-key keyboard.
Definition input.h:234
@ BJ_KEY_NUMPAD2
Numeric keypad 2 key.
Definition input.h:151
@ BJ_KEY_7
7 key
Definition input.h:114
@ BJ_KEY_MULTIPLY
Multiply key.
Definition input.h:159
@ BJ_KEY_SPACE
Spacebar key.
Definition input.h:91
@ BJ_KEY_F12
F12 key.
Definition input.h:176
@ BJ_KEY_NONAME
Reserved.
Definition input.h:247
@ BJ_KEY_F2
F2 key.
Definition input.h:166