adjust to use the Ferris layout

This commit is contained in:
Christoph Cullmann 2023-08-11 23:16:38 +02:00
parent c3bbda0109
commit ab53c97608
3 changed files with 103 additions and 45 deletions

View file

@ -16,10 +16,28 @@
#pragma once #pragma once
// we don't use one shots
#define NO_ACTION_ONESHOT
// we don't have any lock switches // we don't have any lock switches
#undef LOCKING_SUPPORT_ENABLE #undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE #undef LOCKING_RESYNC_ENABLE
// enable NKRO by default
#define FORCE_NKRO
// settings for home row modifiers
// details see https://precondition.github.io/home-row-mods
// the default of 200
#define TAPPING_TERM 180
// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
#define QUICK_TAP_TERM 0
// try to be more permissive with holds for layer switch keys
#define PERMISSIVE_HOLD_PER_KEY
// //
// audio configuration // audio configuration
// //

View file

@ -17,7 +17,8 @@
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
// layout helper macro, we just use 34 keys // layout helper macro, we just use 34 keys
#define LAYOUT_cullmann(\ #undef LAYOUT
#define LAYOUT(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
@ -30,54 +31,80 @@ K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29
KC_NO, KC_NO, KC_NO, K30, K31, KC_NO, KC_NO, K32, K33, KC_NO, KC_NO, KC_NO\ KC_NO, KC_NO, KC_NO, K30, K31, KC_NO, KC_NO, K32, K33, KC_NO, KC_NO, KC_NO\
) )
// our layers, used as index in layers and rgb lights // ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
enum planck_layers { // │ D E F I N I T I O N S │
L_CANARY, // └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
L_EXT, // ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
L_SYM,
L_NUM, // ┌─────────────────────────────────────────────────┐
L_FUN, // │ d e f i n e l a y e r s │
// └─────────────────────────────────────────────────┘
enum my_layers {
_QWERTY,
_SYM,
_NUM,
_FN,
_NAV
}; };
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ K E Y M A P S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[L_CANARY] = LAYOUT_cullmann( [_QWERTY] = LAYOUT(
KC_W, KC_L, KC_Y, KC_P, KC_B, KC_Z, KC_F, KC_O, KC_U, KC_QUOT, KC_W, KC_L, KC_Y, KC_P, KC_B, KC_Z, KC_F, KC_SCLN, KC_U, KC_QUOT,
KC_C, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_A, RALT_T(KC_C) , LALT_T(KC_R), LCTL_T(KC_S) , LSFT_T(KC_T) , LGUI_T(KC_G), RGUI_T(KC_M), RSFT_T(KC_N), RCTL_T(KC_O), LALT_T(KC_I) , RALT_T(KC_A),
KC_Q , KC_J, KC_V , KC_D , KC_K, KC_X, KC_H , KC_SLSH , KC_COMM, KC_DOT , KC_Q , KC_J, KC_V , KC_D , KC_K, KC_X, KC_H , KC_SLSH , KC_COMM, KC_DOT ,
MO(L_EXT), KC_SPC, KC_RSFT, MO(L_SYM) MO(_SYM), LT(_NUM, KC_SPC), LT(_NAV, KC_E), MO(_FN)
), ),
[L_EXT] = LAYOUT_cullmann( [_SYM] = LAYOUT(
KC_ESC, LALT(KC_LEFT), LCTL(KC_F), LALT(KC_RGHT), KC_INS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_CAPS, XXXXXXX, C(KC_X), C(KC_C), C(KC_V), XXXXXXX, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR,
OSM(MOD_LALT), OSM(MOD_LGUI), OSM(MOD_LSFT), OSM(MOD_LCTL), OSM(MOD_RALT), KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_RALT, KC_LALT, KC_LCTL, KC_LSFT, KC_LGUI, KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_COLN,
LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), KC_LGUI, LCTL(KC_V), KC_ENT, KC_BSPC, KC_TAB, KC_APP, KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_TILD,
KC_TRNS, XXXXXXX, KC_ENT, MO(L_FUN) _______, _______, KC_UNDS, KC_RPRN
), ),
[L_SYM] = LAYOUT_cullmann( [_NUM] = LAYOUT(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_EQL, KC_GRV, KC_COLN, KC_SCLN, KC_PLUS, XXXXXXX, C(KC_X), C(KC_C), C(KC_V), XXXXXXX, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC,
OSM(MOD_LALT), OSM(MOD_LGUI), OSM(MOD_LSFT), OSM(MOD_LCTL), KC_CIRC, KC_ASTR, KC_LPRN, KC_LCBR, KC_LBRC, KC_MINS, KC_RALT, KC_LALT, KC_LCTL, KC_LSFT, KC_LGUI, KC_EQL, KC_4, KC_5, KC_6, KC_SCLN,
KC_NUBS, LSFT(KC_NUBS), KC_NUHS, LSFT(KC_NUHS), KC_AMPR, KC_TILD, KC_RPRN, KC_RCBR, KC_RBRC, KC_UNDS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV,
MO(L_FUN), MO(L_NUM), KC_ENT, KC_TRNS _______, _______, KC_MINS, KC_0
), ),
[L_NUM] = LAYOUT_cullmann( [_FN] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM, KC_EQL, KC_7, KC_8, KC_9, KC_PLUS, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
OSM(MOD_LALT), OSM(MOD_LGUI), OSM(MOD_LSFT), OSM(MOD_LCTL), OSM(MOD_RALT), KC_ASTR, KC_4, KC_5, KC_6, KC_MINS, KC_F11, KC_F4, KC_F5, KC_F6, KC_DEL, KC_RGUI, KC_RSFT, KC_RCTL, KC_LALT, KC_RALT,
XXXXXXX, KC_APP, KC_TAB, KC_BSPC, KC_ENT, KC_0, KC_1, KC_2, KC_3, KC_SLSH, KC_F10, KC_F1, KC_F2, KC_F3, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
MO(L_FUN), MO(L_NUM), KC_ENT, KC_TRNS KC_BSPC, KC_ESC, _______, _______
), ),
[L_FUN] = LAYOUT_cullmann( [_NAV] = LAYOUT(
KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_BRIU, KC_F12, KC_F7, KC_F8, KC_F9, QK_BOOT, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
OSM(MOD_LALT), OSM(MOD_LGUI), OSM(MOD_LSFT), OSM(MOD_LCTL), KC_BRID, KC_F11, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_RGUI, KC_RSFT, KC_RCTL, KC_LALT, KC_RALT,
KC_MUTE, KC_VOLD, RCS(KC_C), KC_VOLU, RCS(KC_V), KC_F10, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_TRNS, XXXXXXX, KC_ENT, KC_TRNS KC_TAB, KC_ENT, _______, _______
), )
}; };
// try to be more permissive with holds for layer switch keys
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LT(_NUM, KC_SPC):
case LT(_NAV, KC_E):
// Immediately select the hold action when another key is tapped.
return true;
default:
// Do not select the hold action when another key is tapped.
return false;
}
}
/* plwnck rev6 RGB layout: /* plwnck rev6 RGB layout:
* ---------------------------------- * ----------------------------------
* | 6 5 4 3 | * | 6 5 4 3 |
@ -107,11 +134,11 @@ const rgblight_segment_t PROGMEM nav_layer[] = RGBLIGHT_LAYER_SEGMENTS(
); );
const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
[L_CANARY] = qwerty_layer, [_QWERTY] = qwerty_layer,
[L_EXT] = sym_layer, [_SYM] = sym_layer,
[L_SYM] = num_layer, [_NUM] = num_layer,
[L_NUM] = fn_layer, [_FN] = fn_layer,
[L_FUN] = nav_layer [_NAV] = nav_layer
); );
void keyboard_post_init_user(void) { void keyboard_post_init_user(void) {
@ -121,9 +148,9 @@ void keyboard_post_init_user(void) {
layer_state_t layer_state_set_user(layer_state_t state) layer_state_t layer_state_set_user(layer_state_t state)
{ {
rgblight_set_layer_state(L_EXT, layer_state_cmp(state, L_EXT)); rgblight_set_layer_state(_SYM, layer_state_cmp(state, _SYM));
rgblight_set_layer_state(L_SYM, layer_state_cmp(state, L_SYM)); rgblight_set_layer_state(_NUM, layer_state_cmp(state, _NUM));
rgblight_set_layer_state(L_NUM, layer_state_cmp(state, L_NUM)); rgblight_set_layer_state(_FN, layer_state_cmp(state, _FN));
rgblight_set_layer_state(L_FUN, layer_state_cmp(state, L_FUN)); rgblight_set_layer_state(_NAV, layer_state_cmp(state, _NAV));
return state; return state;
} }

View file

@ -5,5 +5,18 @@ LTO_ENABLE = yes
COMMAND_ENABLE = no COMMAND_ENABLE = no
CONSOLE_ENABLE = no CONSOLE_ENABLE = no
# per key debounce: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_debounce_type.md # Enable N-Key Rollover
DEBOUNCE_TYPE = sym_defer_pk NKRO_ENABLE = yes
# less features we don't use
MOUSEKEY_ENABLE = no
SPACE_CADET_ENABLE = no
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
# more responsive debouncing: https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/
DEBOUNCE_TYPE = sym_eager_pk
# build
# qmk compile -kb planck/rev6_drop -km christoph-cullmann
# qmk flash -kb planck/rev6_drop -km christoph-cullmann