qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

test_combos_repress.c (1140B)


      1 // Copyright 2024 @Filios92
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 #include "quantum.h"
      4 
      5 enum combos { alttab, esc };
      6 
      7 uint16_t const alttab_combo[] = {KC_F, KC_G, COMBO_END};
      8 uint16_t const esc_combo[]    = {KC_H, KC_J, COMBO_END};
      9 
     10 // clang-format off
     11 combo_t key_combos[] = {
     12     [alttab]  = COMBO(alttab_combo, KC_NO),
     13     [esc]     = COMBO(esc_combo, KC_ESC)
     14 };
     15 // clang-format on
     16 
     17 void process_combo_event(uint16_t combo_index, bool pressed) {
     18     switch (combo_index) {
     19         case alttab:
     20             if (pressed) {
     21                 register_mods(MOD_LALT);
     22                 tap_code(KC_TAB);
     23             } else {
     24                 unregister_mods(MOD_LALT);
     25             }
     26             break;
     27     }
     28 }
     29 
     30 bool process_combo_key_repress(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) {
     31     switch (combo_index) {
     32         case alttab:
     33             switch (keycode) {
     34                 case KC_F:
     35                     tap_code16(S(KC_TAB));
     36                     return true;
     37                 case KC_G:
     38                     tap_code(KC_TAB);
     39                     return true;
     40             }
     41     }
     42     return false;
     43 }