Bigger combo index (#9318)
* Add change log * Change combo index from uint8_t to uint16_t
This commit is contained in:
parent
93e7a8f74c
commit
b0335b2731
16 changed files with 28 additions and 17 deletions
11
docs/ChangeLog/20200829/PR9318.md
Normal file
11
docs/ChangeLog/20200829/PR9318.md
Normal 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)` |
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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"
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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]);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue