~ruther/qmk_firmware

b0335b273142ead24cb4177893fafdf2fda88810 — Pete Sevander 5 years ago 93e7a8f
Bigger combo index (#9318)

* Add change log

* Change combo index from uint8_t to uint16_t
A docs/ChangeLog/20200829/PR9318.md => docs/ChangeLog/20200829/PR9318.md +11 -0
@@ 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)` |

M keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c => keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c +1 -1
@@ 36,7 36,7 @@ combo_t key_combos[COMBO_COUNT] = {
  [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) {
    case CTRL_PAUS_RESET:
      if (pressed) {

M keyboards/converter/usb_usb/keymaps/chriskopher/combo.c => keyboards/converter/usb_usb/keymaps/chriskopher/combo.c +1 -1
@@ 33,7 33,7 @@ combo_t key_combos[COMBO_COUNT] = {
};

// 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) {
        case SD_LAYER_COMBO:
            if (pressed) {

M keyboards/converter/usb_usb/keymaps/narze/keymap.c => keyboards/converter/usb_usb/keymaps/narze/keymap.c +1 -1
@@ 153,7 153,7 @@ void matrix_setup(void) {
    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) {
        switch(combo_index) {
            case CB_SUPERDUPER:

M keyboards/ergodox_infinity/keymaps/narze/keymap.c => keyboards/ergodox_infinity/keymaps/narze/keymap.c +1 -1
@@ 683,7 683,7 @@ void matrix_scan_user(void) {

// Combos

void process_combo_event(uint8_t combo_index, bool pressed) {
void process_combo_event(uint16_t combo_index, bool pressed) {
    if (pressed) {
        switch(combo_index) {
            case CB_SUPERDUPER:

M keyboards/gboards/g/keymap_combo.h => keyboards/gboards/g/keymap_combo.h +1 -1
@@ 60,7 60,7 @@ int COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]);
#define COMB BLANK
#define SUBS A_ACTI
#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) {
#include "combos.def"
    }

M keyboards/maxr1998/pulse4k/pulse4k.c => keyboards/maxr1998/pulse4k/pulse4k.c +1 -1
@@ 30,7 30,7 @@ combo_t key_combos[COMBO_COUNT] = {

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) {
        led_adjust_active = pressed;
    }

M keyboards/minidox/keymaps/rsthd_combos/keymap.c => keyboards/minidox/keymaps/rsthd_combos/keymap.c +1 -1
@@ 45,7 45,7 @@ combo_t key_combos[COMBO_COUNT] = {
  [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) {
      case MID_R:
      if (pressed) {

M keyboards/planck/keymaps/narze/keymap.c => keyboards/planck/keymaps/narze/keymap.c +1 -1
@@ 357,7 357,7 @@ void matrix_setup(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) {
        switch(combo_index) {
            case CB_SUPERDUPER:

M keyboards/xd75/keymaps/4sstylz/keymap.c => keyboards/xd75/keymaps/4sstylz/keymap.c +1 -1
@@ 129,7 129,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  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) {
    case SCR_LCK:
      if (pressed) {

M quantum/process_keycode/process_combo.c => quantum/process_keycode/process_combo.c +3 -3
@@ 24,10 24,10 @@ extern combo_t  key_combos[];
extern int      COMBO_LEN;
#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 uint8_t  current_combo_index = 0;
static uint16_t  current_combo_index = 0;
static bool     drop_buffer         = false;
static bool     is_active           = false;
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) {
    uint8_t count = 0;
    uint8_t index = -1;
    uint16_t index = -1;
    /* Find index of keycode and number of combo keys */
    for (const uint16_t *keys = combo->keys;; ++count) {
        uint16_t key = pgm_read_word(&keys[count]);

M quantum/process_keycode/process_combo.h => quantum/process_keycode/process_combo.h +1 -1
@@ 56,7 56,7 @@ typedef struct {

bool process_combo(uint16_t keycode, keyrecord_t *record);
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_disable(void);

M users/issmirnov/issmirnov.c => users/issmirnov/issmirnov.c +1 -1
@@ 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) {
    case XC_COPY:
      if (pressed) {

M users/kuchosauronad0/combo.c => users/kuchosauronad0/combo.c +1 -1
@@ 1,6 1,6 @@
#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) {
    case ZV_COPY:
      if (pressed) {

M users/ninjonas/combos.c => users/ninjonas/combos.c +1 -1
@@ 23,7 23,7 @@ combo_t key_combos[COMBO_COUNT] = {
  [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) {
    case EQ_QUIT:
      if (pressed) {

M users/yet-another-developer/combo.c => users/yet-another-developer/combo.c +1 -1
@@ 1,6 1,6 @@
#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) {
    case ZV_COPY:
      if (pressed) {