From 6e9fb9373a0e43023f36e7867d32f38e2ad43770 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 10 May 2024 08:49:39 -0500 Subject: [PATCH] Tune and polish - Zoom shortcuts are now the scroll wheel - removed function layer - updated documentation - Enabled Tab to work on Navigation layer - Had to go back to basic minus keycode for F12 to work --- README.md | 38 +++++++++++++----- .../rollow/keymaps/t4corun/keymap.c | 2 - .../charybdis/3x5/keymaps/t4corun/keymap.c | 1 - .../bluebell/swoop/keymaps/t4corun/keymap.c | 2 - keyboards/crkbd/keymaps/t4corun/keymap.c | 1 - keyboards/planck/keymaps/t4corun/keymap.c | 1 - keymap-drawer.yml | 2 +- my_keymap.png | Bin 135546 -> 135537 bytes users/t4corun/features/combo.c | 5 +-- users/t4corun/features/oled.c | 1 - users/t4corun/features/oled.h | 1 - users/t4corun/t4corun.h | 29 +++---------- 12 files changed, 34 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 80e02e1f..c9116c7d 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,13 @@ Hold both thumb momentary layer keys `NAVIGATION` and `NUMBER` to access the `SY 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. +### Mouse Keys + +This layout is designed to be used with a Ploopy Nano. Mouse buttons and scroll wheel is handled on the keyboard side via combos. There are macros with the host status (Caps lock, Num Lock) to toggle Ploopy Nano settings and switch to drag scrolling (simulates scroll wheel) + ### Caps Word -Caps Word enables temporary all-caps typing without holding shift. Useful to typing programming variables. Tap `shift` twice to enable Caps Word. It cancels when any key is pressed except +Caps Word enables temporary all-caps typing without holding shift. Useful to typing programming variables. Tap `shift` twice to enable Caps Word. It cancels when any key is pressed except - `numbers 0-9` - `backspace` @@ -74,20 +78,32 @@ Opted to implement overrides here instead of using built-in Key Override functio ### Combos -Enables additional keys to be mapped by pressing multiple keys simultaneously. Primarily used to implement mouse buttons and make important keys (enter, backspace, etc) available on base layer +Enables additional keys to be mapped by pressing multiple keys simultaneously. Primarily used to implement mouse buttons and make important keys (tab, backspace, etc) available on base layer. Combos are mapped based on the QWERTY layout but will work on any layer*. All Combos are disabled when `CONFIG` layer is active + +| Combo | Result | Comment | +| ------------- | -------------------- | ------------------------------------------------- | +| `D` + `F` | `Mouse Button 1` | Left click. Mouse buttons only work on base layer | +| `S` + `D` | `Mouse Button 2` | RIght click | +| `F` + `G` | `Mouse Button 3` | Middle click | +| `R` + `F` | `Mouse Button 4` | Back | +| `T` + `G` | `Mouse Button 5` | Forward | +| `T` + `G` | `Drag Scroll Toggle` | | +| `C` + `V` | `Enter` | Disabled on `SYMBOL` layer | +| `U` + `I` | `Tab` | Disabled on `SYMBOL` layer | +| `M` + `Comma` | `Backspace` | | ### Key Overrides -Primarily used to minimize the layout +Enables us to customize the result of applying certain mods to keycodes. For example, Shift + Backspace will give Delete. Primarily used to minimize the number of layers required and the layout itself -| Keycode | Shift Mod Applied | Comment | -| --------- | ----------------- | -------------------------------------- | -| `KC_BSPC` | `KC_DEL` | Implemented to reduce amount of combos | -| `KC_MNXT` | `KC_MPRV` | | - -### Mouse Keys - -This layout is designed to be used with a Ploopy Nano. Mouse buttons and scroll wheel is handled on the keyboard side. There are macros with the host status (Caps lock, Num Lock) to toggle Ploopy Nano settings or change the tracking to simulate a scroll wheel +| Shortcut | Result | Comment | +| ----------------------- | ----------- | ----------------------------------------------------------------------------- | +| `Shift` + `Backspace` | `Delete` | Backspace is a combo. There are no dedicated backspace and delete keys mapped | +| `Shift` + `Next Song` | `Prev Song` | Only works on `NAVIGATION` layer | +| `Meh` + `numbers 1...9` | `F1...F9` | Only works on `NUMBER` layer. Meh is Shift + Ctrl + Alt. | +| `Meh` + `Comma` | `F10` | Only works on `NUMBER` layer | +| `Meh` + `Dot` | `F11` | Only works on `NUMBER` layer | +| `Meh` + `Minus` | `F12` | Only works on `NUMBER` layer | ## Optional Features diff --git a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c index ab8b2ece..7f38c73b 100644 --- a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c +++ b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c @@ -25,7 +25,6 @@ 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), [_CONFIG] = ROLLOW(LAYER_CONFIG) }; @@ -42,7 +41,6 @@ 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___) }, [_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 b12607a7..6354ed87 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c @@ -25,7 +25,6 @@ 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), [_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 5250e2e9..bd1bd389 100644 --- a/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c +++ b/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c @@ -25,7 +25,6 @@ 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), [_CONFIG] = SWOOP(LAYER_CONFIG) }; @@ -42,7 +41,6 @@ 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___) }, [_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 6d864e98..097ce3ad 100644 --- a/keyboards/crkbd/keymaps/t4corun/keymap.c +++ b/keyboards/crkbd/keymaps/t4corun/keymap.c @@ -25,7 +25,6 @@ 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), [_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 9169b139..173f6c08 100644 --- a/keyboards/planck/keymaps/t4corun/keymap.c +++ b/keyboards/planck/keymaps/t4corun/keymap.c @@ -25,7 +25,6 @@ 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), [_CONFIG] = PLANCK(LAYER_CONFIG) }; \ No newline at end of file diff --git a/keymap-drawer.yml b/keymap-drawer.yml index 9e4a13dc..e52c5624 100644 --- a/keymap-drawer.yml +++ b/keymap-drawer.yml @@ -45,7 +45,7 @@ layers: 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: "-"}] + - [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {s: "_", t: "-"}] - {type: ghost} - {type: held} - null diff --git a/my_keymap.png b/my_keymap.png index cad4dd90d9af8a928564940f443e3bf6295d016e..73de6256b00c51fcf1ecfb29aa680b983267513b 100644 GIT binary patch delta 20612 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 blq4YXPC78nd-eJr&~$;PtDnm{r-UW|jHpSQ delta 20572 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 diff --git a/users/t4corun/features/combo.c b/users/t4corun/features/combo.c index f4d80506..835ae85d 100644 --- a/users/t4corun/features/combo.c +++ b/users/t4corun/features/combo.c @@ -30,11 +30,8 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode switch (combo_index) { case KEY_ENT: - 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; + if ( get_highest_layer(layer_state) == _SYMBOL ) return false; case MOUSE_BUTTON1: case MOUSE_BUTTON2: diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled.c index 12fca159..d545be25 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -48,7 +48,6 @@ void render_layer_state(void) { 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_CONFIG), get_highest_layer(layer_state) == _CONFIG); } diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/oled.h index 0b0000f5..2259e365 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/oled.h @@ -15,7 +15,6 @@ #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_CONFIG " Cfg " void render_crkbd_logo(void); diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index a6208a8d..599aa2cf 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -11,7 +11,6 @@ enum layers { _NAVIGATION, _NUMBER, _SYMBOL, - //_FUNCTION, _CONFIG }; @@ -51,7 +50,6 @@ enum keycodes { #define NAV MO(_NAVIGATION) #define NAV_0 LT(_NAVIGATION, KC_0) #define NUM MO(_NUMBER) -//f#define FUNC MO(_FUNCTION) #define CONFIG MO(_CONFIG) // Windows Shortcuts @@ -64,8 +62,8 @@ enum keycodes { #define SC_FILE LGUI(KC_E) // Zoom for encoders -#define ZOOMIN LCTL(LSFT(KC_EQL)) -#define ZOOMOUT LCTL(KC_MINS) +#define ZOOMIN LCTL(KC_WH_U) +#define ZOOMOUT LCTL(KC_WH_D) #define ZOOMRST LCTL(KC_0) /* @@ -107,6 +105,7 @@ enum keycodes { #define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN) #define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT) +// Tells the process_tap_hold_key what kind of hold action is wanted #define HOLD_SINGLETP 0 #define HOLD_DOUBLETP 1 #define HOLD_BRACKETS 2 @@ -204,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________________________, ___x___, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ - _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \ + _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, KC_MINS, \ _LAYER_TRANS_____________, _BASE_R4_ZERO____________ @@ -214,27 +213,9 @@ 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, _______, \ _NONE_5____________________________________, ___x___, TR_LSFT, ___x___, ___x___, TR_RMOD, \ _NONE_5____________________________________, TR_RTOG, TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, \ - BASELYR, ___x___, ___x___, TR_DMP1, TR_DMR1, TR_RTOG - - -/* -If I was going to combine number and symbols together, it'd look like this - -#define LAYER_NUMBER \ - ___x___, SC_SNIP, SC_FILE, TR_LABK, KC_RABK, TR_LBRC, KC_7, KC_8, KC_9, KC_RBRC, \ - _GACS_MODS________________________, TR_GRV, TR_SCLN, KC_4, KC_5, KC_6, TR_EQL, \ - _UCCPR_L___________________________________, KC_SLSH, KC_1, KC_2, KC_3, KC_BSLS, \ - _LAYER_TRANS_____________, KC_SPC, NAV_0, ___x___ -*/ \ No newline at end of file + BASELYR, ___x___, ___x___, TR_DMP1, TR_DMR1, TR_RTOG \ No newline at end of file