1 #include "usb_keycodes.h"
5 static report_keyboard_t report0
;
6 static report_keyboard_t report1
;
7 static report_keyboard_t
*report
= &report0
;
8 static report_keyboard_t
*report_prev
= &report1
;
10 void keyboard_send(void)
12 host_keyboard_send(report
);
15 bool keyboard_has_key(void)
17 for (int i
= 0; i
< REPORT_KEYS
; i
++) {
24 void keyboard_add_mod(uint8_t mod
)
29 void keyboard_add_key(uint8_t code
)
33 for (; i
< REPORT_KEYS
; i
++) {
34 if (report_prev
->keys
[i
] == code
) {
35 report
->keys
[i
] = code
;
38 if (empty
== -1 && report_prev
->keys
[i
] == KB_NO
&& report
->keys
[i
] == KB_NO
) {
42 if (i
== REPORT_KEYS
&& empty
!= -1) {
43 report
->keys
[empty
] = code
;
47 void keyboard_add_code(uint8_t code
)
50 keyboard_add_mod(code
);
52 keyboard_add_key(code
);
56 void keyboard_swap_report(void)
58 report_keyboard_t
*tmp
= report_prev
;
63 void keyboard_clear_report(void)
66 for (int8_t i
= 0; i
< REPORT_KEYS
; i
++) {
71 report_keyboard_t
*keyboard_report(void)
76 report_keyboard_t
*keyboard_report_prev(void)