1 #include "process_chording.h"
3 bool keys_chord(uint8_t keys
[]) {
4 uint8_t keys_size
= sizeof(keys
)/sizeof(keys
[0]);
7 for (uint8_t i
= 0; i
< chord_key_count
; i
++) {
9 for (uint8_t j
= 0; j
< keys_size
; j
++) {
10 if (chord_keys
[i
] == (keys
[j
] & 0xFF)) {
11 in
++; // detects key in chord
18 if (chord_keys
[i
] != 0) {
19 pass
= false; // makes sure rest are blank
22 return (pass
&& (in
== keys_size
));
25 bool process_chording(uint16_t keycode
, keyrecord_t
*record
) {
26 if (keycode
>= QK_CHORDING
&& keycode
<= QK_CHORDING_MAX
) {
27 if (record
->event
.pressed
) {
30 for (uint8_t i
= 0; i
< CHORDING_MAX
; i
++)
35 chord_keys
[chord_key_count
] = (keycode
& 0xFF);
42 if (chord_key_down
== 0) {
45 if (keys_chord((uint8_t[]){KC_ENTER
, KC_SPACE
})) {
47 unregister_code(KC_A
);
50 for (uint8_t i
= 0; i
< chord_key_count
; i
++) {
51 register_code(chord_keys
[i
]);
52 unregister_code(chord_keys
[i
]);