1 #include "superduper.h"
4 #include "keymap_colemak.h"
8 #define SUPERDUPER_COMBO_COUNT 3
9 #define EECONFIG_SUPERDUPER_INDEX (uint8_t *) 19
11 enum process_combo_event {
15 enum supported_layers {
21 const uint16_t PROGMEM superduper_combos[SUPERDUPER_COMBO_COUNT][3] = {
22 [_QWERTY] = {KC_S, KC_D, COMBO_END},
23 [_COLEMAK] = {KC_R, KC_S, COMBO_END},
24 [_QWOC] = {CM_S, CM_D, COMBO_END},
27 combo_t key_combos[COMBO_COUNT] = {
28 [CB_SUPERDUPER] = COMBO_ACTION(superduper_combos[_QWERTY]),
31 volatile bool superduper_enabled = true;
33 const uint16_t PROGMEM empty_combo[] = {COMBO_END};
35 bool toggle_superduper_mode(void) {
36 superduper_enabled = !superduper_enabled;
38 if (superduper_enabled) {
39 set_superduper_key_combos();
41 clear_superduper_key_combos();
44 return superduper_enabled;
47 void set_superduper_key_combo_layer(uint16_t layer) {
48 key_combos[CB_SUPERDUPER].keys = superduper_combos[layer];
49 eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, layer);
52 void set_superduper_key_combos(void) {
53 uint8_t layer = eeprom_read_byte(EECONFIG_SUPERDUPER_INDEX);
59 key_combos[CB_SUPERDUPER].keys = superduper_combos[layer];
64 void clear_superduper_key_combos(void) {
65 key_combos[CB_SUPERDUPER].keys = empty_combo;