diff --git a/README.md b/README.md index de458bb1..5a84efe5 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,29 @@ My userspace for building QMK firmware via GitHub Actions. This does not require a local build environment where files are placed within keyboard subfolders. -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/) +## 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) 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 +- 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 + +Notes: + +- Outside thumb keys are encoder clicks. Some keyboards may have extra thumb keys +- Pressing Pointer DPI and Drag Scroll Toggle will enter bootlaoder on Ploopy Nano + +![image](my_keymap.png) ## Features +### Build Non-Tree Keyboards + +- Extended the [qmk/.github](https://github.com/qmk/.github) userspace build actions to build non-tree qmk keyboards (e.g. Barbellboards Rollow). This works by copying keyboard definitions from the userspace to the qmk_firmware keyboards folder in the container. The list of keyboards to copy are defined in `qmk_nontree.json` + ### Layout Wrapper Macros A single keymap layout can be shared with multiple keyboards by using C preprocessor macros. These macros are referenced in the keyboard JSON files, and the build process will expand them into a transient keymap.c file during compile time. @@ -58,12 +77,6 @@ Enables trackball functionality on certain boards (e.g., Ploopy Nano and Bastard Note: `MOUSEKEY_ENABLE` do not need to be enabled in tandem with this to get the mouse buttons. -### Mouse Keys - -Enables mouse emulation for all boards. Required when using the Ploopy Nano as that has no mouse buttons. - -Hold `a` to enter `_MOUSE` layer. Use right side directional pad (e.g. IJKL) to move the cursor and left side thumb keys for basic mouse clicking. - ### RGB Matrix Taste the rainbow for boards with RGB LEDs and large MCU memory footprints. Enables RGB lighting effects and layer/host status indicators. Review the keyboard files to identify the key position for each LED and update the preprocessor definitions in `config\rgbmatrix_config.h` @@ -76,140 +89,7 @@ Enables keyboard status visualization. Shows currently selected layer, active mo ### Combos -Enables simultaneous pressing of key combinations to get another. Handy when there are not enough keys on the keyboard - -**Note** Framework is present but disabled during redesign - -## Layout - -This is the keymap designed for split 3x5 layout, two thumb keys on each side, and dual encoders. Emphasis on: - -- Releasing all keys always brings you back to base layer -- Outside thumb keys are encoder clicks -- Keeping certain keys consistent on all layers for better muscle memory -- Numbers and function keys are positioned similarly -- 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 - -Additional keys may be mapped if present. Check each keyboard's `keymap.c` for more information - -```text -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ q │ w │ e │ r │ t │ │ y │ u │ i │ o │ p │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ a mou│ s │ d │ f │ g │ qwerty │ h │ j │ k │ l │ ' " │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ z │ x │ c │ v │ b │ │ n │ m │ , ( │ . ) │ - _ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: mwheel │ │ num │ mou │ │ spc │ nav │ mute │ enc: volume - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ q │ w │ f │ p │ b │ │ j │ l │ u │ y │ o │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ a mou│ r │ s │ t │ g │ colemak │ m │ n │ e │ i │ ' " │ -├──────┼──────┼──────┼──────┼──────┤ dh ├──────┼──────┼──────┼──────┼──────┤ -│ z │ x │ c │ d │ v │ │ k │ h │ , ( │ . ) │ - _ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: mwheel │ │ num │ mou │ │ spc │ nav │ mute │ enc: volume - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -Notes: -- swapped o and repeat on this keymap to keep repeat key in the same position across layers - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ tab │ q │ w │ e │ r │ │ │ │ │ │ │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ gnum │ a │ s │ d │ f │ game │ │ │ │ │ │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ z │ x │ c │ v │ b │ │ │ │ │ │ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: mwheel │ │ shft │ spc │ │ spc │ nav │ mute │ enc: volume - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ esc │ home │ up │ end │ pgup │ │ ins │ │ app │ │ cfg │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ │ left │ down │ rght │ pgdn │ nav │ bksp │ shft │ ctrl │ alt │ gui │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ undo │ cut │ copy │ pste │ redo │ │ del │ tab │ vol- │ vol+ │ mute │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┴──────┴──────╯ - enc: zoom │ zrst │ num │ ent │ │ │ nav │ │ enc: none - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -Notes: -- zrst - Ctrl + 0 to Zoom Reset - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ esc │ snip │ file │ func │ ` ~ │ │ ent │ 7 │ 8 │ 9 │ tab │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ gui │ alt │ ctrl │ shft │ ; : │ numbers │ bksp │ 4 │ 5 │ 6 │ . │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ undo │ cut │ copy │ pste │ redo │ │ del │ 1 │ 2 │ 3 │ - _ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: none │ │ sym │ │ │ spc │ 0 nav│ │ enc: ← → - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ esc │ │ @ │ $ │ ` ~ │ │ = + │ # │ * │ │ " "" │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ & │ { {} │ } │ | │ ; : │ symbols │ bksp │ ? │ [ [] │ ] │ ' '' │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ % ^ │ < <> │ > │ \ │ ! │ │ del │ / │ , () │ . ) │ - _ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: none │ │ sym │ │ │ │ nav │ │ enc: none - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -Notes: -- tri layer: Activate th the symbol layer by holding down symbol and navigation - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ mply2│ mrec2│ │ func │ │ │ pscr │ F7 │ F8 │ F9 │ F10 │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ │ │ │ │ scrl │ func │ caps │ F4 │ F5 │ F6 │ F11 │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ │ │ │ │ │ │ paus │ F1 │ F2 │ F3 │ F12 │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: none │ │ sym │ │ │ mply1│ mrec1│ │ enc: ↑ ↓ - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ │ btn5 │ btn4 │ btn3 │ │ │ whup │ │ mouu │ │ │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ mou │ alt │ ctrl │ shft │ │ mouse │ whdn │ moul │ moud │ mour │ │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ │ │ │ drgs │ snip │ │ sdpi │ pdpi │ │ │ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc:mwheel │ │ btn1 │ btn2 │ │ │ │ │ enc: none - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -Notes: -- drgs on non Charybdis Nano boards will trigger drag scrolling on Ploopy Nano -- pdpi on non Charybdis Nano boards will cycle Ploopy Nano DPI settings -- both together will enter bootlaoder on Ploopy Nano - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ │ esc │ ` │ g │ t │ │ │ │ │ │ │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ gnum │ 1 │ 2 │ 3 │ 4 │ game │ │ │ │ │ │ -├──────┼──────┼──────┼──────┼──────┤ num ├──────┼──────┼──────┼──────┼──────┤ -│ │ 5 │ 6 │ 7 │ 8 │ │ │ │ │ │ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - end: mwheel │ │ alt │ ctr │ │ │ nav │ mute │ enc: volume - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -╭──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────╮ -│ │ │ │ │ │ │ eeclr│ rboot│ boot │ │ cfg │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│rgbtog│rgbMod│ │ │ │ config │ blyr │ shft │ ctrl │ alt │ gui │ -├──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┤ -│ hue+ │ sat+ │ vib+ │ spd+ │ │ │ │ │ │ │ │ -╰──────┴──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┴──────╯ - enc: none │ │ │ │ │ │ nav │ │ enc: none - ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ - -notes: -- blyr - toggles between the three base layers: qwerty, colemakdh, game +Enables simultaneous pressing of key combinations to get another. Handy when there are not enough keys on the keyboard. Primarily used to implement mouse buttons and make important keys (enter, backspace, etc) available on base layer ## Target Keyboards diff --git a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c index d75794be..2b9473fc 100644 --- a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c +++ b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c @@ -26,8 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBER] = ROLLOW(LAYER_NUMBER), [_SYMBOL] = ROLLOW(LAYER_SYMBOL), [_FUNCTION] = ROLLOW(LAYER_FUNCTION), - [_MOUSE] = ROLLOW(LAYER_MOUSE), - [_GAME_NUM] = ROLLOW(LAYER_GAME_NUM), [_CONFIG] = ROLLOW(LAYER_CONFIG) }; @@ -44,8 +42,6 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_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(KC_DOWN, KC_UP ) }, - [_MOUSE] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(___x___, ___x___) }, - [_GAME_NUM] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, [_CONFIG] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, }; diff --git a/keyboards/barbellboards/rollow/keymaps/via/keymap.c b/keyboards/barbellboards/rollow/keymaps/via/keymap.c new file mode 100644 index 00000000..e82a46c4 --- /dev/null +++ b/keyboards/barbellboards/rollow/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT + //`--------------------------' `--------------------------' + + ), + + [1] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT + //`--------------------------' `--------------------------' + ), + + [2] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ), + + [3] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ) +}; + + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(XXXXXXX, XXXXXXX) }, + [3] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(XXXXXXX, XXXXXXX) } +}; \ No newline at end of file diff --git a/keyboards/barbellboards/rollow/keymaps/via/rules.mk b/keyboards/barbellboards/rollow/keymaps/via/rules.mk new file mode 100644 index 00000000..036bd6d1 --- /dev/null +++ b/keyboards/barbellboards/rollow/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/barbellboards/rollow/readme.md b/keyboards/barbellboards/rollow/readme.md index 0799349b..2650da3d 100644 --- a/keyboards/barbellboards/rollow/readme.md +++ b/keyboards/barbellboards/rollow/readme.md @@ -15,10 +15,6 @@ The current build guide is [available here](https://github.com/barbellboards/Rol Make example for this keyboard (after setting up your build environment): ```bash -# This board definition is currently not part of QMK Firmware -# Copy the keyboard definition into your forked/cloned QMK_HOME folder -cp /d/Repo/qmk_userspace/keyboards/barbellboards /d/Repo/qmk_firmware/keyboards/ -R - make barbellboards/rollow:default # or qmk compile -kb barbellboards/rollow -km default diff --git a/keyboards/barbellboards/rollow/rollow.c b/keyboards/barbellboards/rollow/rollow.c index 43c3a764..55cd56e0 100644 --- a/keyboards/barbellboards/rollow/rollow.c +++ b/keyboards/barbellboards/rollow/rollow.c @@ -106,13 +106,42 @@ static void oled_render_keylog(void) { __attribute__((weak)) void oled_render_logo(void) { // clang-format off - static const char PROGMEM crkbd_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, - 0}; + static const char PROGMEM rollow_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0, 0x00, 0x00, 0xf0, 0xf0, 0x00, + 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xe0, 0x80, 0x80, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0xf0, 0xf8, 0xf8, + 0xf8, 0x3c, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0xf8, 0xf8, 0xf8, 0xf0, + 0xc0, 0x08, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xe0, 0xe0, 0xf8, 0xf8, 0xf8, + 0xf8, 0x00, 0x00, 0x80, 0x80, 0xe0, 0xe0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x07, 0x01, 0x01, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, + 0x7f, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, 0x0f, 0x0f, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; // clang-format on - oled_write_P(crkbd_logo, false); + oled_write_P(rollow_logo, false); } bool oled_task_kb(void) { diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c index 6dff9187..2345a290 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/t4corun/keymap.c @@ -26,8 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBER] = CNANO(LAYER_NUMBER), [_SYMBOL] = CNANO(LAYER_SYMBOL), [_FUNCTION] = CNANO(LAYER_FUNCTION), - [_MOUSE] = CNANO(LAYER_MOUSE), - [_GAME_NUM] = CNANO(LAYER_GAME_NUM), [_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 92efb33e..f5f000b4 100644 --- a/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c +++ b/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c @@ -26,8 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBER] = SWOOP(LAYER_NUMBER), [_SYMBOL] = SWOOP(LAYER_SYMBOL), [_FUNCTION] = SWOOP(LAYER_FUNCTION), - [_MOUSE] = SWOOP(LAYER_MOUSE), - [_GAME_NUM] = SWOOP(LAYER_GAME_NUM), [_CONFIG] = SWOOP(LAYER_CONFIG) }; @@ -45,8 +43,6 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_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(KC_DOWN, KC_UP ) }, - [_MOUSE] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(___x___, ___x___) }, - [_GAME_NUM] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, [_CONFIG] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, }; diff --git a/keyboards/crkbd/keymaps/t4corun/keymap.c b/keyboards/crkbd/keymaps/t4corun/keymap.c index 3114f27a..0e961767 100644 --- a/keyboards/crkbd/keymaps/t4corun/keymap.c +++ b/keyboards/crkbd/keymaps/t4corun/keymap.c @@ -26,8 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBER] = CRKBD(LAYER_NUMBER), [_SYMBOL] = CRKBD(LAYER_SYMBOL), [_FUNCTION] = CRKBD(LAYER_FUNCTION), - [_MOUSE] = CRKBD(LAYER_MOUSE), - [_GAME_NUM] = CRKBD(LAYER_GAME_NUM), [_CONFIG] = CRKBD(LAYER_CONFIG) }; \ No newline at end of file diff --git a/keyboards/klor/keymaps/t4corun/config.h b/keyboards/klor/keymaps/t4corun/config.h new file mode 100644 index 00000000..e69de29b diff --git a/keyboards/klor/keymaps/t4corun/keymap.c b/keyboards/klor/keymaps/t4corun/keymap.c new file mode 100644 index 00000000..e69de29b diff --git a/keyboards/klor/keymaps/t4corun/readmd.md b/keyboards/klor/keymaps/t4corun/readmd.md new file mode 100644 index 00000000..e69de29b diff --git a/keyboards/klor/keymaps/t4corun/rules.mk b/keyboards/klor/keymaps/t4corun/rules.mk new file mode 100644 index 00000000..e69de29b diff --git a/keyboards/planck/keymaps/t4corun/keymap.c b/keyboards/planck/keymaps/t4corun/keymap.c index 3cec3d89..00d8c44b 100644 --- a/keyboards/planck/keymaps/t4corun/keymap.c +++ b/keyboards/planck/keymaps/t4corun/keymap.c @@ -26,8 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBER] = PLANCK(LAYER_NUMBER), [_SYMBOL] = PLANCK(LAYER_SYMBOL), [_FUNCTION] = PLANCK(LAYER_FUNCTION), - [_MOUSE] = PLANCK(LAYER_MOUSE), - [_GAME_NUM] = PLANCK(LAYER_GAME_NUM), [_CONFIG] = PLANCK(LAYER_CONFIG) }; \ No newline at end of file diff --git a/keymap-drawer.yml b/keymap-drawer.yml new file mode 100644 index 00000000..830822c1 --- /dev/null +++ b/keymap-drawer.yml @@ -0,0 +1,100 @@ +layout: + qmk_keyboard: bluebell/swoop + qmk_layout: LAYOUT_split_3x5_3 +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: "-"}] + - {type: ghost} + - NUM + - Shift + - Space + - NAV + - {t: Mute, type: ghost} + base_COLEMAK_DH: + - [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: "-"}] + - {type: ghost} + - NUM + - Shift + - Space + - 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] + - {t: Enter, type: ghost} + - Shift + - Space + - Space + - {h: "NAV", t: "0"} + - {t: Mute, type: ghost} + NAV: + - [Escape, Home, ▲, End, Page Up, Insert, Caps Lock, Scroll Lock, null, null ] + - [null, ◄, ▼, ►, Page Down, null, Shift, Ctrl, Alt, Gui ] + - [Undo, Cut, Copy, Paste, Redo, null, App, Vol-, Vol+, Mute ] + - {t: Zoom Reset, type: ghost} + - NUM + - Enter + - null + - {type: held} + - {t: Mute, type: ghost} + NUM: + - [null, Win Snip, Win File, null, {h: "~", t: "`"}, null, "7", "8" ,"9", null ] + - [Gui, Alt, Ctrl, Shift, {h: ":", t: ";"}, null, "4", "5" ,"6", "."] + - [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {h: "_", t: "-"}] + - {type: ghost} + - {type: held} + - null + - Space + - {h: "NAV", t: "0"} + - {type: ghost} + SYM: + - [null, null, "@", "$", {h: "~", t: "`"}, {h: "+", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}] + - ["&", {h: "{}", t: "{"}, "}", "|", {h: ":", t: ";"}, null, "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}] + - [{h: "^", t: "%"}, {h: "<>", t: "<"}, ">", "\\", "!", null, "/", {h: "()", t: ","}, {h: ")", t: "."}, {h: "_", t: "-"}] + - {type: ghost} + - {type: held} + - null + - null + - {type: held} + - {type: ghost} + FUNCTION: + - [null, null, Mouse Up, null, Mouse Wheel Up, Print Screen, F7, F8, F9, F10] + - [null, Mouse Left, Mouse Down, Mouse Right, Mouse Wheel Down, Num Lock, F4, F5, F6, F11] + - [Pointer DPI, Sniper DPI, null, Drag Scroll Toggle, Sniper Toggle, Pause Break, F1, F2, F3, F12] + - {type: ghost} + - {type: held} + - {type: held} + - Macro Play + - Macro Record + - {type: ghost} + CONFIG: + - [null, null, null, null, null, Clear EEPROM, Reboot, Boot Loader, null, null] + - [RGB Toggle, RGB Mode, null, null, null, Base Layer Toggle, Shift, Ctrl, Alt, Gui] + - [RGB Hue, RGB Sat, RGB Vib, RGB Spd, null, null, null, null, null, null ] + - {type: ghost} + - null + - null + - {type: held} + - {type: held} + - {type: ghost} +combos: + - { p: [1, 2], k: Esc, l: [base_QWERTY] } + - { p: [2, 3], k: MB4, l: [base_QWERTY] } + - { p: [3, 4], k: MB5, l: [base_QWERTY] } + - { p: [12, 13], k: MB1, l: [base_QWERTY] } + - { p: [13, 14], k: MB3, l: [base_QWERTY] } + - { p: [11, 12], k: DrgScr Tog, l: [base_QWERTY] } + - { p: [26, 27], k: Tab, l: [base_QWERTY] } + - { p: [21, 22], k: Enter, l: [base_QWERTY] } + - { p: [22, 23], k: MB2, l: [base_QWERTY] } + - { p: [7, 8], k: Bksp, l: [base_QWERTY] } + - { p: [6, 7], k: Del, l: [base_QWERTY] } + - { p: [31, 32], k: FUNC, l: [base_QWERTY], align: top } + - { p: [33, 34], k: CONFIG, l: [base_QWERTY], align: top } +draw_config: + small_pad: 6 diff --git a/my_keymap.png b/my_keymap.png new file mode 100644 index 00000000..7d38f253 Binary files /dev/null and b/my_keymap.png differ diff --git a/qmk_clone.json b/qmk_clone.json new file mode 100644 index 00000000..7aeff4f3 --- /dev/null +++ b/qmk_clone.json @@ -0,0 +1,8 @@ +{ + "clone_targets": [ + { + "repository": "https://github.com/app-gitKaiwho/qmk-config-klor/", + "tree": "main" + } + ] +} \ No newline at end of file diff --git a/users/t4corun/config/combo_config.h b/users/t4corun/config/combo_config.h index 87182471..033e2d1d 100644 --- a/users/t4corun/config/combo_config.h +++ b/users/t4corun/config/combo_config.h @@ -9,27 +9,30 @@ Explore these (there are way more) */ //Clear variables we plan to use that might be set elsewhere +#undef COMBO_ONLY_FROM_LAYER +#undef EXTRA_SHORT_COMBOS + #undef COMBO_TERM #undef COMBO_TERM_PER_COMBO -#undef COMBO_MUST_TAP_PER_COMBO -#undef EXTRA_SHORT_COMBOS -#undef COMBO_ONLY_FROM_LAYER #undef COMBO_HOLD_TERM #undef COMBO_MUST_HOLD_PER_COMBO +#undef COMBO_MUST_TAP_PER_COMBO #undef COMBO_MUST_PRESS_IN_ORDER_PER_COMBO - +#undef COMBO_SHOULD_TRIGGER //Set common configuration for all keyboards -#define COMBO_TERM 50 -#define COMBO_TERM_PER_COMBO -#define COMBO_MUST_TAP_PER_COMBO +#define COMBO_ONLY_FROM_LAYER 0 //this will always setup combos based off of QWERTY layout #define EXTRA_SHORT_COMBOS -#define COMBO_ONLY_FROM_LAYER 0 //this will always setup combos based off of QWERTY + +#define COMBO_TERM 35 +#define COMBO_TERM_PER_COMBO #define COMBO_HOLD_TERM TAPPING_TERM #define COMBO_MUST_HOLD_PER_COMBO -#define COMBO_MUST_PRESS_IN_ORDER_PER_COMBO \ No newline at end of file +#define COMBO_MUST_TAP_PER_COMBO +#define COMBO_MUST_PRESS_IN_ORDER_PER_COMBO +#define COMBO_SHOULD_TRIGGER \ No newline at end of file diff --git a/users/t4corun/features/combo.c b/users/t4corun/features/combo.c index 08f44efa..1d4a19b8 100644 --- a/users/t4corun/features/combo.c +++ b/users/t4corun/features/combo.c @@ -1,65 +1,5 @@ #include "combo.h" - -//only need to make it for the qwerty layer -//const uint16_t PROGMEM dragtog_combo[] = {TR_COMM, TR_DOT, COMBO_END}; -//const uint16_t PROGMEM sniptog_combo[] = {KC_M, TR_DOT, COMBO_END}; -//const uint16_t PROGMEM moubtn4_combo[] = {KC_SPC, NAV, COMBO_END}; - -combo_t key_combos[COMBO_LENGTH] = { - -/* -#if defined(POINTING_DEVICE_ENABLE) - [DRAGTOGGLE] = COMBO(dragtog_combo, DRG_TOG), - [SNIPERTOGGLE] = COMBO(sniptog_combo, SNP_TOG), -#else - [DRAGTOGGLE] = COMBO(dragtog_combo, ___x___), - [SNIPERTOGGLE] = COMBO(sniptog_combo, ___x___), -#endif //POINTING_DEVICE_ENABLE - -#if defined(MOUSELAYER_ENABLE) - [MOUSEBUTTON4] = COMBO(moubtn4_combo, KC_BTN4) -#else - [MOUSEBUTTON4] = COMBO(moubtn4_combo, ___x___) -#endif //MOUSELAYER_ENABLE -*/ -}; - - -bool get_combo_must_hold(uint16_t index, combo_t *combo) { - switch (index) { - default: - return false; - } -} - -bool get_combo_must_tap(uint16_t index, combo_t *combo) { - - switch (index) { - - /* - case DRAGTOGGLE: - case SNIPERTOGGLE: - case MOUSEBUTTON4: - return true; - */ - - default: - return false; - } -} - -bool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) { - switch (combo_index) { - /* List combos here that you want to only activate if their keys - * are pressed in the same order as they are defined in the combo's key - * array. */ - - default: - return false; - } -} - uint16_t get_combo_term(uint16_t index, combo_t *combo) { // or with combo index, i.e. its name from enum. switch (index) { @@ -71,5 +11,87 @@ uint16_t get_combo_term(uint16_t index, combo_t *combo) { default: return COMBO_TERM; - } + } +} + +bool get_combo_must_tap(uint16_t index, combo_t *combo) { + + switch (index) { + +#if defined(MOUSEKEY_ENABLE) + case MOUSE_BUTTON3: + case MOUSE_BUTTON4: + case MOUSE_BUTTON5: + case MOUSE_DRGTOG: +#endif //MOUSEKEY_ENABLE + + case KEY_ESC: + case KEY_ENT: + case KEY_TAB: + return true; + + default: + return false; + } +} + +bool get_combo_must_hold(uint16_t index, combo_t *combo) { + switch (index) { + + case LYR_CONFIG: + case LYR_FUNCTION: + return true; + + default: + return false; + } +} + +bool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) { + switch (combo_index) { + /* List combos here that you want to only activate if their keys + * are pressed in the same order as they are defined in the combo's key + * array. + * + * return false means they do not have to be pressed in order + * */ + + 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; + } + + switch (combo_index) { + + case KEY_ESC: + case KEY_ENT: + case KEY_TAB: + if ( get_highest_layer(layer_state) == _NAVIGATION || + get_highest_layer(layer_state) == _SYMBOL ) { + return false; + } + break; + + case MOUSE_BUTTON1: + case MOUSE_BUTTON2: + case MOUSE_BUTTON3: + case MOUSE_BUTTON4: + case MOUSE_BUTTON5: + case MOUSE_DRGTOG: + if ( get_highest_layer(layer_state) == _NAVIGATION || + get_highest_layer(layer_state) == _NUMBER || + get_highest_layer(layer_state) == _SYMBOL ) { + return false; + } + break; + } + + return true; } \ No newline at end of file diff --git a/users/t4corun/features/combo.h b/users/t4corun/features/combo.h index 818c45a6..1096fc69 100644 --- a/users/t4corun/features/combo.h +++ b/users/t4corun/features/combo.h @@ -2,11 +2,77 @@ #include "t4corun.h" enum combos { - //DRAGTOGGLE, - //SNIPERTOGGLE, - //MOUSEBUTTON4, + + // left hand combos +#if defined(MOUSEKEY_ENABLE) + MOUSE_BUTTON1, + MOUSE_BUTTON2, + MOUSE_BUTTON3, + MOUSE_BUTTON4, + MOUSE_BUTTON5, + MOUSE_DRGTOG, +#endif //MOUSEKEY_ENABLE + + KEY_ESC, + KEY_ENT, + LYR_FUNCTION, + + // right hand combos + KEY_TAB, + KEY_DEL, + KEY_BSPC, + LYR_CONFIG, + COMBO_LENGTH }; + +// left hand combos +#if defined(MOUSEKEY_ENABLE) +const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END }; +const uint16_t PROGMEM mou_btn2_combo[] = { KC_C, KC_V, COMBO_END }; +const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END }; +const uint16_t PROGMEM mou_btn4_combo[] = { KC_E, KC_R, COMBO_END }; +const uint16_t PROGMEM mou_btn5_combo[] = { KC_R, KC_T, COMBO_END }; +const uint16_t PROGMEM mou_drg_combo[] = { KC_S, KC_D, COMBO_END }; +#endif //MOUSEKEY_ENABLE + +const uint16_t PROGMEM key_esc_combo[] = { KC_W, KC_E, COMBO_END }; +const uint16_t PROGMEM key_ent_combo[] = { KC_X, KC_C, COMBO_END }; +const uint16_t PROGMEM lyr_fun_combo[] = { NUM, TR_LSFT, COMBO_END }; + + +// right hand combos +const uint16_t PROGMEM key_tab_combo[] = { KC_M, TR_COMM, COMBO_END }; +const uint16_t PROGMEM key_del_combo[] = { KC_U, KC_I, COMBO_END }; +const uint16_t PROGMEM key_bspc_combo[] = { KC_I, KC_O, COMBO_END }; +const uint16_t PROGMEM lyr_cfg_combo[] = { KC_SPC, NAV, COMBO_END }; + + + +combo_t key_combos[COMBO_LENGTH] = { + + // left hand combos +#if defined(MOUSEKEY_ENABLE) + [MOUSE_BUTTON1] = COMBO(mou_btn1_combo, TR_BTN1), + [MOUSE_BUTTON2] = COMBO(mou_btn2_combo, TR_BTN2), + [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, TR_BTN3), + [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, TR_BTN4), + [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, TR_BTN5), + [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS), +#endif //MOUSEKEY_ENABLE + + [KEY_ESC] = COMBO(key_esc_combo, KC_ESC), + [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), + [LYR_FUNCTION] = COMBO(lyr_fun_combo, FUNC), + + // right hand combos + [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), + [KEY_DEL] = COMBO(key_del_combo, KC_DEL), + [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC), + [LYR_CONFIG] = COMBO(lyr_cfg_combo, CONFIG) + +}; + //their documentation is so confusing because you don't use COMBO_LEN defining the actions -uint16_t COMBO_LEN = COMBO_LENGTH; \ No newline at end of file +uint16_t COMBO_LEN = COMBO_LENGTH; diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled.c index c7282a3c..5b0ec8f2 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -37,12 +37,7 @@ 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); - -#if defined(MOUSEKEY_ENABLE) - oled_write_P(PSTR(OLED_RENDER_LAYER_MOUSE), get_highest_layer(layer_state) == _MOUSE); -#endif //MOUSEKEY_ENABLE - - oled_write_P(PSTR(OLED_RENDER_LAYER_GAME_NUM), get_highest_layer(layer_state) == _GAME_NUM); + 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 fad58170..96688394 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/oled.h @@ -7,7 +7,7 @@ #define OLED_RENDER_MODS_NAME "Mods:" #define OLED_RENDER_LAYOUT_NAME "Lyout" -#define OLED_RENDER_LAYOUT_QWERTY " QRTY" +#define OLED_RENDER_LAYOUT_QWERTY " qrty" #define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH" #define OLED_RENDER_LAYOUT_GAME " Game" @@ -16,13 +16,9 @@ #define OLED_RENDER_LAYER_NUMBER " Num " #define OLED_RENDER_LAYER_NAVIGATION " Nav " #define OLED_RENDER_LAYER_SYMBOL " Sym " -#define OLED_RENDER_LAYER_GAME_NUM " gNum" +#define OLED_RENDER_LAYER_FUNCTION " Fun " #define OLED_RENDER_LAYER_CONFIG " Cfg " -#if defined(MOUSEKEY_ENABLE) -# define OLED_RENDER_LAYER_MOUSE " Mou " -#endif //MOUSEKEY_ENABLE - void render_crkbd_logo(void); void render_default_layer_state(void); void render_layer_state(void); diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index 298b1351..b5c4753c 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -18,7 +18,6 @@ UNICODE_ENABLE ?= no SPACE_CADET_ENABLE ?= no GRAVE_ESC_ENABLE ?= no -COMBO_ENABLE ?= no DYNAMIC_MACRO_ENABLE ?= yes RGB_MATRIX_ENABLE ?= no RGBLIGHT_ENABLE ?= no @@ -32,7 +31,7 @@ EXTRAKEY_ENABLE = yes AUDIO_ENABLE = no CAPS_WORD_ENABLE = yes MOUSEKEY_ENABLE = yes - +COMBO_ENABLE = yes # --------------------------------------------------------- # include my code that will be common across all my keyboards @@ -49,7 +48,6 @@ ifeq ($(strip $(CAPS_WORD_ENABLE)), yes) SRC += features/capsword.c endif - ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) SRC += features/rgbmatrix.c endif @@ -58,12 +56,10 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), ws2812) SRC += features/rgbmatrix.c endif - ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) SRC += features/mouse.c endif - ifeq ($(strip $(OLED_ENABLE)), yes) SRC += features/oled.c endif diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index 3b4c00a1..eb1a9c94 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -12,8 +12,6 @@ enum layers { _NUMBER, _SYMBOL, _FUNCTION, - _MOUSE, - _GAME_NUM, _CONFIG }; @@ -46,9 +44,8 @@ enum keycodes { #define NAV MO(_NAVIGATION) #define NAV_0 LT(_NAVIGATION, KC_0) #define NUM MO(_NUMBER) -#define CONFIG MO(_CONFIG) #define FUNC MO(_FUNCTION) -#define GAMENUM MO(_GAME_NUM) +#define CONFIG MO(_CONFIG) // Windows Shortcuts #define SC_COPY LCTL(KC_C) @@ -59,7 +56,7 @@ enum keycodes { #define SC_SNIP LGUI(LSFT(KC_S)) #define SC_FILE LGUI(KC_E) -// Zoom +// Zoom for encoders #define ZOOMIN LCTL(LSFT(KC_EQL)) #define ZOOMOUT LCTL(KC_MINS) #define ZOOMRST LCTL(KC_0) @@ -98,7 +95,6 @@ enum keycodes { #if defined(MOUSEKEY_ENABLE) -# define TR_MOUA LT(_MOUSE, KC_A) # define TR_MOUU KC_MS_U # define TR_MOUD KC_MS_D @@ -114,12 +110,10 @@ enum keycodes { # define TR_BTN4 KC_BTN4 # define TR_BTN5 KC_BTN5 -# define TR_NUM1 LT(_NUMBER, KC_BTN1) - # if defined(KEYBOARD_bastardkb_charybdis_3x5) //these codes are defined in charybdis.h # define TR_SNIP SNIPING -# define TR_DRGS DRGSCRL +# define TR_DRGS DRG_TOG # define TR_SDPI S_D_MOD //sniping dpi # define TR_PDPI DPI_MOD //pointer dpi # else @@ -130,7 +124,6 @@ enum keycodes { # endif //KEYBOARD_bastardkb_charybdis_3x5 #else -# define TR_MOUA KC_A # define TR_MOUU ___x___ # define TR_MOUD ___x___ @@ -151,7 +144,6 @@ enum keycodes { # define TR_SDPI ___x___ # define TR_PDPI ___x___ -# define TR_NUM1 MO(_NUMBER) #endif //MOUSEKEY_ENABLE @@ -197,85 +189,64 @@ enum keycodes { #define _SCAG_MODS________________________ TR_LSFT, TR_LCTL, TR_LALT, TR_LGUI #define _UCCPR_L___________________________________ SC_UNDO, SC_CUT, SC_COPY, SC_PAST, SC_REDO -#define _BASE_L4_________________ ___x___, TR_NUM1, TR_LSFT +#define _BASE_L4_________________ ___x___, NUM, TR_LSFT #define _BASE_R4_________________ KC_SPC, NAV, KC_MUTE #define _LAYER_TRANS_____________ ___x___, _______, ___x___ //___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, -#define BASETEST \ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ - KC_TAB, KC_ESC, KC_LSFT, KC_SPC, KC_ENT, KC_MUTE - - #define LAYER_QWERTY \ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ - TR_MOUA, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TR_QUOT, \ + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TR_QUOT, \ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TR_COMM, TR_DOT, TR_MINS, \ _BASE_L4_________________, _BASE_R4_________________ #define LAYER_COLEMAK_DH \ KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, TR_QUOT, \ - TR_MOUA, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, \ + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, \ KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, TR_COMM, TR_DOT, TR_MINS, \ _BASE_L4_________________, _BASE_R4_________________ #define LAYER_GAME \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, _NONE_5____________________________________, \ - GAMENUM, KC_A, KC_S, KC_D, KC_F, _NONE_5____________________________________, \ - KC_Z, KC_X, KC_C, KC_V, KC_B, _NONE_5____________________________________, \ - ___x___, KC_LSFT, KC_SPC, _BASE_R4_________________ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7, KC_8, KC_9, KC_ESC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_4, KC_5, KC_6, KC_GRV, \ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_1, KC_2, KC_3, CM_TOGG, \ + KC_ENT, KC_LSFT, KC_SPC, KC_SPC, NAV_0, KC_MUTE #define LAYER_NAVIGATION \ - KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_INS, ___x___, KC_APP, ___x___, CONFIG, \ - ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_BSPC, _SCAG_MODS________________________, \ - _UCCPR_L___________________________________, KC_DEL, KC_TAB, KC_VOLD, KC_VOLU, KC_MUTE, \ - ZOOMRST, NUM, KC_ENT, _LAYER_TRANS_____________ + KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_INS, KC_CAPS, KC_SCRL, ___x___, ___x___, \ + ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \ + _UCCPR_L___________________________________, ___x___, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, \ + ZOOMRST, _______, KC_ENT, _LAYER_TRANS_____________ #define LAYER_NUMBER \ - KC_ESC, SC_SNIP, SC_FILE, FUNC, TR_GRV, KC_ENT, KC_7, KC_8, KC_9, KC_TAB, \ - _GACS_MODS________________________, TR_SCLN, KC_BSPC, KC_4, KC_5, KC_6, KC_DOT, \ - _UCCPR_L___________________________________, KC_DEL, KC_1, KC_2, KC_3, TR_MINS, \ + ___x___, SC_SNIP, SC_FILE, ___x___, TR_GRV, ___x___, KC_7, KC_8, KC_9, ___x___, \ + _GACS_MODS________________________, TR_SCLN, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ + _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \ _LAYER_TRANS_____________, KC_SPC, NAV_0, ___x___ #define LAYER_SYMBOL \ - KC_ESC, ___x___, KC_AT, KC_DLR, TR_GRV, TR_EQL, KC_HASH, KC_ASTR, ___x___, TR_DQUO, \ - KC_AMPR, TR_LCBR, KC_RCBR, KC_PIPE, TR_SCLN, KC_BSPC, KC_QUES, TR_LBRC, KC_RBRC, TR_SQUO, \ - TR_PERC, TR_LABK, KC_RABK, KC_BSLS, KC_EXLM, KC_DEL, KC_SLSH, TR_LPRN, TR_DOT, TR_MINS, \ + ___x___, ___x___, KC_AT, KC_DLR, TR_GRV, TR_EQL, KC_HASH, KC_ASTR, ___x___, TR_DQUO, \ + KC_AMPR, TR_LCBR, KC_RCBR, KC_PIPE, TR_SCLN, ___x___, KC_QUES, TR_LBRC, KC_RBRC, TR_SQUO, \ + TR_PERC, TR_LABK, KC_RABK, KC_BSLS, KC_EXLM, ___x___, KC_SLSH, TR_LPRN, TR_DOT, TR_MINS, \ _LAYER_TRANS_____________, _LAYER_TRANS_____________ #define LAYER_FUNCTION \ - TR_DMP2, TR_DMR2, ___x___, _______, KC_SCRL, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, \ - _NONE_5____________________________________, KC_CAPS, KC_F4, KC_F5, KC_F6, KC_F11, \ - _NONE_5____________________________________, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, \ + ___x___, ___x___, TR_MOUU, ___x___, TR_MWHU, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, \ + ___x___, TR_MOUL, TR_MOUD, TR_MOUR, TR_MWHD, KC_NUM, KC_F4, KC_F5, KC_F6, KC_F11, \ + TR_PDPI, TR_SDPI, ___x___, TR_DRGS, TR_SNIP, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, \ _LAYER_TRANS_____________, TR_DMP1, TR_DMR1, ___x___ -#define LAYER_MOUSE \ - ___x___, TR_BTN5, TR_BTN4, TR_BTN3, ___x___, TR_MWHU, ___x___, TR_MOUU, ___x___, ___x___, \ - _______, _GACS_MOUSE_MODS_________, ___x___, TR_MWHD, TR_MOUL, TR_MOUD, TR_MOUR, ___x___, \ - _NONE_3__________________, TR_DRGS, TR_SNIP, TR_SDPI, TR_PDPI, ___x___, ___x___, ___x___, \ - ___x___, TR_BTN1, TR_BTN2, _NONE_3__________________ - - -#define LAYER_GAME_NUM \ - ___x___, KC_ESC, KC_TILD, KC_G, KC_T, _NONE_5____________________________________, \ - _______, KC_1, KC_2, KC_3, KC_4, _NONE_5____________________________________, \ - ___x___, KC_5, KC_6, KC_7, KC_8, _NONE_5____________________________________, \ - ___x___, KC_LALT, KC_LCTL, _LAYER_TRANS_____________ - - #define LAYER_CONFIG \ - _NONE_5____________________________________, EE_CLR, QK_RBT, QK_BOOT, ___x___, _______, \ + _NONE_5____________________________________, EE_CLR, QK_RBT, QK_BOOT, ___x___, ___x___, \ TR_RTOG, TR_RMOD, _NONE_3__________________, BASELYR, _SCAG_MODS________________________, \ TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, ___x___, _NONE_5____________________________________, \ - _NONE_3__________________, _LAYER_TRANS_____________ + _NONE_3__________________, _NONE_3__________________