Bigger combo index (#9318)

* Add change log

* Change combo index from uint8_t to uint16_t
master
Pete Sevander 2020-07-16 15:39:01 +03:00 committed by James Young
parent 93e7a8f74c
commit b0335b2731
16 changed files with 28 additions and 17 deletions

View File

@ -0,0 +1,11 @@
### Bigger integer type when looping over combos.
[#9318](https://github.com/qmk/qmk_firmware/pull/9318)
Changes `uint8_t` to `uint16_t` so it is possible have more than 256 combos.
Any fork that uses `process_combo_event` needs to update the function's first argument to `uint16_t`.
| Old function | New Function |
|---------------------------------------------------------------|----------------------------------------------------------------|
| `void process_combo_event(uint8_t combo_index, bool pressed)` | `void process_combo_event(uint16_t combo_index, bool pressed)` |

View File

@ -36,7 +36,7 @@ combo_t key_combos[COMBO_COUNT] = {
[CTRL_PAUS_RESET] = COMBO_ACTION(reset_combo), [CTRL_PAUS_RESET] = COMBO_ACTION(reset_combo),
}; };
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch(combo_index) { switch(combo_index) {
case CTRL_PAUS_RESET: case CTRL_PAUS_RESET:
if (pressed) { if (pressed) {

View File

@ -33,7 +33,7 @@ combo_t key_combos[COMBO_COUNT] = {
}; };
// Called after a combo event is triggered // Called after a combo event is triggered
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch (combo_index) { switch (combo_index) {
case SD_LAYER_COMBO: case SD_LAYER_COMBO:
if (pressed) { if (pressed) {

View File

@ -153,7 +153,7 @@ void matrix_setup(void) {
set_superduper_key_combos(); set_superduper_key_combos();
} }
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
if (pressed) { if (pressed) {
switch(combo_index) { switch(combo_index) {
case CB_SUPERDUPER: case CB_SUPERDUPER:

View File

@ -683,7 +683,7 @@ void matrix_scan_user(void) {
// Combos // Combos
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
if (pressed) { if (pressed) {
switch(combo_index) { switch(combo_index) {
case CB_SUPERDUPER: case CB_SUPERDUPER:

View File

@ -60,7 +60,7 @@ int COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]);
#define COMB BLANK #define COMB BLANK
#define SUBS A_ACTI #define SUBS A_ACTI
#define TOGG A_TOGG #define TOGG A_TOGG
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch (combo_index) { switch (combo_index) {
#include "combos.def" #include "combos.def"
} }

View File

@ -30,7 +30,7 @@ combo_t key_combos[COMBO_COUNT] = {
bool led_adjust_active = false; bool led_adjust_active = false;
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
if (combo_index == LED_ADJUST) { if (combo_index == LED_ADJUST) {
led_adjust_active = pressed; led_adjust_active = pressed;
} }

View File

@ -45,7 +45,7 @@ combo_t key_combos[COMBO_COUNT] = {
[BOT_CTR] = COMBO_ACTION(bx_combo), [BOT_CTR] = COMBO_ACTION(bx_combo),
}; };
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch(combo_index) { switch(combo_index) {
case MID_R: case MID_R:
if (pressed) { if (pressed) {

View File

@ -357,7 +357,7 @@ void matrix_setup(void) {
void matrix_scan_user(void) { void matrix_scan_user(void) {
} }
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
if (pressed) { if (pressed) {
switch(combo_index) { switch(combo_index) {
case CB_SUPERDUPER: case CB_SUPERDUPER:

View File

@ -129,7 +129,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch(combo_index) { switch(combo_index) {
case SCR_LCK: case SCR_LCK:
if (pressed) { if (pressed) {

View File

@ -24,10 +24,10 @@ extern combo_t key_combos[];
extern int COMBO_LEN; extern int COMBO_LEN;
#endif #endif
__attribute__((weak)) void process_combo_event(uint8_t combo_index, bool pressed) {} __attribute__((weak)) void process_combo_event(uint16_t combo_index, bool pressed) {}
static uint16_t timer = 0; static uint16_t timer = 0;
static uint8_t current_combo_index = 0; static uint16_t current_combo_index = 0;
static bool drop_buffer = false; static bool drop_buffer = false;
static bool is_active = false; static bool is_active = false;
static bool b_combo_enable = true; // defaults to enabled static bool b_combo_enable = true; // defaults to enabled
@ -83,7 +83,7 @@ static inline void dump_key_buffer(bool emit) {
static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t *record) { static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t *record) {
uint8_t count = 0; uint8_t count = 0;
uint8_t index = -1; uint16_t index = -1;
/* Find index of keycode and number of combo keys */ /* Find index of keycode and number of combo keys */
for (const uint16_t *keys = combo->keys;; ++count) { for (const uint16_t *keys = combo->keys;; ++count) {
uint16_t key = pgm_read_word(&keys[count]); uint16_t key = pgm_read_word(&keys[count]);

View File

@ -56,7 +56,7 @@ typedef struct {
bool process_combo(uint16_t keycode, keyrecord_t *record); bool process_combo(uint16_t keycode, keyrecord_t *record);
void matrix_scan_combo(void); void matrix_scan_combo(void);
void process_combo_event(uint8_t combo_index, bool pressed); void process_combo_event(uint16_t combo_index, bool pressed);
void combo_enable(void); void combo_enable(void);
void combo_disable(void); void combo_disable(void);

View File

@ -26,7 +26,7 @@ combo_t key_combos[COMBO_COUNT] = {
}; };
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch(combo_index) { switch(combo_index) {
case XC_COPY: case XC_COPY:
if (pressed) { if (pressed) {

View File

@ -1,6 +1,6 @@
#include "combo.h" #include "combo.h"
void process_combo_event(uint8_t combo_index, bool pressed){ void process_combo_event(uint16_t combo_index, bool pressed){
switch(combo_index) { switch(combo_index) {
case ZV_COPY: case ZV_COPY:
if (pressed) { if (pressed) {

View File

@ -23,7 +23,7 @@ combo_t key_combos[COMBO_COUNT] = {
[XV_PASTE] = COMBO_ACTION(paste_combo), [XV_PASTE] = COMBO_ACTION(paste_combo),
}; };
void process_combo_event(uint8_t combo_index, bool pressed) { void process_combo_event(uint16_t combo_index, bool pressed) {
switch(combo_index) { switch(combo_index) {
case EQ_QUIT: case EQ_QUIT:
if (pressed) { if (pressed) {

View File

@ -1,6 +1,6 @@
#include "combo.h" #include "combo.h"
void process_combo_event(uint8_t combo_index, bool pressed){ void process_combo_event(uint16_t combo_index, bool pressed){
switch(combo_index) { switch(combo_index) {
case ZV_COPY: case ZV_COPY:
if (pressed) { if (pressed) {