diff --git a/flash.sh b/flash.sh old mode 100644 new mode 100755 diff --git a/keyboards/keebio/iris_lm/keymaps/drew/alias.h b/keyboards/keebio/iris_lm/keymaps/drew/alias.h index 002b9d91..6faa0d6c 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/alias.h +++ b/keyboards/keebio/iris_lm/keymaps/drew/alias.h @@ -1,7 +1,7 @@ #pragma once #include QMK_KEYBOARD_H -#include "./layers.h" +#include "./layers/layers.h" /// @brief Custom keycodes. enum CustomKeycodes { @@ -15,6 +15,8 @@ enum CustomKeycodes { LOW_0, MULT, // avoids a conflict with KC_ASTR + + WIN_SWAP, }; #define TD_CLS TD(TD_CAD_LOCK_SLEEP) @@ -25,7 +27,6 @@ enum CustomKeycodes { #define MENU S(KC_F10) #define TAB_RIGHT C(KC_TAB) #define TAB_LEFT (C(S(KC_TAB))) -#define WIN_SWAP 3 // TODO // layers // #define NUM_SPC LT(_NUM, KC_SPC) @@ -36,10 +37,14 @@ enum CustomKeycodes { #define NUM_SPC LT(_NUM, KC_SPC) #define NAV MO(_NAV) #define NUM MO(_NUM) -#define SYM MO(_SYM) +#define SYM_ENT LT(_SYM, KC_ENT) +#define GAME MO(_GAME) #define LAUNCH_NUM LT(_SH_NUM, LAUNCH) #define COMP_FUNC LT(_FUNC, COMPOSE) +#define ZOOM_IN C(KC_EQL) +#define ZOOM_OUT C(KC_MINS) + // mod-taps (not homerow mods) // #define GUI_LAUNCH GUI_T(LAUNCH) diff --git a/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.c b/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.c index f0989a0a..4280d6ec 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.c +++ b/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.c @@ -1,5 +1,4 @@ #include QMK_KEYBOARD_H -#include "caps_word.h" #include "../alias.h" #include "../tap_dance/tap_dance.h" diff --git a/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.h b/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.h deleted file mode 100644 index 228a94ad..00000000 --- a/keyboards/keebio/iris_lm/keymaps/drew/caps_word/caps_word.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -#include "stdint.h" - -bool caps_word_press_user(uint16_t keycode); diff --git a/keyboards/keebio/iris_lm/keymaps/drew/chordal_hold/chordal_options.c b/keyboards/keebio/iris_lm/keymaps/drew/chordal_hold/chordal_options.c deleted file mode 100644 index 1d03d38e..00000000 --- a/keyboards/keebio/iris_lm/keymaps/drew/chordal_hold/chordal_options.c +++ /dev/null @@ -1,15 +0,0 @@ -// TODO: possibly remove - -#include "../alias.h" - -bool get_chordal_hold( - uint16_t tap_hold_keycode, keyrecord_t* tap_hold_record, uint16_t other_keycode, - keyrecord_t* other_record -) { - switch (tap_hold_keycode) { - case SFT_D: - case SFT_K: // no same hand stuff for shift - return get_chordal_hold_default(tap_hold_record, other_record); - } - return true; // allow same hand stuff for everything else -} \ No newline at end of file diff --git a/keyboards/keebio/iris_lm/keymaps/drew/chordal_hold/chordal_options.h b/keyboards/keebio/iris_lm/keymaps/drew/chordal_hold/chordal_options.h deleted file mode 100644 index e4cdc9b3..00000000 --- a/keyboards/keebio/iris_lm/keymaps/drew/chordal_hold/chordal_options.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H -#include "stdint.h" - -bool get_chordal_hold( - uint16_t tap_hold_keycode, keyrecord_t* tap_hold_record, uint16_t other_keycode, - keyrecord_t* other_record -); \ No newline at end of file diff --git a/keyboards/keebio/iris_lm/keymaps/drew/combos/combos.c b/keyboards/keebio/iris_lm/keymaps/drew/combos/combos.c new file mode 100644 index 00000000..deab27f1 --- /dev/null +++ b/keyboards/keebio/iris_lm/keymaps/drew/combos/combos.c @@ -0,0 +1,50 @@ +#include "./combos.h" +#include "../alias.h" +#include "../layers/layers.h" + +uint16_t get_combo_term(uint16_t combo_index, combo_t *combo) { + switch (combo_index) { + case NumCombo: + return 75; + break; + } + return COMBO_TERM; +} + +bool process_combo_key_release( + uint16_t combo_index, combo_t* combo, uint8_t key_index, uint16_t keycode +) { + switch (combo_index) { + case NumCombo: // release the combo on any releases + switch (keycode) { + case SYM_ENT: + layer_off(_SYM); + break; + case NAV: + layer_off(_NAV); + break; + } + layer_off(_NUM); + break; + } + return false; +} + +bool process_combo_key_repress( + uint16_t combo_index, combo_t* combo, uint8_t key_index, uint16_t keycode +) { + switch (combo_index) { + case WinSwapCombo: + switch (keycode) { + case TAB_LEFT: + tap_code16(S(KC_TAB)); + break; + case TAB_RIGHT: + tap_code(KC_TAB); + break; + } + return true; + break; + } + return false; +} \ No newline at end of file diff --git a/keyboards/keebio/iris_lm/keymaps/drew/combos/combos.h b/keyboards/keebio/iris_lm/keymaps/drew/combos/combos.h new file mode 100644 index 00000000..e69a27af --- /dev/null +++ b/keyboards/keebio/iris_lm/keymaps/drew/combos/combos.h @@ -0,0 +1,8 @@ +#pragma once + +#include QMK_KEYBOARD_H + +enum Combos { + NumCombo, + WinSwapCombo, +}; diff --git a/keyboards/keebio/iris_lm/keymaps/drew/config.h b/keyboards/keebio/iris_lm/keymaps/drew/config.h index 0e59b003..48ffbdea 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/config.h +++ b/keyboards/keebio/iris_lm/keymaps/drew/config.h @@ -1,19 +1,21 @@ #pragma once -#include "./layers.h" #define TAPPING_TERM 200 #define QUICK_TAP_TERM_PER_KEY -#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY -#define PERMISSIVE_HOLD_PER_KEY +#define HOLD_ON_OTHER_KEY_PRESS +// #define PERMISSIVE_HOLD_PER_KEY #define TAPPING_TERM_PER_KEY -// #define FLOW_TAP_TERM 150 -// #define CHORDAL_HOLD + + +// combos +#define COMBO_PROCESS_KEY_RELEASE +#define COMBO_PROCESS_KEY_REPRESS +#define COMBO_TERM_PER_COMBO #define CAPS_WORD_IDLE_TIMEOUT 0 #define DUMMY_MOD_NEUTRALIZER_KEYCODE KC_RCTL #define MODS_TO_NEUTRALIZE {MOD_BIT(KC_LALT), MOD_BIT(KC_RALT), MOD_BIT(KC_LGUI), MOD_BIT(KC_RGUI)} - diff --git a/keyboards/keebio/iris_lm/keymaps/drew/flow_tap/flow_tap_options.c b/keyboards/keebio/iris_lm/keymaps/drew/flow_tap/flow_tap_options.c deleted file mode 100644 index 206ace4b..00000000 --- a/keyboards/keebio/iris_lm/keymaps/drew/flow_tap/flow_tap_options.c +++ /dev/null @@ -1,35 +0,0 @@ -#include QMK_KEYBOARD_H -#include "../alias.h" - -uint16_t get_flow_tap_term(uint16_t keycode, keyrecord_t* record, uint16_t previous_keycode) { - switch (get_tap_keycode(previous_keycode)) { - case KC_A ... KC_Z: - case KC_DOT: - case KC_COMM: - case KC_SCLN: - case KC_SLSH: - case KC_QUOT: // enable flow-tap for these keys - break; - - default: // disable otherwise - return 0; - } - - switch (keycode) { - case CTL_D: - case CTL_K: - case CTL_3: - case CTL_8: - case CTL_RBRC: - case CTL_DOWN: // control should always be allowed to hold - - case GUI_LAUNCH: // same with non-homerow mod taps - - case NUM_SPC: - case NAV_ENT: - case FUNC_PLAY: // same with layer-taps - return 0; - break; - } - return FLOW_TAP_TERM; // enable flow-tap -} diff --git a/keyboards/keebio/iris_lm/keymaps/drew/keymap.c b/keyboards/keebio/iris_lm/keymaps/drew/keymap.c index ae752ef5..145392ba 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/keymap.c +++ b/keyboards/keebio/iris_lm/keymaps/drew/keymap.c @@ -1,27 +1,25 @@ #include QMK_KEYBOARD_H -#include "./caps_word/caps_word.h" -#include "./layers.h" -#include "./tap_dance/tap_dance.c" +#include "./alias.h" +#include "./combos/combos.h" +#include "./layers/layers.h" #include "./tap_dance/tap_dance.h" #include "./utils/utils.h" -#include "stdbool.h" -#include "stdint.h" - -bool NAV_enabled = false; +#include +#include // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( //┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ - TD_CLS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_NO, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, QK_BOOT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_NO, + CW_TOGG, KC_Z, KC_X, KC_C, KC_V, KC_B, TD_CLS, GAME, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_DEL, //└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ - LAUNCH_NUM, NAV, KC_SPC, KC_LSFT, SYM, COMP_FUNC + LAUNCH_NUM, NAV, KC_SPC, OS_LSFT, SYM_ENT, COMPOSE // └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ ), @@ -35,86 +33,119 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, KC_TRNS, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_TRNS, //└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ - KC_ESC, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS -// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ -), - -[_NAV] = LAYOUT( -//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ - TD_CLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TRNS, KC_TAB, WIN_SWAP, TAB_LEFT, TAB_RIGHT, KC_F11, KC_NO, KC_HOME, KC_UP, KC_END, KC_BSPC, KC_TRNS, -//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TRNS, OS_LGUI, OS_LALT, OS_LCTL, OS_LSFT, KC_MPLY, CW_TOGG, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT, KC_TRNS, -//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TRNS, KC_ESC, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS, KC_TRNS, KC_CAPS, KC_F2, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, -//└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ - LAUNCH_NUM, NAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_ESC, KC_I, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS // └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ ), [_SYM] = LAYOUT( //┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ - TD_CLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TAB, KC_BSLS, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_GRV, OS_RSFT, OS_RCTL, OS_RALT, OS_RGUI, KC_TRNS, + KC_TRNS, KC_BSLS, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_PLUS, OS_RSFT, OS_RCTL, OS_RALT, OS_RGUI, KC_DQUO, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_CAPS, KC_PIPE, KC_LCBR, KC_RCBR, KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, KC_TILD, KC_F2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_PIPE, KC_LCBR, KC_RCBR, KC_UNDS, KC_GRV, KC_TRNS, QK_BOOT, KC_TILD, KC_COLN, KC_LABK, KC_RABK, KC_QUES, KC_TRNS, //└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ - KC_TRNS, NUM, KC_TRNS, KC_NO, SYM, KC_NO + KC_TRNS, NAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ +), + +[_NAV] = LAYOUT( +//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ + KC_TRNS, KC_NO, KC_NO, TAB_LEFT, TAB_RIGHT, KC_F11, ZOOM_IN, KC_HOME, KC_UP, KC_END, KC_WFWD, KC_TRNS, +//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ + KC_TRNS, OS_LGUI, OS_LALT, OS_LCTL, OS_LSFT, KC_MPLY, ZOOM_OUT, KC_LEFT, KC_DOWN, KC_RGHT, KC_WBAK, KC_TRNS, +//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ + KC_TRNS, KC_MUTE, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS, QK_BOOT, KC_NO, KC_F2, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, +//└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ + LAUNCH_NUM, NAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS // └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ ), [_NUM] = LAYOUT( //┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ - TD_CLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TRNS, KC_SLSH, KC_AT, MULT, KC_MINS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LPRN, KC_RPRN, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_DOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_COMM, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_SCLN, KC_COLN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_SLSH, KC_E, KC_ASTR, KC_MINS, KC_PLUS, KC_TRNS, QK_BOOT, KC_CIRC, KC_COLN, KC_COMM, KC_DOT, KC_SCLN, KC_TRNS, //└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ - KC_TRNS, NUM, KC_TRNS, KC_ENT, SYM, KC_NO + KC_TRNS, NAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS // └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ ), -[_FUNC] = LAYOUT( +[_SH_NUM] = LAYOUT( // single-handed numbers //┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ - TD_CLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_F1, KC_F2, TAB_LEFT, LAUNCH, TAB_RIGHT, KC_NO, KC_NO, KC_HOME, KC_UP, KC_END, KC_NO, KC_TRNS, + KC_TRNS, KC_SLSH, KC_DOT, KC_COMM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_TAB, OS_LGUI, OS_LALT, OS_LCTL, OS_LSFT, KC_MPLY, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, //├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ - KC_CAPS, KC_MUTE, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS, KC_TRNS, KC_NO, KC_F2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, //└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘ - KC_TRNS, NUM, KC_TRNS, KC_ENT, SYM, KC_NO + KC_TRNS, NAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS // └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘ ), }; // clang-format on -layer_state_t layer_state_set_user(layer_state_t state) { - static bool if (layer_state_cmp(state, _NAV) && layer_state_cmp(state, _SYM)) { - layer_on(_NUM); - } - else { - layer_off(_NUM); - } - return state; -} +tap_dance_action_t tap_dance_actions[] = { + [TD_CAD_LOCK_SLEEP] = ACTION_TAP_DANCE_FN(CAD_lock_sleep), +}; + +const uint16_t PROGMEM num_layer_combo[] = {NAV, SYM_ENT, COMBO_END}; +const uint16_t PROGMEM win_swap_combo[] = {TAB_LEFT, TAB_RIGHT, COMBO_END}; + +combo_t key_combos[] = { + [NumCombo] = COMBO(num_layer_combo, NUM), + [WinSwapCombo] = COMBO(win_swap_combo, WIN_SWAP), +}; bool process_record_user(uint16_t keycode, keyrecord_t* record) { + static bool NAV_is_on = false; + switch (keycode) { + // allow the SYM and NAV layers to override each other + case NAV: + NAV_is_on = record->event.pressed; // track NAV's state for SYM + break; + + case SYM_ENT: + if (!record->tap.count) { + // if NAV is on, turn it off when SYM is turned on, then restore it when SYM is + // turned off + // if we're NUM-latched, don't interfere with the states + if (NAV_is_on) { + record->event.pressed && !NUM_latched ? layer_off(_NAV) : layer_on(_NAV); + } + } + break; + + case WIN_SWAP: // easy Alt-Tab + if (record->event.pressed) { + register_mods(MOD_LALT); + tap_code(KC_TAB); + } else { + unregister_mods(MOD_LALT); + } + break; + case LAUNCH_NUM: // make the launch keycode work - if (record->tap.count && record->event.pressed) { - tap_code16(LAUNCH); + if (record->tap.count) { + if (record->event.pressed) { + tap_code16(LAUNCH); + } + return false; } break; } + return true; } // bool process_record_user(uint16_t keycode, keyrecord_t* record) { diff --git a/keyboards/keebio/iris_lm/keymaps/drew/layers.h b/keyboards/keebio/iris_lm/keymaps/drew/layers.h deleted file mode 100644 index 426a5154..00000000 --- a/keyboards/keebio/iris_lm/keymaps/drew/layers.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -enum { - _BASE, - _GAME, - _NAV, - _SYM, - _NUM, - _SH_NUM, - _FUNC -}; diff --git a/keyboards/keebio/iris_lm/keymaps/drew/layers/layers.c b/keyboards/keebio/iris_lm/keymaps/drew/layers/layers.c new file mode 100644 index 00000000..90b24521 --- /dev/null +++ b/keyboards/keebio/iris_lm/keymaps/drew/layers/layers.c @@ -0,0 +1,24 @@ +#include "./layers.h" + +bool NUM_latched = false; + +layer_state_t layer_state_set_user(layer_state_t state) { + // NUM latching + if (NUM_latched) { + if (IS_LAYER_ON_STATE(state, _SYM) && IS_LAYER_ON_STATE(state, _NAV)) { + state |= 1 << _NUM; // turn on NUM + } else { + // if both NAV and SYM are off, de-latch NUM + if (!IS_LAYER_ON_STATE(state, _SYM) && !IS_LAYER_ON_STATE(state, _NAV)) { + NUM_latched = false; + } + // since both layers aren't held, turn off NUM + state &= ~(1 << _NUM); + } + } else if (IS_LAYER_ON_STATE(state, _NUM)) { + NUM_latched = true; + state |= 1 << _NAV | 1 << _SYM; // turn on NAV and SYM + } + + return state; +} diff --git a/keyboards/keebio/iris_lm/keymaps/drew/layers/layers.h b/keyboards/keebio/iris_lm/keymaps/drew/layers/layers.h new file mode 100644 index 00000000..b33499a0 --- /dev/null +++ b/keyboards/keebio/iris_lm/keymaps/drew/layers/layers.h @@ -0,0 +1,17 @@ +#pragma once + +#include QMK_KEYBOARD_H +#include + +enum { + _BASE, + _GAME, + _SYM, + _NAV, + _NUM, + _SH_NUM, +}; + +extern bool NUM_latched; + +layer_state_t layer_state_set_user(layer_state_t state); diff --git a/keyboards/keebio/iris_lm/keymaps/drew/rules.mk b/keyboards/keebio/iris_lm/keymaps/drew/rules.mk index 244bab28..5ed896ad 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/rules.mk +++ b/keyboards/keebio/iris_lm/keymaps/drew/rules.mk @@ -1,6 +1,9 @@ BOOTLOADER = stm32-dfu SRC += caps_word/caps_word.c +SRC += tap_dance/tap_dance.c +SRC += combos/combos.c +SRC += layers/layers.c # SRC += taphold/taphold_options.c # SRC += utils/utils.c # SRC += chordal_hold/chordal_options.c @@ -15,3 +18,4 @@ CAPS_WORD_ENABLE = yes TAP_DANCE_ENABLE = yes # KEY_OVERRIDE_ENABLE = yes +COMBO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.c b/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.c index e1c27f3d..27db43c4 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.c +++ b/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.c @@ -1,4 +1,3 @@ -#include QMK_KEYBOARD_H #include "./tap_dance.h" #include "../alias.h" @@ -17,7 +16,3 @@ void CAD_lock_sleep(tap_dance_state_t* state, void*) { break; } } - -tap_dance_action_t tap_dance_actions[] = { - [TD_CAD_LOCK_SLEEP] = ACTION_TAP_DANCE_FN(CAD_lock_sleep), -}; diff --git a/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.h b/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.h index 3321d686..5d648645 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.h +++ b/keyboards/keebio/iris_lm/keymaps/drew/tap_dance/tap_dance.h @@ -1,5 +1,9 @@ #pragma once +#include QMK_KEYBOARD_H + enum { TD_CAD_LOCK_SLEEP, }; + +void CAD_lock_sleep(tap_dance_state_t* state, void*); \ No newline at end of file diff --git a/keyboards/keebio/iris_lm/keymaps/drew/utils/utils.h b/keyboards/keebio/iris_lm/keymaps/drew/utils/utils.h index 1c2112a9..e61a69dd 100644 --- a/keyboards/keebio/iris_lm/keymaps/drew/utils/utils.h +++ b/keyboards/keebio/iris_lm/keymaps/drew/utils/utils.h @@ -1,8 +1,8 @@ #pragma once #include QMK_KEYBOARD_H -#include "stdbool.h" -#include "stdint.h" +#include +#include /// @brief Obliterate a line of text. /// @param key_down Whether the key was pressed down. @@ -51,4 +51,3 @@ bool unshift_register_or_ctrl_fallthrough( /// @param record The current `keyrecord_t`. /// @return Whether processing of the key should continue. bool unshift_register(uint8_t keycode, keyrecord_t* record); - diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/rules.mk b/keyboards/keebio/nyquist/rev4/keymaps/drew/rules.mk index 0a8bfe4e..425a8624 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/rules.mk +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/rules.mk @@ -14,3 +14,4 @@ CAPS_WORD_ENABLE = yes TAP_DANCE_ENABLE = yes KEY_OVERRIDE_ENABLE = yes +RGBLIGHT_ENABLE = no # turn off RGB lights \ No newline at end of file