forked from mirrors/qmk_userspace
Separate 6KRO and NKRO report structs (#22267)
This commit is contained in:
parent
bf6f13a2b0
commit
0c160e1fba
20 changed files with 187 additions and 165 deletions
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#include "report.h"
|
||||
#include "action_util.h"
|
||||
#include "host.h"
|
||||
#include "keycode_config.h"
|
||||
#include "debug.h"
|
||||
|
@ -35,14 +36,14 @@ static int8_t cb_count = 0;
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
uint8_t has_anykey(report_keyboard_t* keyboard_report) {
|
||||
uint8_t has_anykey(void) {
|
||||
uint8_t cnt = 0;
|
||||
uint8_t* p = keyboard_report->keys;
|
||||
uint8_t lp = sizeof(keyboard_report->keys);
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_protocol && keymap_config.nkro) {
|
||||
p = keyboard_report->nkro.bits;
|
||||
lp = sizeof(keyboard_report->nkro.bits);
|
||||
p = nkro_report->bits;
|
||||
lp = sizeof(nkro_report->bits);
|
||||
}
|
||||
#endif
|
||||
while (lp--) {
|
||||
|
@ -55,13 +56,13 @@ uint8_t has_anykey(report_keyboard_t* keyboard_report) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
uint8_t get_first_key(report_keyboard_t* keyboard_report) {
|
||||
uint8_t get_first_key(void) {
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_protocol && keymap_config.nkro) {
|
||||
uint8_t i = 0;
|
||||
for (; i < NKRO_REPORT_BITS && !keyboard_report->nkro.bits[i]; i++)
|
||||
for (; i < NKRO_REPORT_BITS && !nkro_report->bits[i]; i++)
|
||||
;
|
||||
return i << 3 | biton(keyboard_report->nkro.bits[i]);
|
||||
return i << 3 | biton(nkro_report->bits[i]);
|
||||
}
|
||||
#endif
|
||||
#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE
|
||||
|
@ -83,14 +84,14 @@ uint8_t get_first_key(report_keyboard_t* keyboard_report) {
|
|||
* Returns true if the keyboard_report reports that the key is pressed, otherwise false
|
||||
* Note: The function doesn't support modifers currently, and it returns false for KC_NO
|
||||
*/
|
||||
bool is_key_pressed(report_keyboard_t* keyboard_report, uint8_t key) {
|
||||
bool is_key_pressed(uint8_t key) {
|
||||
if (key == KC_NO) {
|
||||
return false;
|
||||
}
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_protocol && keymap_config.nkro) {
|
||||
if ((key >> 3) < NKRO_REPORT_BITS) {
|
||||
return keyboard_report->nkro.bits[key >> 3] & 1 << (key & 7);
|
||||
return nkro_report->bits[key >> 3] & 1 << (key & 7);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -215,9 +216,9 @@ void del_key_byte(report_keyboard_t* keyboard_report, uint8_t code) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
void add_key_bit(report_keyboard_t* keyboard_report, uint8_t code) {
|
||||
void add_key_bit(report_nkro_t* nkro_report, uint8_t code) {
|
||||
if ((code >> 3) < NKRO_REPORT_BITS) {
|
||||
keyboard_report->nkro.bits[code >> 3] |= 1 << (code & 7);
|
||||
nkro_report->bits[code >> 3] |= 1 << (code & 7);
|
||||
} else {
|
||||
dprintf("add_key_bit: can't add: %02X\n", code);
|
||||
}
|
||||
|
@ -227,9 +228,9 @@ void add_key_bit(report_keyboard_t* keyboard_report, uint8_t code) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
void del_key_bit(report_keyboard_t* keyboard_report, uint8_t code) {
|
||||
void del_key_bit(report_nkro_t* nkro_report, uint8_t code) {
|
||||
if ((code >> 3) < NKRO_REPORT_BITS) {
|
||||
keyboard_report->nkro.bits[code >> 3] &= ~(1 << (code & 7));
|
||||
nkro_report->bits[code >> 3] &= ~(1 << (code & 7));
|
||||
} else {
|
||||
dprintf("del_key_bit: can't del: %02X\n", code);
|
||||
}
|
||||
|
@ -240,10 +241,10 @@ void del_key_bit(report_keyboard_t* keyboard_report, uint8_t code) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
void add_key_to_report(report_keyboard_t* keyboard_report, uint8_t key) {
|
||||
void add_key_to_report(uint8_t key) {
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_protocol && keymap_config.nkro) {
|
||||
add_key_bit(keyboard_report, key);
|
||||
add_key_bit(nkro_report, key);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -254,10 +255,10 @@ void add_key_to_report(report_keyboard_t* keyboard_report, uint8_t key) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
void del_key_from_report(report_keyboard_t* keyboard_report, uint8_t key) {
|
||||
void del_key_from_report(uint8_t key) {
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_protocol && keymap_config.nkro) {
|
||||
del_key_bit(keyboard_report, key);
|
||||
del_key_bit(nkro_report, key);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -268,11 +269,11 @@ void del_key_from_report(report_keyboard_t* keyboard_report, uint8_t key) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
void clear_keys_from_report(report_keyboard_t* keyboard_report) {
|
||||
void clear_keys_from_report(void) {
|
||||
// not clear mods
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_protocol && keymap_config.nkro) {
|
||||
memset(keyboard_report->nkro.bits, 0, sizeof(keyboard_report->nkro.bits));
|
||||
memset(nkro_report->bits, 0, sizeof(nkro_report->bits));
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue