keyboard.c (971B)
1 #include <stddef.h>
2 #include <stdbool.h>
3 #include "keyboard.h"
4
5 ta_keyboards ta_keyboard;
6
7 bool ta_keyboard_is_down(ta_keyboard_keys key) {
8 if (key == KEY_NONE) {
9 return false;
10 }
11
12 for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
13 if (ta_keyboard.keys_down[i] == (uint8_t)key) {
14 return true;
15 }
16 }
17
18 return false;
19 }
20
21 void ta_keyboard_key_down(ta_keyboard_keys key) {
22 if (key == KEY_NONE || ta_keyboard_is_down(key)) {
23 return;
24 }
25
26 for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
27 if (ta_keyboard.keys_down[i] == KEY_NONE) {
28 ta_keyboard.keys_down[i] = (uint8_t)key;
29
30 return;
31 }
32 }
33 }
34
35 void ta_keyboard_key_up(ta_keyboard_keys key) {
36 for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
37 if (ta_keyboard.keys_down[i] == (uint8_t)key) {
38 ta_keyboard.keys_down[i] = KEY_NONE;
39
40 return;
41 }
42 }
43 }
44
45 void ta_keyboard_clear(void) {
46 for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
47 ta_keyboard.keys_down[i] = KEY_NONE;
48 }
49 }