24#ifndef __DC_MAPLE_KEYBOARD_H
25#define __DC_MAPLE_KEYBOARD_H
76#define KBD_MOD_LCTRL BIT(0)
77#define KBD_MOD_LSHIFT BIT(1)
78#define KBD_MOD_LALT BIT(2)
79#define KBD_MOD_S1 BIT(3)
80#define KBD_MOD_RCTRL BIT(4)
81#define KBD_MOD_RSHIFT BIT(5)
82#define KBD_MOD_RALT BIT(6)
83#define KBD_MOD_S2 BIT(7)
87#define KBD_MOD_CTRL (KBD_MOD_LCTRL | KBD_MOD_RCTRL)
89#define KBD_MOD_SHIFT (KBD_MOD_LSHIFT | KBD_MOD_RSHIFT)
91#define KBD_MOD_ALT (KBD_MOD_LALT | KBD_MOD_RALT)
100typedef union kbd_mods {
140#define KBD_LED_NUMLOCK BIT(0)
141#define KBD_LED_CAPSLOCK BIT(1)
142#define KBD_LED_SCRLOCK BIT(2)
143#define KBD_LED_UNKNOWN1 BIT(3)
144#define KBD_LED_UNKNOWN2 BIT(4)
145#define KBD_LED_KANA BIT(5)
146#define KBD_LED_POWER BIT(6)
147#define KBD_LED_SHIFT BIT(7)
156typedef union kbd_leds {
177typedef enum kbd_region {
328#define KEY_STATE_NONE 0
329#define KEY_STATE_WAS_PRESSED 1
330#define KEY_STATE_PRESSED 2
337#define MAX_PRESSED_KEYS 6
343#define KBD_MAX_KEYS 256
348typedef void kbd_keymap_t __depr(
"Please open an issue, there should be no reason for external code to have used this.");
369typedef struct kbd_state {
385 int shift_keys __depr(
"Please see kbd_mods_t and use last_modifiers.raw to access this.");
494#define KBD_QUEUE_SIZE 16
503#define KBD_QUEUE_END -1
604void kbd_shutdown(
void);
kbd_state_t * kbd_get_state(maple_device_t *device)
Retrieves the keyboard state from a maple device.
void kbd_set_repeat_timing(uint16_t start, uint16_t interval)
Configures held key auto-repeat intervals.
int kbd_queue_pop(maple_device_t *dev, bool xlat)
Pop a key off a specific keyboard's queue.
int kbd_get_key(void) __deprecated
Pop a key off the global keyboard queue.
void kbd_set_queue(int active) __deprecated
Activate or deactivate global key queueing.
kbd_region_t
Region Codes for the Dreamcast keyboard.
Definition keyboard.h:177
static const int MAX_KBD_KEYS("Please use KBD_MAX_KEYS.")
#define MAX_PRESSED_KEYS
Maximum number of keys the DC can read simultaneously.
Definition keyboard.h:337
char kbd_key_to_ascii(kbd_key_t key, kbd_region_t region, kbd_mods_t mods, kbd_leds_t leds)
Converts a kbd_key_t value into its corresponding ASCII value.
enum __packed kbd_key
Raw Keyboard Key Identifiers.
Definition keyboard.h:196
#define KBD_MAX_KEYS
Maximum number of keys a DC keyboard can have.
Definition keyboard.h:343
enum __packed kbd_key kbd_key_t
Raw Keyboard Key Identifiers.
void kbd_keymap_t("Please open an issue, there should be no reason for external code to have used this.")
Definition keyboard.h:348
@ KBD_REGION_FR
French keyboard.
Definition keyboard.h:182
@ KBD_REGION_US
US keyboard.
Definition keyboard.h:179
@ KBD_REGION_IT
Italian keyboard (not supported yet)
Definition keyboard.h:183
@ KBD_REGION_UK
UK keyboard.
Definition keyboard.h:180
@ KBD_REGION_ES
Spanish keyboard.
Definition keyboard.h:184
@ KBD_REGION_DE
German keyboard.
Definition keyboard.h:181
@ KBD_REGION_JP
Japanese keyboard.
Definition keyboard.h:178
#define __packed
Force a structure, enum, or other type to be packed as small as possible.
Definition cdefs.h:73
#define __deprecated
Mark something as deprecated.
Definition cdefs.h:116
KBD_KEY_R
R key.
Definition keyboard.h:218
KBD_KEY_C
C key.
Definition keyboard.h:203
KBD_KEY_LEFT
Left Arrow key.
Definition keyboard.h:276
KBD_KEY_F9
F9 key.
Definition keyboard.h:262
KBD_KEY_PAD_6
Keypad 6 key.
Definition keyboard.h:290
KBD_KEY_PERIOD
Period key.
Definition keyboard.h:251
KBD_KEY_PLUS
Plus key.
Definition keyboard.h:243
KBD_KEY_F4
F4 key.
Definition keyboard.h:257
KBD_KEY_ERR3
Unknown error.
Definition keyboard.h:200
KBD_KEY_G
G key.
Definition keyboard.h:207
KBD_KEY_2
2 key
Definition keyboard.h:228
KBD_KEY_O
O key.
Definition keyboard.h:215
KBD_KEY_N
N key.
Definition keyboard.h:214
KBD_KEY_QUOTE
Double Quote key.
Definition keyboard.h:248
KBD_KEY_TAB
Tab key.
Definition keyboard.h:240
KBD_KEY_COMMA
Comma key.
Definition keyboard.h:250
KBD_KEY_DEL
Delete key.
Definition keyboard.h:272
KBD_KEY_PAUSE
Pause key.
Definition keyboard.h:268
KBD_KEY_H
H key.
Definition keyboard.h:208
KBD_KEY_SEMICOLON
Semicolon key.
Definition keyboard.h:247
KBD_KEY_B
B key.
Definition keyboard.h:202
KBD_KEY_PAD_DIVIDE
Keypad Divide key.
Definition keyboard.h:280
KBD_KEY_8
8 key
Definition keyboard.h:234
KBD_KEY_END
End key.
Definition keyboard.h:273
KBD_KEY_3
3 key
Definition keyboard.h:229
KBD_KEY_0
0 key
Definition keyboard.h:236
KBD_KEY_K
K key.
Definition keyboard.h:211
KBD_KEY_TILDE
Tilde key.
Definition keyboard.h:249
KBD_KEY_F6
F6 key.
Definition keyboard.h:259
KBD_KEY_PAD_1
Keypad 1 key.
Definition keyboard.h:285
KBD_KEY_F10
F10 key.
Definition keyboard.h:263
KBD_KEY_L
L key.
Definition keyboard.h:212
KBD_KEY_ERROR
ERROR_ROLLOVER.
Definition keyboard.h:198
KBD_KEY_I
I key.
Definition keyboard.h:209
KBD_KEY_F12
F12 key.
Definition keyboard.h:265
KBD_KEY_Z
Z key.
Definition keyboard.h:226
KBD_KEY_PAD_9
Keypad 9 key.
Definition keyboard.h:293
KBD_KEY_T
T key.
Definition keyboard.h:220
KBD_KEY_D
D key.
Definition keyboard.h:204
KBD_KEY_PRINT
Print Screen key.
Definition keyboard.h:266
KBD_KEY_PAD_NUMLOCK
Keypad Numlock key.
Definition keyboard.h:279
KBD_KEY_F5
F5 key.
Definition keyboard.h:258
KBD_KEY_SCRLOCK
Scroll Lock key.
Definition keyboard.h:267
KBD_KEY_PAD_MINUS
Keypad Minus key.
Definition keyboard.h:282
KBD_KEY_MINUS
Minus key.
Definition keyboard.h:242
KBD_KEY_ESCAPE
Escape key.
Definition keyboard.h:238
KBD_KEY_PAD_3
Keypad 3 key.
Definition keyboard.h:287
KBD_KEY_BACKSLASH
Backslash key.
Definition keyboard.h:246
KBD_KEY_PGUP
Page Up key.
Definition keyboard.h:271
KBD_KEY_SPACE
Space key.
Definition keyboard.h:241
KBD_KEY_PAD_0
Keypad 0 key.
Definition keyboard.h:294
KBD_KEY_F11
F11 key.
Definition keyboard.h:264
KBD_KEY_PAD_5
Keypad 5 key.
Definition keyboard.h:289
KBD_KEY_E
E key.
Definition keyboard.h:205
KBD_KEY_S
S key.
Definition keyboard.h:219
KBD_KEY_PAD_2
Keypad 2 key.
Definition keyboard.h:286
KBD_KEY_6
6 key
Definition keyboard.h:232
KBD_KEY_9
9 key
Definition keyboard.h:235
KBD_KEY_M
M key.
Definition keyboard.h:213
KBD_KEY_RIGHT
Right Arrow key.
Definition keyboard.h:275
KBD_KEY_J
J key.
Definition keyboard.h:210
KBD_KEY_W
W key.
Definition keyboard.h:223
KBD_KEY_PAD_PLUS
Keypad Plus key.
Definition keyboard.h:283
KBD_KEY_PGDOWN
Page Down key.
Definition keyboard.h:274
KBD_KEY_5
5 key
Definition keyboard.h:231
KBD_KEY_NONE
No key.
Definition keyboard.h:197
KBD_KEY_PAD_4
Keypad 4 key.
Definition keyboard.h:288
KBD_KEY_RBRACKET
Right Bracket key.
Definition keyboard.h:245
KBD_KEY_F3
F3 key.
Definition keyboard.h:256
KBD_KEY_F1
F1 key.
Definition keyboard.h:254
KBD_KEY_F
F key.
Definition keyboard.h:206
KBD_KEY_1
1 key
Definition keyboard.h:227
KBD_KEY_PAD_PERIOD
Keypad Period key.
Definition keyboard.h:295
KBD_KEY_A
A key.
Definition keyboard.h:201
KBD_KEY_UP
Up Arrow key.
Definition keyboard.h:278
KBD_KEY_U
U key.
Definition keyboard.h:221
KBD_KEY_PAD_8
Keypad 8 key.
Definition keyboard.h:292
KBD_KEY_4
4 key
Definition keyboard.h:230
KBD_KEY_F2
F2 key.
Definition keyboard.h:255
KBD_KEY_PAD_7
Keypad 7 key.
Definition keyboard.h:291
KBD_KEY_P
P key.
Definition keyboard.h:216
KBD_KEY_HOME
Home key.
Definition keyboard.h:270
KBD_KEY_BACKSPACE
Backspace key.
Definition keyboard.h:239
KBD_KEY_ENTER
Enter key.
Definition keyboard.h:237
KBD_KEY_ERR2
Unknown error.
Definition keyboard.h:199
KBD_KEY_Q
Q key.
Definition keyboard.h:217
KBD_KEY_LBRACKET
Left Bracket key.
Definition keyboard.h:244
KBD_KEY_DOWN
Down Arrow key.
Definition keyboard.h:277
KBD_KEY_V
V key.
Definition keyboard.h:222
KBD_KEY_7
7 key
Definition keyboard.h:233
KBD_KEY_INSERT
Insert key.
Definition keyboard.h:269
KBD_KEY_PAD_MULTIPLY
Keypad Multiply key.
Definition keyboard.h:281
KBD_KEY_F8
F8 key.
Definition keyboard.h:261
KBD_KEY_Y
Y key.
Definition keyboard.h:225
KBD_KEY_F7
F7 key.
Definition keyboard.h:260
KBD_KEY_X
X key.
Definition keyboard.h:224
KBD_KEY_PAD_ENTER
Keypad Enter key.
Definition keyboard.h:284
KBD_KEY_CAPSLOCK
Caps Lock key.
Definition keyboard.h:253
KBD_KEY_SLASH
Slash key.
Definition keyboard.h:252
Maple Bus driver interface.
Macros to help dealing with register fields.
Keyboard raw condition structure.
Definition keyboard.h:356
kbd_mods_t modifiers
Bitmask of set modifiers.
Definition keyboard.h:357
kbd_leds_t leds
Bitmask of set LEDs.
Definition keyboard.h:358
Keyboard status structure.
Definition keyboard.h:369
kbd_mods_t last_modifiers
Definition keyboard.h:386
kbd_cond_t cond
The latest raw condition of the keyboard.
Definition keyboard.h:371
kbd_region_t region
Keyboard type/region.
Definition keyboard.h:390
One maple device.
Definition maple.h:271
Keyboard LEDs.
Definition keyboard.h:156
uint8_t raw
Packed 8-bit unsigned integer of bitflags.
Definition keyboard.h:168
uint8_t kana
Kana LED.
Definition keyboard.h:164
uint8_t caps_lock
Caps Lock LED.
Definition keyboard.h:160
uint8_t scroll_lock
Scroll Lock LED.
Definition keyboard.h:161
uint8_t power
Power LED.
Definition keyboard.h:165
uint8_t unknown2
Unknown LED 2.
Definition keyboard.h:163
uint8_t num_lock
Num Lock LED.
Definition keyboard.h:159
uint8_t unknown1
Unknown LED 1.
Definition keyboard.h:162
uint8_t shift
Shift LED.
Definition keyboard.h:166
Modifier Keys.
Definition keyboard.h:100
uint8_t rshift
Right Shift key.
Definition keyboard.h:108
uint8_t lctrl
Left Control key.
Definition keyboard.h:103
uint8_t lalt
Left Alternate key.
Definition keyboard.h:105
uint8_t lshift
Left Shift key.
Definition keyboard.h:104
uint8_t s2
S2 key.
Definition keyboard.h:110
uint8_t s1
S1 key.
Definition keyboard.h:106
uint8_t rctrl
Right Control key.
Definition keyboard.h:107
uint8_t ralt
Right Alternate key.
Definition keyboard.h:109
uint8_t raw
Packed 8-bit unsigned integer of bitflags.
Definition keyboard.h:112