Switched to the new layout with 6 columns

This commit is contained in:
Drew Whitney 2025-11-15 01:24:53 -07:00
commit 4b795bfb8e
19 changed files with 204 additions and 139 deletions

0
flash.sh Normal file → Executable file
View file

View file

@ -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)

View file

@ -1,5 +1,4 @@
#include QMK_KEYBOARD_H
#include "caps_word.h"
#include "../alias.h"
#include "../tap_dance/tap_dance.h"

View file

@ -1,4 +0,0 @@
#pragma once
#include "stdint.h"
bool caps_word_press_user(uint16_t keycode);

View file

@ -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
}

View file

@ -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
);

View file

@ -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;
}

View file

@ -0,0 +1,8 @@
#pragma once
#include QMK_KEYBOARD_H
enum Combos {
NumCombo,
WinSwapCombo,
};

View file

@ -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)}

View file

@ -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
}

View file

@ -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 <stdbool.h>
#include <stdint.h>
// 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) {

View file

@ -1,11 +0,0 @@
#pragma once
enum {
_BASE,
_GAME,
_NAV,
_SYM,
_NUM,
_SH_NUM,
_FUNC
};

View file

@ -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;
}

View file

@ -0,0 +1,17 @@
#pragma once
#include QMK_KEYBOARD_H
#include <stdbool.h>
enum {
_BASE,
_GAME,
_SYM,
_NAV,
_NUM,
_SH_NUM,
};
extern bool NUM_latched;
layer_state_t layer_state_set_user(layer_state_t state);

View file

@ -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

View file

@ -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),
};

View file

@ -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*);

View file

@ -1,8 +1,8 @@
#pragma once
#include QMK_KEYBOARD_H
#include "stdbool.h"
#include "stdint.h"
#include <stdbool.h>
#include <stdint.h>
/// @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);

View file

@ -14,3 +14,4 @@ CAPS_WORD_ENABLE = yes
TAP_DANCE_ENABLE = yes
KEY_OVERRIDE_ENABLE = yes
RGBLIGHT_ENABLE = no # turn off RGB lights