diff --git a/README.md b/README.md index 3819825f..80e02e1f 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,10 @@ My userspace for building QMK firmware via GitHub Actions. This does not require ## Layout -The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from [Manna Harbor Miryoku](https://github.com/manna-harbour/miryoku), took heavy influence from [Jonas Hietala T-34](https://www.jonashietala.se/series/t-34/), and trying to achieve [Callum's Minimal Layout](https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/users/callum). The keymap designed for split 3x5, two thumbs keys, dual encoders, and combined with a Ploopy Nano trackball mouse. Design themes: +The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from [Manna Harbor Miryoku](https://github.com/manna-harbour/miryoku) and took heavy influence from [Jonas Hietala T-34](https://www.jonashietala.se/series/t-34/). The keymap designed for split 3x5, two thumbs keys, dual encoders, and combined with a Ploopy Nano trackball mouse. Design themes: - Releasing all keys always brings you back to base layer -- Keeping certain keys consistent on all layers for better muscle memory -- Numbers and function keys are positioned similarly +- Patterns to layout design to reduce learning curve (e.g., Shortcuts in same place on multiple layers) - Symbols important for powershell / writing are positioned under stronger fingers - Game keymap that doesn't require massive game key bind changes. Tested on Resident Evil 4 Remake @@ -33,11 +32,11 @@ In this userspace, the base split 3x5_3 layout can be adapted for other split ke ### Tri-Layer -Hold both thumb momentary layer keys `NAVIGATION` and `SYMBOL` to access the `NUMBER` layer +Hold both thumb momentary layer keys `NAVIGATION` and `NUMBER` to access the `SYMBOL` layer ### One Shot Mods -One Shot Mods is here to minimize holding and simplify layers as mods are not required on every layer. Here we have bi-lateral(ish) GACS mods. +One Shot Mods is here to minimize holding, simplify layers, and avoid misfires from having Home Row Mods. Here we have bi-lateral(ish) GACS mods. ### Caps Word @@ -57,23 +56,21 @@ Certain keys have different behaviors when held vs tapped allowing commonly type | `TR_LBRC` | `[` | `[]` with cursor inside | | | `TR_LABK` | `<` | `<>` with cursor inside | | | `TR_LPRN` | `(` | `()` with cursor inside | | +| `TR_SQUO` | `"` | `""` with cursor inside | | | `TR_SQUO` | `'` | `''` with cursor inside | | -| `TR_EQL` | `=` | `==` | | -| `TR_EXLM` | `!` | `$` | | +| `TR_BSLS` | `\` | `\\` | | +| `TR_SLSH` | `/` | `//` | | +| `TR_PIPE` | `\|` | `\|\|` | | | `TR_COMM` | `,` | `(` | enables parenthesis on base layer | | `TR_DOT` | `.` | `)` | | | `TR_PERC` | `%` | `^` | | +| `TR_EQL` | `=` | `+` | | | `TR_MINS` | `-` | `_` | | | `TR_GRV` | `backtick` | `~` | | | `TR_SCLN` | `;` | `:` | | | `TR_QUOT` | `'` | `"` | | -| `TR_AT` | `@` | `&` | | -| `TR_EXLM` | `!` | `$` | | -Opted to implement overrides here instead of using built-in Key Override functionality because - -- Not required to press/hold shift to get the alternate key -- Key Overrides would enable holding to repeat keycodes but hard to justify that for the symbols, even for programming +Opted to implement overrides here instead of using built-in Key Override functionality because this implementation does not require pressing/holding shift to get the alternate key ### Combos diff --git a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c index 304c090d..ab8b2ece 100644 --- a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c +++ b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVIGATION] = ROLLOW(LAYER_NAVIGATION), [_NUMBER] = ROLLOW(LAYER_NUMBER), [_SYMBOL] = ROLLOW(LAYER_SYMBOL), - [_FUNCTION] = ROLLOW(LAYER_FUNCTION), + //[_FUNCTION] = ROLLOW(LAYER_FUNCTION), [_CONFIG] = ROLLOW(LAYER_CONFIG) }; @@ -42,7 +42,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) }, [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, + //[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) } }; diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c index f989dc45..b12607a7 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVIGATION] = CNANO(LAYER_NAVIGATION), [_NUMBER] = CNANO(LAYER_NUMBER), [_SYMBOL] = CNANO(LAYER_SYMBOL), - [_FUNCTION] = CNANO(LAYER_FUNCTION), + //[_FUNCTION] = CNANO(LAYER_FUNCTION), [_CONFIG] = CNANO(LAYER_CONFIG) }; \ No newline at end of file diff --git a/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c b/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c index 0379539a..5250e2e9 100644 --- a/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c +++ b/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVIGATION] = SWOOP(LAYER_NAVIGATION), [_NUMBER] = SWOOP(LAYER_NUMBER), [_SYMBOL] = SWOOP(LAYER_SYMBOL), - [_FUNCTION] = SWOOP(LAYER_FUNCTION), + //[_FUNCTION] = SWOOP(LAYER_FUNCTION), [_CONFIG] = SWOOP(LAYER_CONFIG) }; @@ -42,7 +42,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) }, [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, + //[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, [_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) } }; diff --git a/keyboards/crkbd/keymaps/t4corun/keymap.c b/keyboards/crkbd/keymaps/t4corun/keymap.c index d13e52d3..6d864e98 100644 --- a/keyboards/crkbd/keymaps/t4corun/keymap.c +++ b/keyboards/crkbd/keymaps/t4corun/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVIGATION] = CRKBD(LAYER_NAVIGATION), [_NUMBER] = CRKBD(LAYER_NUMBER), [_SYMBOL] = CRKBD(LAYER_SYMBOL), - [_FUNCTION] = CRKBD(LAYER_FUNCTION), + //[_FUNCTION] = CRKBD(LAYER_FUNCTION), [_CONFIG] = CRKBD(LAYER_CONFIG) }; \ No newline at end of file diff --git a/keyboards/planck/keymaps/t4corun/keymap.c b/keyboards/planck/keymaps/t4corun/keymap.c index 8dbd9527..9169b139 100644 --- a/keyboards/planck/keymaps/t4corun/keymap.c +++ b/keyboards/planck/keymaps/t4corun/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVIGATION] = PLANCK(LAYER_NAVIGATION), [_NUMBER] = PLANCK(LAYER_NUMBER), [_SYMBOL] = PLANCK(LAYER_SYMBOL), - [_FUNCTION] = PLANCK(LAYER_FUNCTION), + //[_FUNCTION] = PLANCK(LAYER_FUNCTION), [_CONFIG] = PLANCK(LAYER_CONFIG) }; \ No newline at end of file diff --git a/keymap-drawer.yml b/keymap-drawer.yml index 0adcbdd6..9e4a13dc 100644 --- a/keymap-drawer.yml +++ b/keymap-drawer.yml @@ -4,8 +4,8 @@ layout: layers: base_QWERTY: - [Q, W, E, R, T, Y, U, I ,O, P] - - [A, S, D, F, G, H, J, K ,L, {h: '"', t: ''''}] - - [Z, X, C, V, B, N, M, {h: '(', t: ','} , {h: ')', t: '.'}, {h: '_', t: '-'}] + - [A, S, D, F, G, H, J, K ,L, {h: "\"", t: "'"}] + - [Z, X, C, V, B, N, M, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}] - {type: ghost} - NUM - Shift @@ -13,9 +13,9 @@ layers: - NAV - {t: Mute, type: ghost} base_COLEMAK_DH: - - [Q, W, F, P, B, J, L, U ,Y, {h: '"', t: ''''}] + - [Q, W, F, P, B, J, L, U ,Y, {h: "\"", t: "'"}] - [A, R, S, T, G, M, N, E ,I, O] - - [Z, X, C, D, V, K, H, {h: '(', t: ','} , {h: ')', t: '.'}, {h: '_', t: '-'}] + - [Z, X, C, D, V, K, H, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}] - {type: ghost} - NUM - Shift @@ -23,39 +23,39 @@ layers: - NAV - {t: Mute, type: ghost} base_GAME: - - [Tab, Q, W, E, R, T, '7', '8' ,'9', Esc] - - [Ctrl, A, S, D, F, G, '4', '5' ,'6', '`'] - - [Z, X, C, V, B, Alt, '1', '2' ,'3', Combo Toggle] + - [Tab, Q, W, E, R, T, "7", "8" ,"9", Esc] + - [Ctrl, A, S, D, F, G, "4", "5" ,"6", {s: "~", t: "`"}] + - [Z, X, C, V, B, Alt, "1", "2" ,"3", Combo Toggle] - {t: Enter, type: ghost} - Space - Shift - Space - - NAV + - {h: "NAV", t: "0"} - {t: Mute, type: ghost} NAV: - - [null, Home, ▲, End, Page Up, null, null, Caps Lock, Print Screen, CONFIG ] - - [null, ◄, ▼, ►, Page Down, null, Shift, Ctrl, Alt, Gui ] - - [Undo, Cut, Copy, Paste, Redo, null, App, Sniper Toggle, Sniper DPI, Pointer DPI ] + - [Esc, Home, ▲, End, Page Up, Vol+, Next, Play Pause, null, CONFIG ] + - [null, ◄, ▼, ►, Page Down, Vol-, Shift, Ctrl, Alt, Gui ] + - [Undo, Cut, Copy, Paste, Redo, Mute, App, Sniper Toggle, Sniper DPI, Pointer DPI ] - {t: Zoom Reset, type: ghost} - NUM - - Space + - Ent - null - {type: held} + - null + NUM: + - [Esc, Mouse 3, Mouse 2, Mouse 1, Print Screen, null, "7", "8" ,"9", {s: "<", t: ","} ] + - [Gui, Alt, Ctrl, Shift, null, null, "4", "5" ,"6", {s: ">", t: "."}] + - [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {h: "_", t: "-"}] + - {type: ghost} + - {type: held} + - null + - Space + - {h: "NAV", t: "0"} - {t: Mute, type: ghost} SYM: - - [Esc, Mouse 3, Mouse 2, Mouse 1, {h: '~', t: '`'}, {h: '==', t: '='}, '#', {h: '<>', t: '<'}, '>', {h: '^', t: '%'}] - - [Gui, Alt, Ctrl, Shift, {h: ':', t: ';'}, {h: '&', t: '@'}, {h: '*', t: '?'}, {h: '[]', t: '['}, ']', {h: '''''', t: ''''}] - - [Undo, Cut, Copy, Paste, Redo, {h: '\\', t: "\\"}, {h: '//', t: '/'}, {h: '()', t: '('}, ')', {h: '_', t: '-'}] - - {type: ghost} - - {type: held} - - null - - {h: '$', t: '!'} - - NAV - - {type: ghost} - NUM: - - [F7, F5, F3, F1, F9, F8, F10, F2, F4, F6] - - ['7', '5', '3', '1', '9', '8', '0', '2' , '4', '6' ] - - [Mute, Vol-, Vol+, Next, Play Pause, F11, F12, {h: '(', t: ','} , {h: ')', t: '.'}, {h: '_', t: '-'}] + - [null, null, "&", {h: "%", t: "^"}, {h: "~", t: "`"}, {h: "+", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}] + - [Caps Lock, {h: "{}", t: "{"}, "}", "!", {h: ":", t: ";"}, "@", "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}] + - [null, {h: "<>", t: "<"}, ">", {h: "\\\\", t: "\\"}, {h: "||", t: "|"}, "$", {h: "//", t: "/"}, {h: "()", t: "("}, ")", {h: "_", t: "-"}] - {type: ghost} - {type: held} - null diff --git a/my_keymap.png b/my_keymap.png index f59cb275..cad4dd90 100644 Binary files a/my_keymap.png and b/my_keymap.png differ diff --git a/users/t4corun/features/capsword.c b/users/t4corun/features/capsword.c index f0b93380..e15035a5 100644 --- a/users/t4corun/features/capsword.c +++ b/users/t4corun/features/capsword.c @@ -3,9 +3,12 @@ //static bool caps_word_state = false; bool caps_word_press_user(uint16_t keycode) { + switch (keycode) { + // Keycodes that continue Caps Word, with shift applied. case KC_A ... KC_Z: + case KC_MINS: add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key. return true; @@ -19,5 +22,7 @@ bool caps_word_press_user(uint16_t keycode) { default: return false; // Deactivate Caps Word. + } + } \ No newline at end of file diff --git a/users/t4corun/features/combo.c b/users/t4corun/features/combo.c index d4a10ef3..f4d80506 100644 --- a/users/t4corun/features/combo.c +++ b/users/t4corun/features/combo.c @@ -17,30 +17,24 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) { default: return false; + } + } bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) { // disable all combos on config layer - if ( get_highest_layer(layer_state) == _CONFIG ) { - return false; - } + if ( get_highest_layer(layer_state) == _CONFIG ) return false; switch (combo_index) { case KEY_ENT: - if ( get_highest_layer(layer_state) == _SYMBOL ) { - return false; - } - break; + if ( get_highest_layer(layer_state) == _SYMBOL ) return false; case KEY_TAB: if ( get_highest_layer(layer_state) == _NAVIGATION || - get_highest_layer(layer_state) == _SYMBOL ) { - return false; - } - break; + get_highest_layer(layer_state) == _SYMBOL ) return false; case MOUSE_BUTTON1: case MOUSE_BUTTON2: @@ -48,10 +42,7 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode case MOUSE_BUTTON4: case MOUSE_BUTTON5: case MOUSE_DRGTOG: - if ( get_highest_layer(layer_state) > _DEFAULT_LAYER_1 ) { - return false; - } - break; + if ( get_highest_layer(layer_state) > _DEFAULT_LAYER_1 ) return false; } diff --git a/users/t4corun/features/combo.h b/users/t4corun/features/combo.h index 62bba46c..b4790cd6 100644 --- a/users/t4corun/features/combo.h +++ b/users/t4corun/features/combo.h @@ -34,6 +34,7 @@ enum combos { KEY_BSPC, COMBO_LENGTH + }; diff --git a/users/t4corun/features/keyoverride.c b/users/t4corun/features/keyoverride.c index 50874a55..06487255 100644 --- a/users/t4corun/features/keyoverride.c +++ b/users/t4corun/features/keyoverride.c @@ -15,10 +15,35 @@ Intentionally did not convert all the override/autoshit tap holds to this format const key_override_t delete_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL); const key_override_t media_next_override = ko_make_basic(MOD_MASK_SHIFT, KC_MNXT, KC_MPRV); -const key_override_t **key_overrides = (const key_override_t *[]){ +const key_override_t f1_override = ko_make_with_layers(MOD_MASK_CSA, KC_1, KC_F1, _NUMBER); +const key_override_t f2_override = ko_make_with_layers(MOD_MASK_CSA, KC_2, KC_F2, _NUMBER); +const key_override_t f3_override = ko_make_with_layers(MOD_MASK_CSA, KC_3, KC_F3, _NUMBER); +const key_override_t f4_override = ko_make_with_layers(MOD_MASK_CSA, KC_4, KC_F4, _NUMBER); +const key_override_t f5_override = ko_make_with_layers(MOD_MASK_CSA, KC_5, KC_F5, _NUMBER); +const key_override_t f6_override = ko_make_with_layers(MOD_MASK_CSA, KC_6, KC_F6, _NUMBER); +const key_override_t f7_override = ko_make_with_layers(MOD_MASK_CSA, KC_7, KC_F7, _NUMBER); +const key_override_t f8_override = ko_make_with_layers(MOD_MASK_CSA, KC_8, KC_F8, _NUMBER); +const key_override_t f9_override = ko_make_with_layers(MOD_MASK_CSA, KC_9, KC_F9, _NUMBER); +const key_override_t f10_override = ko_make_with_layers(MOD_MASK_CSA, KC_COMM, KC_F10, _NUMBER); +const key_override_t f11_override = ko_make_with_layers(MOD_MASK_CSA, KC_DOT, KC_F11, _NUMBER); +const key_override_t f12_override = ko_make_with_layers(MOD_MASK_CSA, TR_MINS, KC_F12, _NUMBER); + +const key_override_t **key_overrides = (const key_override_t *[]) { &delete_override, &media_next_override, + &f1_override, + &f2_override, + &f3_override, + &f4_override, + &f5_override, + &f6_override, + &f7_override, + &f8_override, + &f9_override, + &f10_override, + &f11_override, + &f12_override, NULL // Null terminate the array of overrides! }; \ No newline at end of file diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled.c index 15b07d74..12fca159 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -1,19 +1,27 @@ #include "oled.h" void render_crkbd_logo(void) { + oled_write_P(crkbd_logo, false); + } void render_rollow_logo(void) { + oled_write_raw_P(rollow_logo, sizeof(rollow_logo)); + } void render_qmk_logo(void) { + oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); + } void render_default_layer_state(void) { + oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false); + switch (get_highest_layer(default_layer_state)) { case _QWERTY: @@ -27,32 +35,38 @@ void render_default_layer_state(void) { case _GAME: oled_write_P(PSTR(OLED_RENDER_LAYOUT_GAME), false); break; + } + } void render_layer_state(void) { + oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false); oled_write_P(PSTR(OLED_RENDER_LAYER_BASE), get_highest_layer(layer_state) == FIRST_DEFAULT_LAYER); oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION); oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER); oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL); - oled_write_P(PSTR(OLED_RENDER_LAYER_FUNCTION), get_highest_layer(layer_state) == _FUNCTION); + //oled_write_P(PSTR(OLED_RENDER_LAYER_FUNCTION), get_highest_layer(layer_state) == _FUNCTION); oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG); + } void render_keylock_status(void) { + oled_write_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false); oled_write_P(PSTR(" "), false); oled_write_P(PSTR("N"), host_keyboard_led_state().num_lock); oled_write_P(PSTR("C"), host_keyboard_led_state().caps_lock || is_caps_word_on() ); oled_write_ln_P(PSTR("S"), host_keyboard_led_state().scroll_lock ); + } void render_mod_status(void) { - + uint8_t current_mod = get_mods(); uint8_t current_osm = get_oneshot_mods(); @@ -68,6 +82,7 @@ void render_mod_status(void) { oled_write_P(PSTR("C"), isCtrl ); oled_write_P(PSTR("A"), isAlt ); oled_write_P(PSTR("G"), isGUI ); + } @@ -82,26 +97,39 @@ void render_oled_main(void) { bool oled_task_user(void) { - + if (is_keyboard_master()) { + render_oled_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { -#if defined( KEYBOARD_barbellboards_rollow ) + +#if defined(KEYBOARD_barbellboards_rollow) render_rollow_logo(); -#elif defined( KEYBOARD_crkbd ) +#elif defined(KEYBOARD_crkbd) render_crkbd_logo(); #else render_qmk_logo(); #endif + } + return false; + } + oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_270; + } else { + return OLED_ROTATION_0; + } + } \ No newline at end of file diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/oled.h index cff5d5a8..0b0000f5 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/oled.h @@ -15,7 +15,7 @@ #define OLED_RENDER_LAYER_NAVIGATION " Nav " #define OLED_RENDER_LAYER_NUMBER " Num " #define OLED_RENDER_LAYER_SYMBOL " Sym " -#define OLED_RENDER_LAYER_FUNCTION " Fun " +//#define OLED_RENDER_LAYER_FUNCTION " Fun " #define OLED_RENDER_LAYER_CONFIG " Cfg " void render_crkbd_logo(void); diff --git a/users/t4corun/features/taphold.c b/users/t4corun/features/taphold.c index eb113454..84e6101f 100644 --- a/users/t4corun/features/taphold.c +++ b/users/t4corun/features/taphold.c @@ -1,33 +1,5 @@ #include "taphold.h" -/* -void single_tap(uint16_t key, uint16_t altkey, bool isHold) { - isHold ? tap_code16(altkey) : tap_code16(key); -} - -void double_tap(uint16_t key, uint16_t altkey, uint32_t ms) { - bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) ); - - isShift ? tap_code16(LSFT(key)) : tap_code16(key); - wait_ms(ms); - isShift ? tap_code16(LSFT(altkey)) : tap_code16(altkey); - -void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) { - bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) ); - - isShift ? tap_code16(LSFT(left)) : tap_code16(left); - wait_ms(ms); - isShift ? tap_code16(LSFT(right)) : tap_code16(right); - wait_ms(ms); - tap_code16(KC_LEFT); -} -*/ - -void single_tap(uint16_t key) { - - tap_code16(key); - -} void double_tap(uint16_t key, uint32_t ms) { @@ -49,9 +21,6 @@ void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) { bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode) { - // https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press - - if (record->tap.count > 0) { // Key is being tapped // register on press, unregister on release @@ -78,131 +47,3 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t ho return false; } - - - - - - - - - - -/* - -// here we can have the holds be more complex, like sending "" when you hold " -bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) { - - // tap is record->tap.count && record->event.pressed - // hold is record->event.pressed - - // just saving this to handle mods - // bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) ); - // isShift ? insert_brackets(LSFT(key), LSFT(altkey)) : insert_brackets(key, altkey); - - bool isHold = false; - - if (record->tap.count && record->event.pressed) { - - switch(keycode) { - - case TR_LCBR: - single_tap(TAPHOLD_LCBR, isHold); break; - case TR_LABK: - single_tap(TAPHOLD_LABK, isHold); break; - case TR_LBRC: - single_tap(TAPHOLD_LBRC, isHold); break; - case TR_LPRN: - single_tap(TAPHOLD_LPRN, isHold); break; - case TR_DQUO: - single_tap(TAPHOLD_DQUO, isHold); break; - case TR_SQUO: - single_tap(TAPHOLD_SQUO, isHold); break; - - case TR_BSLS: - single_tap(TAPHOLD_BSLS, isHold); break; - case TR_SLSH: - single_tap(TAPHOLD_SLSH, isHold); break; - case TR_PIPE: - single_tap(TAPHOLD_PIPE, isHold); break; - - case TR_COMM: - single_tap(TAPHOLD_COMM, isHold); break; - case TR_DOT: - single_tap(TAPHOLD_DOT, isHold); break; - case TR_PERC: - single_tap(TAPHOLD_PERC, isHold); break; - - case TR_EQL: - single_tap(TAPHOLD_EQL, isHold); break; - case TR_MINS: - single_tap(TAPHOLD_MINS, isHold); break; - case TR_GRV: - single_tap(TAPHOLD_GRV, isHold); break; - case TR_SCLN: - single_tap(TAPHOLD_SCLN, isHold); break; - case TR_QUOT: - single_tap(TAPHOLD_QUOT, isHold); break; - - } - - return false; - - } else if (record->tap.count == 0 && record->event.pressed) { - - isHold = true; - - switch(keycode) { - - // Brackets: open and close brackets and put the cursor inside - case TR_LCBR: - insert_brackets(TAPHOLD_LCBR, WAIT_DELAY); break; - case TR_LABK: - insert_brackets(TAPHOLD_LABK, WAIT_DELAY); break; - case TR_LBRC: - insert_brackets(TAPHOLD_LBRC, WAIT_DELAY); break; - case TR_LPRN: - insert_brackets(TAPHOLD_LPRN, WAIT_DELAY); break; - case TR_DQUO: - insert_brackets(TAPHOLD_DQUO, WAIT_DELAY); break; - case TR_SQUO: - insert_brackets(TAPHOLD_SQUO, WAIT_DELAY); break; - - // double tap - case TR_BSLS: - double_tap(TAPHOLD_BSLS, WAIT_DELAY); break; - case TR_SLSH: - double_tap(TAPHOLD_SLSH, WAIT_DELAY); break; - case TR_PIPE: - double_tap(TAPHOLD_PIPE, WAIT_DELAY); break; - - // custom override without holding shift - case TR_COMM: - single_tap(TAPHOLD_COMM, isHold); break; - case TR_DOT: - single_tap(TAPHOLD_DOT, isHold); break; - case TR_PERC: - single_tap(TAPHOLD_PERC, isHold); break; - - // simulates auto-shift - case TR_EQL: - single_tap(TAPHOLD_EQL, isHold); break; - case TR_MINS: - single_tap(TAPHOLD_MINS, isHold); break; - case TR_GRV: - single_tap(TAPHOLD_GRV, isHold); break; - case TR_SCLN: - single_tap(TAPHOLD_SCLN, isHold); break; - case TR_QUOT: - single_tap(TAPHOLD_QUOT, isHold); break; - - } - - return false; - - } - - return true; // Continue default handling. -} - -*/ \ No newline at end of file diff --git a/users/t4corun/features/taphold.h b/users/t4corun/features/taphold.h index 1253791a..7cf63f39 100644 --- a/users/t4corun/features/taphold.h +++ b/users/t4corun/features/taphold.h @@ -1,52 +1,7 @@ #pragma once #include "t4corun.h" -/* -void single_tap(uint16_t key, uint16_t altkey, bool isHold); -void double_tap(uint16_t key, uint16_t altkey, uint32_t ms); -void insert_brackets(uint16_t left, uint16_t right, uint32_t ms); -void insert_brackets(uint16_t left, uint16_t right, uint32_t ms); -bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode); -*/ - void single_tap(uint16_t key); void double_tap(uint16_t key, uint32_t ms); void insert_brackets(uint16_t left, uint16_t right, uint32_t ms); -bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode); - - - - -/* the first element is the alt key (tap action) - * the second is altkey (hold action usually) - * - * I was doing a switch statement to assign these each time, but this is faster - * and easier to maintain -*/ - -/* -// Brackets: open and close brackets and put the cursor inside -#define TAPHOLD_LCBR KC_LCBR, KC_RCBR -#define TAPHOLD_LABK KC_LABK, KC_RABK -#define TAPHOLD_LBRC KC_LBRC, KC_RBRC -#define TAPHOLD_LPRN KC_LPRN, KC_RPRN -#define TAPHOLD_DQUO KC_DQUO, KC_DQUO -#define TAPHOLD_SQUO KC_QUOT, KC_QUOT - -// double tap -#define TAPHOLD_BSLS KC_BSLS, KC_BSLS -#define TAPHOLD_SLSH KC_SLSH, KC_SLSH -#define TAPHOLD_PIPE KC_PIPE, KC_PIPE - -// Custom override without holding shift -#define TAPHOLD_COMM KC_COMM, KC_LPRN -#define TAPHOLD_DOT KC_DOT, KC_RPRN -#define TAPHOLD_PERC KC_PERC, KC_CIRC - -// auto shift -#define TAPHOLD_EQL KC_EQL, KC_PLUS -#define TAPHOLD_MINS KC_MINS, KC_UNDS -#define TAPHOLD_GRV KC_GRV, KC_TILD -#define TAPHOLD_SCLN KC_SCLN, KC_COLN -#define TAPHOLD_QUOT KC_QUOT, KC_DQUO -*/ \ No newline at end of file +bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode); \ No newline at end of file diff --git a/users/t4corun/features/tapping.c b/users/t4corun/features/tapping.c index 4d99e244..e8cc1826 100644 --- a/users/t4corun/features/tapping.c +++ b/users/t4corun/features/tapping.c @@ -8,7 +8,6 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { return TAPPING_TERM + 60; default: - //uprintf("tapping term: %d \n", TAPPING_TERM); return TAPPING_TERM; } diff --git a/users/t4corun/t4corun.c b/users/t4corun/t4corun.c index 6da4076e..3c2055a7 100644 --- a/users/t4corun/t4corun.c +++ b/users/t4corun/t4corun.c @@ -12,23 +12,30 @@ layer_state_t layer_state_set_user(layer_state_t state) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - + case BASELYR: - if (record->event.pressed) { + if (record->event.pressed) { + current_base_layer = (current_base_layer + 1) % NUM_BASE_LAYER; set_single_persistent_default_layer(current_base_layer); + } return false; + case RBSELYR: if (record->event.pressed) { + current_base_layer = (current_base_layer - 1) % NUM_BASE_LAYER; set_single_persistent_default_layer(current_base_layer); + } return false; + case PN_DRGS: if (record->event.pressed) { + //tap numlock twice to toggle ploopy nano drag scroll // double_tap(KC_NUM, KC_NUM, WAIT_DELAY); double_tap(KC_NUM, WAIT_DELAY); @@ -36,91 +43,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; + case PN_PDPI: if (record->event.pressed) { + //tap capslock twice to cycle ploopy nano pointer DPI //double_tap(KC_CAPS, KC_CAPS, WAIT_DELAY); double_tap(KC_CAPS, WAIT_DELAY); + } return false; -/* - case KC_BSPC: { - //https://docs.qmk.fm/#/feature_advanced_keycodes?id=shift-backspace-for-delete - - // Initialize a boolean variable that keeps track - // of the delete key status: registered or not? - static bool delkey_registered = false; - - if (record->event.pressed) { - - uint8_t current_mod = get_mods(); - uint8_t current_osm = get_oneshot_mods(); - - // Detect the activation of either shift keys - if ((current_mod | current_osm) & MOD_MASK_SHIFT) { - - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_DEL keycode - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - - // Press delete and keep track that key press - register_code(KC_DEL); - delkey_registered = true; - - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the Backspace/Delete key - set_mods(current_mod); - set_oneshot_mods(current_osm); - - return false; - - } - - } else { // on release of KC_BSPC - - if(delkey_registered) { - - unregister_code(KC_DEL); - delkey_registered = false; - return false; - - } - - } - - // QMK will process Backspace instead - // if the shift modifier is not detected - return true; - } -*/ - //https://docs.qmk.fm/#/mod_tap?id=changing-both-tasp-and-hold //https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press //https://www.jonashietala.se/series/t-34/ he focuses on a keymap for programming/VIM -/* - case TR_LCBR: - case TR_LABK: - case TR_LBRC: - case TR_LPRN: - case TR_SQUO: - case TR_EQL: - case TR_BSLS: - case TR_SLSH: - case TR_COMM: - case TR_DOT: - case TR_PERC: - case TR_EXLM: - case TR_AT: - case TR_QUES: - case TR_MINS: - case TR_GRV: - case TR_SCLN: - case TR_QUOT: - return process_tap_hold_key(record, keycode); -*/ - // Brackets: open and close brackets and put the cursor inside case TR_LCBR: return process_tap_hold_key(record, KC_LCBR, KC_RCBR, HOLD_BRACKETS); diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index d72eec00..a6208a8d 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -11,7 +11,7 @@ enum layers { _NAVIGATION, _NUMBER, _SYMBOL, - _FUNCTION, + //_FUNCTION, _CONFIG }; @@ -51,7 +51,7 @@ enum keycodes { #define NAV MO(_NAVIGATION) #define NAV_0 LT(_NAVIGATION, KC_0) #define NUM MO(_NUMBER) -#define FUNC MO(_FUNCTION) +//f#define FUNC MO(_FUNCTION) #define CONFIG MO(_CONFIG) // Windows Shortcuts @@ -85,61 +85,32 @@ enum keycodes { // Brackets: open and close brackets and put the cursor inside #define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) #define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK) -#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC) // +#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC) #define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN) #define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO) -#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO) +#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO) // double tap -#define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS) // -#define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH) // +#define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS) +#define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH) #define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE) // Custom override without holding shift -#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) // -#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT) // +#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) +#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT) #define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC) // auto shift -#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) // -#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS) // -#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV) // -#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN) // -#define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT) // +#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) +#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS) +#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV) +#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN) +#define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT) #define HOLD_SINGLETP 0 #define HOLD_DOUBLETP 1 #define HOLD_BRACKETS 2 -/* - -// tap hoLd. These will be intercepted and overridden. The LT will be ignored -// Brackets: open and close brackets and put the cursor inside -#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) -#define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK) -#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC) // -#define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN) -#define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO) -#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO) - -// double tap -#define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS) // -#define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH) // -#define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE) - -// Custom override without holding shift -#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) // -#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT) // -#define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC) - -// auto shift -#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) // -#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS) // -#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV) // -#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN) // -#define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT) // - -*/ #if defined(KEYBOARD_bastardkb_charybdis_3x5) //these mouse codes are defined in charybdis.h @@ -232,7 +203,7 @@ enum keycodes { #define LAYER_NUMBER \ KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, KC_PSCR, ___x___, KC_7, KC_8, KC_9, KC_COMM, \ - _GACS_MODS________________________, FUNC, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ + _GACS_MODS________________________, ___x___, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \ _LAYER_TRANS_____________, _BASE_R4_ZERO____________ @@ -243,13 +214,13 @@ enum keycodes { ___x___, TR_LABK, KC_RABK, TR_BSLS, TR_PIPE, KC_DLR, TR_SLSH, TR_LPRN, KC_RPRN, TR_MINS, \ _LAYER_TRANS_____________, _LAYER_TRANS_____________ - +/* #define LAYER_FUNCTION \ _NONE_5____________________________________, ___x___, KC_F7, KC_F8, KC_F9, KC_F10, \ ___x___, ___x___, ___x___, ___x___, _______, KC_CAPS, KC_F4, KC_F5, KC_F6, KC_F11, \ _NONE_5____________________________________, ___x___, KC_F1, KC_F2, KC_F3, KC_F12, \ _LAYER_TRANS_____________, _NONE_3__________________ - +*/ #define LAYER_CONFIG \ _NONE_5____________________________________, ___x___, ___x___, EE_CLR, QK_BOOT, _______, \