diff options
| author | Jacob Jerrell <jacob.jerrell@gmail.com> | 2020-12-06 00:30:27 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-06 17:30:27 +1100 |
| commit | 3076f86dc11d346d07c63e5fb11702817d7034e7 (patch) | |
| tree | ebf9b4f3dd89366069f2123a0c984692c3d98e52 /layouts | |
| parent | 6b1f96dca8b1218c0e3de6ef23dbde107f8c4588 (diff) | |
| download | qmk_firmware-3076f86dc11d346d07c63e5fb11702817d7034e7.tar.gz qmk_firmware-3076f86dc11d346d07c63e5fb11702817d7034e7.zip | |
Bocaj - Third Annual Refactor (Redux) (#10295)
* Reset everything to upstream, reapply Bocaj changes
* Bocaj - address PR comments
* Just in time changes
* Bocaj - Several adjustments after using the layout for a while
Diffstat (limited to 'layouts')
| -rw-r--r-- | layouts/community/ergodox/bocaj/config.h | 2 | ||||
| -rw-r--r-- | layouts/community/ergodox/bocaj/keymap.c | 307 | ||||
| -rw-r--r-- | layouts/community/ergodox/bocaj/readme.md | 47 | ||||
| -rw-r--r-- | layouts/community/ergodox/bocaj/rules.mk | 23 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/bocaj/config.h | 109 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/bocaj/keymap.c | 286 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/bocaj/readme.md | 23 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/bocaj/rules.mk | 44 |
8 files changed, 637 insertions, 204 deletions
diff --git a/layouts/community/ergodox/bocaj/config.h b/layouts/community/ergodox/bocaj/config.h index bc1d20a62..621ae784c 100644 --- a/layouts/community/ergodox/bocaj/config.h +++ b/layouts/community/ergodox/bocaj/config.h | |||
| @@ -1,6 +1,4 @@ | |||
| 1 | #pragma once | 1 | #pragma once |
| 2 | 2 | ||
| 3 | #include QMK_KEYBOARD_CONFIG_H | ||
| 4 | |||
| 5 | #define LEADER_TIMEOUT 250 | 3 | #define LEADER_TIMEOUT 250 |
| 6 | #define LEADER_PER_KEY_TIMING | 4 | #define LEADER_PER_KEY_TIMING |
diff --git a/layouts/community/ergodox/bocaj/keymap.c b/layouts/community/ergodox/bocaj/keymap.c index cb78e7aae..ba105a8f1 100644 --- a/layouts/community/ergodox/bocaj/keymap.c +++ b/layouts/community/ergodox/bocaj/keymap.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | Copyright 2018 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell | 2 | Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell |
| 3 | 3 | ||
| 4 | This program is free software: you can redistribute it and/or modify | 4 | This program is free software: you can redistribute it and/or modify |
| 5 | it under the terms of the GNU General Public License as published by | 5 | it under the terms of the GNU General Public License as published by |
| @@ -15,182 +15,161 @@ You should have received a copy of the GNU General Public License | |||
| 15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | 15 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #include QMK_KEYBOARD_H | ||
| 19 | #include "bocaj.h" | 18 | #include "bocaj.h" |
| 20 | 19 | ||
| 21 | #define LAYOUT_ergodox_pretty_base( \ | 20 | /* |
| 22 | K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ | 21 | * The `LAYOUT_ergodox_pretty_base` macro is a template to allow the use of |
| 23 | K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ | 22 | * identical modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, |
| 24 | K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ | 23 | * etc), so that there is no need to set them up for each layout, and modify |
| 25 | ) \ | 24 | * all of them if I want to change them. This helps to keep consistency and |
| 26 | LAYOUT_ergodox_pretty_wrapper( \ | 25 | * ease of use. K## is a placeholder to pass through the individual keycodes |
| 27 | KC_ESC, __________________NUMBER_LEFT_______________, JJ_ARRW, KC_MINS, __________________NUMBER_RIGHT______________, KC_EQUAL, \ | 26 | */ |
| 28 | KC_DEL, K01, K02, K03, K04, K05, KC_LPRN, KC_RPRN, K06, K07, K08, K09, K0A, KC_BSLASH, \ | 27 | #define LAYOUT_ergodox_bocaj(...) WRAPPER_ergodox_bocaj(__VA_ARGS__) |
| 29 | KC_NUMS, K11, SFT_T(K12), K13, ALT_T(K14), K15, K16, ALT_T(K17), K18, SFT_T(K19), K1A, KC_QUOT, \ | 28 | #define LAYOUT_ergodox_bocaj_WIN(...) WRAPPER_ergodox_bocaj_WIN(__VA_ARGS__) |
| 30 | OS_LSFT, CTL_T(K21), K22, K23, K24, K25, HYP_LBK, MEH_RBK, K26, K27, K28, K29, CTL_T(K2A), KC_RSFT, \ | ||
| 31 | KC_GAME,KC_NUMS, TT(_LOWER), KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, UC_DISA,KC_GAME, KC_ADJS, \ | ||
| 32 | KC_APP,KC_HOME, KC_END,KC_ESC, \ | ||
| 33 | UC_FLIP, UC_TABL, \ | ||
| 34 | KC_SPACE,KC_BSPACE,KC_LEAD, UC_SHRG,KC_TAB,KC_LWEN \ | ||
| 35 | ) | ||
| 36 | |||
| 37 | #define LAYOUT_ergodox_pretty_base_wrapper(...) LAYOUT_ergodox_pretty_base(__VA_ARGS__) | ||
| 38 | 29 | ||
| 39 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 30 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 40 | /* Workman - http://www.keyboard-layout-editor.com/#/gists/7a07cb982ec3597ba3e3d947554225f1 | 31 | |
| 41 | .---------------------------------------------. .---------------------------------------------. | 32 | [_WORKMAN] = LAYOUT_ergodox_bocaj( |
| 42 | | ESC | 1 | 2 | 3 | 4 | 5 | -> | ! - | 6 | 7 | 8 | 9 | 0 | = | | 33 | KC_ESC, ________________NUMBER_LEFT________________, KC_ARRW, KC_MINS, ________________NUMBER_RIGHT_______________, KC_EQUAL, |
| 43 | !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! | 34 | KC_DEL, _________________WORKMAN_L1________________, KC_LPRN, KC_RPRN, _________________WORKMAN_R1________________, KC_BSLS, |
| 44 | | DEL | Q | D | R | W | B | ( | ! ) | J | F | U | P | ; | \ | | 35 | _______, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, |
| 45 | !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! | 36 | KC_LSFT, _________________WORKMAN_L3________________, KC_LBRC, KC_RBRC, _________________WORKMAN_R3________________, _______, |
| 46 | | NUMS | A | S | H | T | G |-------! !-------! Y | N | E | O | I | ' | | 37 | MO_MOD, KC_PGUP, KC_HOME, KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, KC_END, KC_PGDN, WORKMAN, |
| 47 | !-------+-----+-----+-----x-----x-----! HYP ! ! MEH !-----x-----x-----+-----+-----+-------! | 38 | KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, |
| 48 | | SHIFT | Z | X | M | C | V | [ | ! ] | K | L | , | . | / | SHIFT | | 39 | KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, |
| 49 | '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' | 40 | KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER |
| 50 | | | NUM | LWR | UP | LFT | .---------------. .---------------. ! RGT | DWN | |GAME | ADJ | | 41 | ), |
| 51 | '------------------------------' | APP | HOME | ! PGUP | ESC | '------------------------------' | 42 | |
| 52 | .-------+-------+-------! !-------+-------+-------. | 43 | [_WWORKMAN] = LAYOUT_ergodox_bocaj_WIN( |
| 53 | ! ! | END | ! PGDN | ! ENTER ! | 44 | KC_ESC, ________________NUMBER_LEFT________________, KC_ARRW, KC_MINS, ________________NUMBER_RIGHT_______________, KC_EQUAL, |
| 54 | ! SPACE ! BSPCE !-------! !-------! TAB ! / ! | 45 | KC_DEL, _________________WORKMAN_L1________________, KC_LPRN, KC_RPRN, _________________WORKMAN_R1________________, KC_BSLS, |
| 55 | | | | COPY | ! PASTE | | LOWER | | 46 | _______, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, |
| 56 | '-----------------------' '-----------------------' | 47 | KC_LSFT, _________________WORKMAN_L3________________, KC_LBRC, KC_RBRC, _________________WORKMAN_R3________________, _______, |
| 57 | */ | 48 | MO_MOD, KC_PGUP, KC_HOME, KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, KC_END, KC_PGDN, WORKMAN, |
| 58 | [_WORKMAN] = LAYOUT_ergodox_pretty_base_wrapper( | 49 | KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, |
| 59 | _________________WORKMAN_L1_________________, _________________WORKMAN_R1_________________, | 50 | KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, |
| 60 | _________________WORKMAN_L2_________________, _________________WORKMAN_R2_________________, | 51 | KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER |
| 61 | _________________WORKMAN_L3_________________, _________________WORKMAN_R3_________________ | 52 | ), |
| 62 | ), | 53 | |
| 63 | [_WINWORKMAN] = LAYOUT_ergodox_pretty_base_wrapper( | 54 | [_LOWER] = LAYOUT_ergodox_bocaj( |
| 64 | _________________WORKMAN_L1_________________, _________________WORKMAN_R1_________________, | 55 | KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 65 | ________________WWORKMAN_L2_________________, ________________WWORKMAN_R2_________________, | 56 | _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_BSLS, _______, |
| 66 | _________________WORKMAN_L3_________________, _________________WORKMAN_R3_________________ | 57 | _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_4, KC_5, KC_6, KC_ASTR, _______, |
| 67 | ), | 58 | _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_PLUS, _______, |
| 68 | /* QWERTY - http://www.keyboard-layout-editor.com/#/gists/b6c016a22a9d31381a276a603a42fe5f | 59 | _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_MINS, _______, |
| 69 | .---------------------------------------------. .---------------------------------------------. | 60 | KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, |
| 70 | | ESC | 1 | 2 | 3 | 4 | 5 | -> | ! - | 6 | 7 | 8 | 9 | 0 | = | | 61 | KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, |
| 71 | !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! | 62 | KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER |
| 72 | | DEL | Q | W | E | R | T | ( | ! ) | Y | U | I | O | P | \ | | 63 | ), |
| 73 | !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! | 64 | |
| 74 | | NUMS | A | S | D | F | G |-------! !-------! H | J | K | L | ; | ' | | 65 | [_RAISE] = LAYOUT_ergodox_bocaj( |
| 75 | !-------+-----+-----+-----x-----x-----! HYP ! ! MEH !-----x-----x-----+-----+-----+-------! | 66 | KC_TILD, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, _______, |
| 76 | | SHIFT | Z | X | C | V | B | [ | ! ] | N | M | , | . | / | SHIFT | | 67 | KC_F11, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_F12, |
| 77 | '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' | 68 | _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, |
| 78 | | GAME | NUM | LWR | UP | LFT | .---------------. .---------------. ! RGT | DWN | | | ADJ | | 69 | _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, _______, _______, _______, ___________________BLANK___________________, _______, |
| 79 | '------------------------------' | APP | HOME | ! PGUP | ESC | '------------------------------' | 70 | ___________________BLANK___________________, ___________________BLANK___________________, |
| 80 | .-------+-------+-------! !-------+-------+-------. | 71 | KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, |
| 81 | ! ! | END | ! PGDN | ! ENTER ! | 72 | KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, |
| 82 | ! SPACE ! BSPCE !-------! !-------! TAB ! / ! | 73 | KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER |
| 83 | | | | COPY | ! PASTE | | LOWER | | 74 | ), |
| 84 | '-----------------------' '-----------------------' | 75 | |
| 85 | */ | 76 | [_ADJUST] = LAYOUT_ergodox_pretty( |
| 86 | [_QWERTY] = LAYOUT_ergodox_pretty_base_wrapper( | 77 | KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST, |
| 87 | _________________QWERTY_L1__________________, _________________QWERTY_R1__________________, | 78 | VRSN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, |
| 88 | _________________QWERTY_L2__________________, _________________QWERTY_R2__________________, | 79 | _______, KC__MUTE, KC__VOLDOWN, KC__VOLUP, _______, KC_MNXT, _______, _______, _______, _______, _______, _______, |
| 89 | _________________QWERTY_L3__________________, _________________QWERTY_R3__________________ | 80 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 90 | ), | 81 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 91 | [_LOWER] = LAYOUT_ergodox_pretty_wrapper( | 82 | KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, |
| 92 | KC_F11 ,__________________FUNCTION_LEFT_____________, _______, _______, __________________FUNCTION_RIGHT____________, KC_F12, | 83 | KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, |
| 93 | _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_PAST, _______, | 84 | KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER |
| 94 | LM_GRAVE, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______, KC_4, KC_5, KC_6, KC_PPLS, _______, | 85 | ), |
| 95 | OS_LSFT,____________________BLANK___________________, _______, _______, _______, KC_1, KC_2, KC_3, KC_PMNS, _______, | 86 | |
| 96 | ____________________BLANK___________________, KC_0, KC_PDOT, KC_COMM,KC_PEQL, _______, | 87 | // Wrapping Mouse-Wheel Keys with `X_T()` style functions seems |
| 97 | _______, _______, _______, _______, | 88 | // to break the mouse button. So we can't use the wrapper here. |
| 98 | _______, _______, | 89 | [_MOD] = LAYOUT_ergodox_pretty( |
| 99 | _______, _______, _______, _______, _______, _______ | 90 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 100 | ), | 91 | _______, _______, _______, KC_WH_D, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, |
| 101 | /* Adjust - http://www.keyboard-layout-editor.com/#/gists/dedeae17b35a5d5f745a42aaea78f007 | 92 | _______, _______, KC_WH_L, KC_WH_U, KC_WH_R, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, |
| 102 | .---------------------------------------------. .---------------------------------------------. | 93 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 103 | | MAKE | | | | | | RESET | ! EPRM | | | | | | | | 94 | _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, |
| 104 | !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! | 95 | _______,_______, /* <- LHS/RHS -> */ _______,_______, |
| 105 | | | | | | | | | ! | | | | | | | | 96 | _______, /* <- LHS/RHS -> */ _______, |
| 106 | !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! | 97 | KC_BTN1,KC_BTN2,_______, /* <- LHS/RHS -> */ _______,KC_BTN3,KC_BTN4 |
| 107 | | | 🔇 | 🔉 | 🔊 | LCK | |-------! !-------! | | | | | QWRTY | | 98 | ) |
| 108 | !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! | 99 | |
| 109 | | | | | | | | | ! | | | | | WIN | WRKMN | | ||
| 110 | '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' | ||
| 111 | | | | | | | .---------------. .---------------. ! | | | | | | ||
| 112 | '------------------------------' | | | ! | | '------------------------------' | ||
| 113 | .-------+-------+-------! !-------+-------+-------. | ||
| 114 | ! ! | | ! | ! ! | ||
| 115 | ! ! !-------! !-------! ! ! | ||
| 116 | | | | | ! | | | | ||
| 117 | '-----------------------' '-----------------------' | ||
| 118 | */ | ||
| 119 | [_ADJUST] = LAYOUT_ergodox_pretty_wrapper( | ||
| 120 | KC_MAKE, ____________________BLANK___________________, KC_RST, KC_EPRM, ____________________BLANK___________________, XXXXXXX, | ||
| 121 | _______, ____________________BLANK___________________, _______, _______, ____________________BLANK___________________, XXXXXXX, | ||
| 122 | _______,KC__MUTE,KC__VOLDOWN,KC__VOLUP,MC_LOCK,_______, ____________________BLANK___________________, KC_MQWR, | ||
| 123 | _______, ____________________BLANK___________________, _______, _______, _______, _______, _______, _______, KC_WWRK, KC_MWRK, | ||
| 124 | ____________________BLANK___________________, ____________________BLANK___________________, | ||
| 125 | _______, _______, _______, _______, | ||
| 126 | _______, _______, | ||
| 127 | _______, _______, _______, _______, _______, _______ | ||
| 128 | ), | ||
| 129 | [_DIABLO] = LAYOUT_ergodox_pretty_wrapper( | ||
| 130 | KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, | ||
| 131 | KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_ENTER, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
| 132 | KC_Q, KC_1, KC_2, KC_3, KC_4, KC_P, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
| 133 | KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_LOCK, KC_NO, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, | ||
| 134 | _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, | ||
| 135 | KC_L, KC_J, KC_NO, KC_NO, | ||
| 136 | KC_F, KC_NO, | ||
| 137 | SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DCLR, KC_PGDN, KC_DEL, KC_ENT | ||
| 138 | ) | ||
| 139 | }; | 100 | }; |
| 101 | // clang-format on | ||
| 140 | 102 | ||
| 141 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | 103 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { |
| 142 | return true; | 104 | return true; |
| 143 | } | 105 | } |
| 144 | 106 | ||
| 145 | void matrix_init_keymap(void) {}; | 107 | void matrix_init_keymap(void) {}; |
| 146 | 108 | ||
| 109 | // Runs whenever there is a layer state change. | ||
| 110 | layer_state_t layer_state_set_keymap(layer_state_t state) { | ||
| 111 | ergodox_board_led_off(); | ||
| 112 | ergodox_right_led_1_off(); | ||
| 113 | ergodox_right_led_2_off(); | ||
| 114 | ergodox_right_led_3_off(); | ||
| 115 | |||
| 116 | uint8_t layer = get_highest_layer(state); | ||
| 117 | switch (layer) { | ||
| 118 | case _LOWER: | ||
| 119 | ergodox_right_led_3_on(); | ||
| 120 | break; | ||
| 121 | case _MOD: | ||
| 122 | ergodox_right_led_2_on(); | ||
| 123 | break; | ||
| 124 | case _RAISE: | ||
| 125 | ergodox_right_led_1_on(); | ||
| 126 | break; | ||
| 127 | case _ADJUST: | ||
| 128 | ergodox_right_led_1_on(); | ||
| 129 | ergodox_right_led_2_on(); | ||
| 130 | break; | ||
| 131 | default: | ||
| 132 | break; | ||
| 133 | } | ||
| 134 | |||
| 135 | ergodox_right_led_1_set(25); | ||
| 136 | ergodox_right_led_2_set(25); | ||
| 137 | ergodox_right_led_3_set(25); | ||
| 138 | |||
| 139 | return state; | ||
| 140 | }; | ||
| 141 | |||
| 147 | void matrix_scan_keymap(void) { | 142 | void matrix_scan_keymap(void) { |
| 148 | uint8_t modifiers = get_mods(); | 143 | uint8_t modifiers = get_mods(); |
| 149 | uint8_t led_usb_state = host_keyboard_leds(); | 144 | uint8_t led_usb_state = host_keyboard_leds(); |
| 150 | uint8_t one_shot = get_oneshot_mods(); | 145 | uint8_t one_shot = get_oneshot_mods(); |
| 151 | uint8_t layer = biton32(layer_state); | 146 | uint8_t layer_is_workman = layer_state_is(_WORKMAN); |
| 152 | 147 | ||
| 153 | ergodox_board_led_off(); | 148 | if ((modifiers) && (layer_is_workman)) { |
| 154 | ergodox_right_led_1_off(); | 149 | if (modifiers & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) { |
| 155 | ergodox_right_led_2_off(); | 150 | ergodox_right_led_1_on(); |
| 156 | ergodox_right_led_3_off(); | 151 | ergodox_right_led_1_set( 25 ); |
| 157 | 152 | } else { | |
| 158 | switch (layer) { | 153 | ergodox_right_led_1_off(); |
| 159 | case _WORKMAN: | 154 | } |
| 160 | case _QWERTY: | ||
| 161 | case _WINWORKMAN: | ||
| 162 | if (modifiers & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) { | ||
| 163 | ergodox_right_led_1_on(); | ||
| 164 | ergodox_right_led_1_set( 25 ); | ||
| 165 | } | ||
| 166 | if (modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK || modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK) { | ||
| 167 | if ((modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) && (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK)) { | 155 | if ((modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) && (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK)) { |
| 168 | ergodox_right_led_2_on(); | 156 | ergodox_right_led_2_on(); |
| 169 | ergodox_right_led_2_set( 50 ); | 157 | ergodox_right_led_2_set( 50 ); |
| 158 | } else if ((modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) || (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK)) { | ||
| 159 | ergodox_right_led_2_on(); | ||
| 160 | ergodox_right_led_2_set( 10 ); | ||
| 161 | } else { | ||
| 162 | ergodox_right_led_2_off(); | ||
| 163 | } | ||
| 164 | if (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) { | ||
| 165 | ergodox_right_led_3_on(); | ||
| 166 | ergodox_right_led_3_set( 10 ); | ||
| 170 | } else { | 167 | } else { |
| 171 | ergodox_right_led_2_on(); | 168 | ergodox_right_led_3_off(); |
| 172 | ergodox_right_led_2_set( 10 ); | ||
| 173 | } | 169 | } |
| 174 | } | 170 | } else if (!(modifiers) && (layer_is_workman)) { |
| 175 | if (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) { | 171 | ergodox_right_led_1_off(); |
| 176 | ergodox_right_led_3_on(); | 172 | ergodox_right_led_2_off(); |
| 177 | ergodox_right_led_3_set( 10 ); | 173 | ergodox_right_led_3_off(); |
| 178 | } | 174 | } |
| 179 | break; | ||
| 180 | case _LOWER: | ||
| 181 | ergodox_right_led_3_on(); | ||
| 182 | ergodox_right_led_3_set(10); // Default brightness is deadly in a dark room | ||
| 183 | break; | ||
| 184 | case _ADJUST: | ||
| 185 | ergodox_right_led_2_on(); | ||
| 186 | ergodox_right_led_2_set(10); | ||
| 187 | break; | ||
| 188 | case _DIABLO: | ||
| 189 | ergodox_right_led_1_on(); | ||
| 190 | ergodox_right_led_1_set(10); | ||
| 191 | break; | ||
| 192 | default: | ||
| 193 | // none | ||
| 194 | break; | ||
| 195 | } | ||
| 196 | }; | 175 | }; |
diff --git a/layouts/community/ergodox/bocaj/readme.md b/layouts/community/ergodox/bocaj/readme.md index 901822722..f8bce4e57 100644 --- a/layouts/community/ergodox/bocaj/readme.md +++ b/layouts/community/ergodox/bocaj/readme.md | |||
| @@ -1,37 +1,28 @@ | |||
| 1 | # Bocaj Layout | 1 | # Overview |
| 2 | 2 | ||
| 3 | While I've put my own spin on most things, much of the credit for these ideas belongs to Drashna and/or the people he derived things from. Please see his [layout](../drashna/) and [userspace](../../../../users/drashna/) for lots of ideas and inspiration. | 3 | This is my personal Ergodox EZ configuration, and my daily driver. |
| 4 | 4 | ||
| 5 | ## Layers Overview | 5 | Most of the code resides in my userspace and is heavily based upon [Drashna's work](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)... although considerably slimmed down. |
| 6 | 6 | ||
| 7 | * Default | 7 | ## How to build |
| 8 | * Workman | ||
| 9 | * Qwerty | ||
| 10 | * Windows Workman (swaps GUI and CTRL buttons) | ||
| 11 | * Lower | ||
| 12 | * F1-12 Top Row | ||
| 13 | * Grave / Layer Switch macro at Caps Lock position | ||
| 14 | * Navigation at QWERTY 'ESDF' position | ||
| 15 | * Numpad under right hand | ||
| 16 | * Adjust | ||
| 17 | * Volume Control | ||
| 18 | * Mac Lock Macro | ||
| 19 | * Make / Reset/ EEPROM keys | ||
| 20 | * Default Layer changing keys | ||
| 21 | * Diablo Layer | ||
| 22 | * Moved shortcuts within left hands reach | ||
| 23 | * Macros to spam 1-4 every ~1 second | ||
| 24 | * Shift in thumb cluster to prevent pinky fatique | ||
| 25 | 8 | ||
| 26 | ## LEDs Overview | 9 | Put simply: |
| 10 | `make ergodox_ez:bocaj` | ||
| 27 | 11 | ||
| 28 | * Used for _LOWER, _ADJUST, and _DIABLO layer indication | 12 | On that note, I use a separate workspace when making changes to my layouts or userspace. In that repo, there is a tool that does this for me. See [JacobJerrell/qmk_layouts/tools/](https://github.com/JacobJerrell/qmk_layouts/tree/master/tools) |
| 29 | * Used for Ctrl/GUI, Shift, and Alt indication when on a default layer | ||
| 30 | 13 | ||
| 31 | ## Wrappers Overview | 14 | ## Layers |
| 32 | 15 | ||
| 33 | While it isn't a novel idea, I feel the need to mention it because it really appeals to me as a person that doesn't like repetitive code. | 16 | * WORKMAN: No one uses this board but me and I've never had a reason to switch to QWERTY |
| 17 | * LOWER: | ||
| 18 | * Left: Grave and navigation arrows | ||
| 19 | * Right: Numpad | ||
| 20 | * RAISE: | ||
| 21 | * Symbols across the top, F-Keys on the second row | ||
| 22 | * ADJUST | ||
| 23 | * Audio control, make/reset/version macros | ||
| 24 | * MOD: mouse navigation | ||
| 34 | 25 | ||
| 35 | We've all come to know and love the pretty wrapper for Ergodox because it makes for such a beautiful, self-documenting keymap. In this keymap, we are building ontop of the pretty wrapper to wrap our default layers with our keys that aren't unique to the layer. | 26 | ## Ergodox Specifics |
| 36 | 27 | ||
| 37 | Now you can wrap your keymap with `LAYOUT_ergodox_pretty_base_wrapper()` and only feed it the alpha keys, having the top, side, bottom, and thumb clusters automatically filled in. If you make a key to any of the top, side, bottom, or thumb cluster keys, it will propegate to all layers that have this wrapper, or have KC_TRNS keycodes in the same location | 28 | I don't have the underglow or backlit versions so the 3 LEDs on the right board are used for layer indication if not on the base layer. If you're on the base layer, they're used for mod-key indicators. |
diff --git a/layouts/community/ergodox/bocaj/rules.mk b/layouts/community/ergodox/bocaj/rules.mk index aa67ad9e2..88eaf39f8 100644 --- a/layouts/community/ergodox/bocaj/rules.mk +++ b/layouts/community/ergodox/bocaj/rules.mk | |||
| @@ -1,11 +1,14 @@ | |||
| 1 | AUTO_SHIFT_ENABLE = no | 1 | BOOTMAGIC_ENABLE = yes |
| 2 | COMMAND_ENABLE = no | 2 | TAP_DANCE_ENABLE = no |
| 3 | SWAP_HANDS_ENABLE = no | 3 | COMMAND_ENABLE = no # Commands for debug and configuration |
| 4 | TAP_DANCE_ENABLE = yes | 4 | CONSOLE_ENABLE = yes |
| 5 | EXTRAKEY_ENABLE = no | 5 | SPACE_CADET_ENABLE = no |
| 6 | KEY_LOCK_ENABLE = yes | 6 | KEY_LOCK_ENABLE = yes |
| 7 | LEADER_ENABLE = yes | 7 | MOUSEKEY_ENABLE = yes |
| 8 | EXTRAKEY_ENABLE = yes | ||
| 9 | LEADER_ENABLE = yes | ||
| 8 | 10 | ||
| 9 | UNICODE_ENABLE = yes | 11 | UNICODE_ENABLE = no |
| 10 | UNICODEMAP_ENABLE = no | 12 | UNICODEMAP_ENABLE = no |
| 11 | UCIS_ENABLE = no | 13 | RGB_MATRIX_ENABLE = no |
| 14 | RGBLIGHT_ENABLE = no | ||
diff --git a/layouts/community/ortho_4x12/bocaj/config.h b/layouts/community/ortho_4x12/bocaj/config.h new file mode 100644 index 000000000..2f5b73198 --- /dev/null +++ b/layouts/community/ortho_4x12/bocaj/config.h | |||
| @@ -0,0 +1,109 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | #define LEADER_TIMEOUT 250 | ||
| 4 | #define LEADER_PER_KEY_TIMING | ||
| 5 | |||
| 6 | #if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM) | ||
| 7 | # if defined(KEYBOARD_planck_light) | ||
| 8 | # define RGB_DI_PIN A0 | ||
| 9 | # define RGBLED_NUM 13 // Number of LEDs | ||
| 10 | # endif | ||
| 11 | # define RGBLIGHT_HUE_STEP 12 | ||
| 12 | # define RGBLIGHT_SAT_STEP 12 | ||
| 13 | # define RGBLIGHT_VAL_STEP 12 | ||
| 14 | # define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 | ||
| 15 | # define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 | ||
| 16 | # ifdef RGB_MATRIX_ENABLE | ||
| 17 | # define RGBLIGHT_DISABLE_KEYCODES | ||
| 18 | # endif | ||
| 19 | #endif // RGBLIGHT_ENABLE | ||
| 20 | |||
| 21 | #ifdef RGB_MATRIX_ENABLE | ||
| 22 | # define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) | ||
| 23 | // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) | ||
| 24 | # define RGB_MATRIX_FRAMEBUFFER_EFFECTS | ||
| 25 | // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects | ||
| 26 | // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 | ||
| 27 | # define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended | ||
| 28 | # undef RGB_MATRIX_LED_PROCESS_LIMIT | ||
| 29 | # undef RGB_MATRIX_LED_FLUSH_LIMIT | ||
| 30 | #endif | ||
| 31 | |||
| 32 | #if defined(KEYBOARD_planck_ez) | ||
| 33 | # undef PRODUCT | ||
| 34 | # define PRODUCT Bocaj Hacked Planck EZ | ||
| 35 | #endif | ||
| 36 | |||
| 37 | #define EEPROM_I2C_RM24C512C | ||
| 38 | |||
| 39 | #define ENCODER_DIRECTION_FLIP | ||
| 40 | /* | ||
| 41 | * MIDI options | ||
| 42 | */ | ||
| 43 | |||
| 44 | /* Prevent use of disabled MIDI features in the keymap */ | ||
| 45 | //#define MIDI_ENABLE_STRICT 1 | ||
| 46 | |||
| 47 | /* enable basic MIDI features: | ||
| 48 | - MIDI notes can be sent when in Music mode is on | ||
| 49 | */ | ||
| 50 | |||
| 51 | // #define MIDI_BASIC | ||
| 52 | |||
| 53 | /* enable advanced MIDI features: | ||
| 54 | - MIDI notes can be added to the keymap | ||
| 55 | - Octave shift and transpose | ||
| 56 | - Virtual sustain, portamento, and modulation wheel | ||
| 57 | - etc. | ||
| 58 | */ | ||
| 59 | //#define MIDI_ADVANCED | ||
| 60 | |||
| 61 | /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||
| 62 | //#define MIDI_TONE_KEYCODE_OCTAVES 2 | ||
| 63 | |||
| 64 | #define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/ | ||
| 65 | #define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */ | ||
| 66 | #define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ | ||
| 67 | |||
| 68 | /* default 3V ERM vibration motor voltage and library*/ | ||
| 69 | #if FB_ERM_LRA == 0 | ||
| 70 | # define RATED_VOLTAGE 3 | ||
| 71 | # define V_RMS 2.3 | ||
| 72 | # define V_PEAK 3.30 | ||
| 73 | /* Library Selection */ | ||
| 74 | # define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */ | ||
| 75 | |||
| 76 | /* default 2V LRA voltage and library */ | ||
| 77 | #elif FB_ERM_LRA == 1 | ||
| 78 | # define RATED_VOLTAGE 2 | ||
| 79 | # define V_RMS 2.0 | ||
| 80 | # define V_PEAK 2.85 | ||
| 81 | # define F_LRA 200 | ||
| 82 | /* Library Selection */ | ||
| 83 | # define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */ | ||
| 84 | |||
| 85 | #endif | ||
| 86 | |||
| 87 | /* Control 1 register settings */ | ||
| 88 | #define DRIVE_TIME 25 | ||
| 89 | #define AC_COUPLE 0 | ||
| 90 | #define STARTUP_BOOST 1 | ||
| 91 | |||
| 92 | /* Control 2 Settings */ | ||
| 93 | #define BIDIR_INPUT 1 | ||
| 94 | #define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */ | ||
| 95 | #define SAMPLE_TIME 3 | ||
| 96 | #define BLANKING_TIME 1 | ||
| 97 | #define IDISS_TIME 1 | ||
| 98 | |||
| 99 | /* Control 3 settings */ | ||
| 100 | #define NG_THRESH 2 | ||
| 101 | #define ERM_OPEN_LOOP 1 | ||
| 102 | #define SUPPLY_COMP_DIS 0 | ||
| 103 | #define DATA_FORMAT_RTO 0 | ||
| 104 | #define LRA_DRIVE_MODE 0 | ||
| 105 | #define N_PWM_ANALOG 0 | ||
| 106 | #define LRA_OPEN_LOOP 0 | ||
| 107 | /* Control 4 settings */ | ||
| 108 | #define ZC_DET_TIME 0 | ||
| 109 | #define AUTO_CAL_TIME 3 | ||
diff --git a/layouts/community/ortho_4x12/bocaj/keymap.c b/layouts/community/ortho_4x12/bocaj/keymap.c new file mode 100644 index 000000000..0ac22b4cc --- /dev/null +++ b/layouts/community/ortho_4x12/bocaj/keymap.c | |||
| @@ -0,0 +1,286 @@ | |||
| 1 | /* | ||
| 2 | Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell | ||
| 3 | |||
| 4 | This program is free software: you can redistribute it and/or modify | ||
| 5 | it under the terms of the GNU General Public License as published by | ||
| 6 | the Free Software Foundation, either version 2 of the License, or | ||
| 7 | (at your option) any later version. | ||
| 8 | |||
| 9 | This program is distributed in the hope that it will be useful, | ||
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | GNU General Public License for more details. | ||
| 13 | |||
| 14 | You should have received a copy of the GNU General Public License | ||
| 15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #include "bocaj.h" | ||
| 19 | |||
| 20 | #ifdef BACKLIGHT_ENABLE | ||
| 21 | enum planck_keycodes { | ||
| 22 | BACKLIT = NEW_SAFE_RANGE, | ||
| 23 | TH_LVL, | ||
| 24 | }; | ||
| 25 | |||
| 26 | #else | ||
| 27 | # define BACKLIT OSM(MOD_LSFT) | ||
| 28 | enum planck_keycodes { | ||
| 29 | TH_LVL = NEW_SAFE_RANGE, | ||
| 30 | }; | ||
| 31 | #endif | ||
| 32 | |||
| 33 | /* | ||
| 34 | * Tap/Hold Wrapper | ||
| 35 | * ,-----------------------------------------------------------------------------------. | ||
| 36 | * | | | | | | | | | | | | | | ||
| 37 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 38 | * | | |Shift | Cmd | Alt | | | Alt | Cmd |Shift | | | | ||
| 39 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 40 | * | | Ctrl | | | | | | | | | Ctrl | | | ||
| 41 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 42 | * | | | | |Lower | |Raise | | | | | | ||
| 43 | * `-----------------------------------------------------------------------------------' | ||
| 44 | */ | ||
| 45 | #define LAYOUT_ortho_4x12_bocaj(...) WRAPPER_planck_bocaj(__VA_ARGS__) | ||
| 46 | |||
| 47 | /* | ||
| 48 | * Base Alphanumeric Wrapper + Tap/Hold Wrapper | ||
| 49 | * ,-----------------------------------------------------------------------------------. | ||
| 50 | * | Esc | | | | | | | | | | | - | | ||
| 51 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 52 | * | Tab | | | | | HYPR | MEH | | | | | ' | | ||
| 53 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 54 | * | Shift| | | | | | | | | | | TTMOD| | ||
| 55 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 56 | * | MOMOD| Lead | Up | Left |BkSpc | Space |Enter |Right | Down | XXX | XXX | | ||
| 57 | * `-----------------------------------------------------------------------------------' | ||
| 58 | */ | ||
| 59 | #define LAYOUT_ortho_4x12_bocaj_base(...) WRAPPER_planck_bocaj_base(__VA_ARGS__) | ||
| 60 | #define LAYOUT_ortho_4x12_bocaj_base_WIN(...) WRAPPER_planck_bocaj_base_WIN(__VA_ARGS__) | ||
| 61 | |||
| 62 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 63 | |||
| 64 | [_WORKMAN] = LAYOUT_ortho_4x12_bocaj_base( | ||
| 65 | _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, | ||
| 66 | _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, | ||
| 67 | _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ | ||
| 68 | ), | ||
| 69 | [_WWORKMAN] = LAYOUT_ortho_4x12_bocaj_base_WIN( | ||
| 70 | _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, | ||
| 71 | _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, | ||
| 72 | _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ | ||
| 73 | ), | ||
| 74 | |||
| 75 | [_QWERTY] = LAYOUT_ortho_4x12_bocaj_base( | ||
| 76 | _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, | ||
| 77 | _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, | ||
| 78 | _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ | ||
| 79 | ), | ||
| 80 | [_WQWERTY] = LAYOUT_ortho_4x12_bocaj_base_WIN( | ||
| 81 | _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, | ||
| 82 | _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, | ||
| 83 | _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ | ||
| 84 | ), | ||
| 85 | |||
| 86 | [_LOWER] = LAYOUT_ortho_4x12_bocaj( | ||
| 87 | ___________________LOWER_L1_EXT____________________, ___________________LOWER_R1_EXT____________________, | ||
| 88 | ___________________LOWER_L2_EXT____________________, ___________________LOWER_R2_EXT____________________, | ||
| 89 | ___________________LOWER_L3_EXT____________________, ___________________LOWER_R3_EXT____________________, | ||
| 90 | _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, _______, _______ | ||
| 91 | ), | ||
| 92 | |||
| 93 | [_RAISE] = LAYOUT_ortho_4x12_bocaj( | ||
| 94 | KC_TILD, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_EQUAL, | ||
| 95 | KC_F11, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_F12, | ||
| 96 | _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, | ||
| 97 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 98 | ), | ||
| 99 | |||
| 100 | [_ADJUST] = WRAPPER_ortho_4x12( | ||
| 101 | KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, | ||
| 102 | VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, | ||
| 103 | TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, | ||
| 104 | HPT_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 105 | ) | ||
| 106 | |||
| 107 | }; | ||
| 108 | // clang-format on | ||
| 109 | |||
| 110 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||
| 111 | switch (keycode) { | ||
| 112 | #ifdef BACKLIGHT_ENABLE | ||
| 113 | case BACKLIT: | ||
| 114 | if (record->event.pressed) { | ||
| 115 | register_code(KC_RSFT); | ||
| 116 | # ifdef BACKLIGHT_ENABLE | ||
| 117 | backlight_step(); | ||
| 118 | # endif | ||
| 119 | } else { | ||
| 120 | unregister_code(KC_RSFT); | ||
| 121 | } | ||
| 122 | break; | ||
| 123 | #endif | ||
| 124 | #ifdef KEYBOARD_planck_ez | ||
| 125 | case TH_LVL: | ||
| 126 | if (record->event.pressed) { | ||
| 127 | keyboard_config.led_level++; | ||
| 128 | if (keyboard_config.led_level > 4) { | ||
| 129 | keyboard_config.led_level = 0; | ||
| 130 | } | ||
| 131 | planck_ez_right_led_level((uint8_t)keyboard_config.led_level * 255 / 4); | ||
| 132 | planck_ez_left_led_level((uint8_t)keyboard_config.led_level * 255 / 4); | ||
| 133 | eeconfig_update_kb(keyboard_config.raw); | ||
| 134 | layer_state_set_kb(layer_state); | ||
| 135 | } | ||
| 136 | break; | ||
| 137 | #endif | ||
| 138 | } | ||
| 139 | return true; | ||
| 140 | } | ||
| 141 | |||
| 142 | bool music_mask_user(uint16_t keycode) { | ||
| 143 | switch (keycode) { | ||
| 144 | default: | ||
| 145 | return true; | ||
| 146 | } | ||
| 147 | } | ||
| 148 | |||
| 149 | #ifdef RGB_MATRIX_ENABLE | ||
| 150 | |||
| 151 | // clang-format off | ||
| 152 | void suspend_power_down_keymap(void) { | ||
| 153 | rgb_matrix_set_suspend_state(true); | ||
| 154 | } | ||
| 155 | |||
| 156 | void suspend_wakeup_init_keymap(void) { | ||
| 157 | rgb_matrix_set_suspend_state(false); | ||
| 158 | } | ||
| 159 | // clang-format on | ||
| 160 | |||
| 161 | void rgb_matrix_indicators_user(void) { | ||
| 162 | uint8_t this_mod = get_mods(); | ||
| 163 | uint8_t this_led = host_keyboard_leds(); | ||
| 164 | uint8_t this_osm = get_oneshot_mods(); | ||
| 165 | bool is_ez; | ||
| 166 | # ifdef KEYBOARD_planck_ez | ||
| 167 | is_ez = true; | ||
| 168 | # endif | ||
| 169 | |||
| 170 | if (g_suspend_state || !rgb_matrix_config.enable) return; | ||
| 171 | |||
| 172 | # if defined(RGBLIGHT_ENABLE) | ||
| 173 | if (!userspace_config.rgb_layer_change) | ||
| 174 | # else | ||
| 175 | if (userspace_config.rgb_layer_change) | ||
| 176 | # endif | ||
| 177 | { | ||
| 178 | switch (get_highest_layer(layer_state)) { | ||
| 179 | case _MOD: | ||
| 180 | rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 181 | break; | ||
| 182 | case _RAISE: | ||
| 183 | rgb_matrix_layer_helper(HSV_BLUE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 184 | break; | ||
| 185 | case _LOWER: | ||
| 186 | rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 187 | break; | ||
| 188 | case _ADJUST: | ||
| 189 | rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 190 | break; | ||
| 191 | default: { | ||
| 192 | bool mods_enabled = false; | ||
| 193 | switch (get_highest_layer(default_layer_state)) { | ||
| 194 | case _QWERTY: | ||
| 195 | rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 196 | break; | ||
| 197 | case _WQWERTY: | ||
| 198 | rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 199 | break; | ||
| 200 | case _WORKMAN: | ||
| 201 | rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 202 | break; | ||
| 203 | case _WWORKMAN: | ||
| 204 | rgb_matrix_layer_helper(HSV_GREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); | ||
| 205 | break; | ||
| 206 | } | ||
| 207 | break; | ||
| 208 | } | ||
| 209 | } | ||
| 210 | } | ||
| 211 | |||
| 212 | switch (get_highest_layer(default_layer_state)) { | ||
| 213 | case _QWERTY: | ||
| 214 | rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF); | ||
| 215 | break; | ||
| 216 | case _WORKMAN: | ||
| 217 | rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21); | ||
| 218 | break; | ||
| 219 | } | ||
| 220 | |||
| 221 | if ((this_mod | this_osm) & MODS_SHIFT_MASK || this_led & (1 << USB_LED_CAPS_LOCK)) { | ||
| 222 | rgb_matrix_set_color_row(0, 0x00, 0xFF, 0x00); | ||
| 223 | } | ||
| 224 | if ((this_mod | this_osm) & MODS_CTRL_MASK && (this_mod | this_osm) & MODS_GUI_MASK) { | ||
| 225 | rgb_matrix_set_color_row(1, 0xFF, 0xD9, 0xFF); | ||
| 226 | } else if ((this_mod | this_osm) & MODS_CTRL_MASK) { | ||
| 227 | rgb_matrix_set_color_row(1, 0xFF, 0x00, 0x00); | ||
| 228 | } else if ((this_mod | this_osm) & MODS_GUI_MASK) { | ||
| 229 | rgb_matrix_set_color_row(1, 0xFF, 0xD9, 0x00); | ||
| 230 | } | ||
| 231 | if ((this_mod | this_osm) & MODS_ALT_MASK) { | ||
| 232 | rgb_matrix_set_color_row(2, 0x00, 0x00, 0xFF); | ||
| 233 | } | ||
| 234 | } | ||
| 235 | #endif // RGB_MATRIX_INIT | ||
| 236 | |||
| 237 | void matrix_init_keymap(void) {} | ||
| 238 | |||
| 239 | #ifdef ENCODER_ENABLE | ||
| 240 | void encoder_update(bool clockwise) { | ||
| 241 | switch (get_highest_layer(layer_state)) { | ||
| 242 | case _RAISE: | ||
| 243 | clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU); | ||
| 244 | break; | ||
| 245 | case _LOWER: | ||
| 246 | # ifdef RGB_MATRIX_ENABLE | ||
| 247 | clockwise ? rgb_matrix_step() : rgb_matrix_step_reverse(); | ||
| 248 | # else | ||
| 249 | clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP); | ||
| 250 | # endif | ||
| 251 | break; | ||
| 252 | case _ADJUST: | ||
| 253 | # ifdef AUDIO_CLICKY | ||
| 254 | clockwise ? clicky_freq_up() : clicky_freq_down(); | ||
| 255 | # endif | ||
| 256 | break; | ||
| 257 | default: | ||
| 258 | clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP); | ||
| 259 | } | ||
| 260 | # ifdef AUDIO_CLICKY | ||
| 261 | clicky_play(); | ||
| 262 | # endif | ||
| 263 | } | ||
| 264 | #endif // ENCODER_ENABLE | ||
| 265 | |||
| 266 | #ifdef KEYBOARD_planck_ez | ||
| 267 | layer_state_t layer_state_set_keymap(layer_state_t state) { | ||
| 268 | planck_ez_left_led_off(); | ||
| 269 | planck_ez_right_led_off(); | ||
| 270 | switch (get_highest_layer(state)) { | ||
| 271 | case _LOWER: | ||
| 272 | planck_ez_left_led_on(); | ||
| 273 | break; | ||
| 274 | case _RAISE: | ||
| 275 | planck_ez_right_led_on(); | ||
| 276 | break; | ||
| 277 | case _ADJUST: | ||
| 278 | planck_ez_right_led_on(); | ||
| 279 | planck_ez_left_led_on(); | ||
| 280 | break; | ||
| 281 | default: | ||
| 282 | break; | ||
| 283 | } | ||
| 284 | return state; | ||
| 285 | } | ||
| 286 | #endif | ||
diff --git a/layouts/community/ortho_4x12/bocaj/readme.md b/layouts/community/ortho_4x12/bocaj/readme.md new file mode 100644 index 000000000..a3716b8dc --- /dev/null +++ b/layouts/community/ortho_4x12/bocaj/readme.md | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | # Overview | ||
| 2 | |||
| 3 | This is my Planck EZ layout, heavily based upon [my ergodox layout](../../ergodox/bocaj/). | ||
| 4 | |||
| 5 | I got this keyboard for two reasons: | ||
| 6 | |||
| 7 | 1. QMK spoiled me and the Ergodox isn't incredibly portable (ok 3 reasons) | ||
| 8 | 2. This can sit ontop of my janky Macbook Pro keyboard (disabled with Karabiner if the planck is connected) when I want to work from the couch. | ||
| 9 | |||
| 10 | ## How to Build | ||
| 11 | |||
| 12 | Put simply: | ||
| 13 | `make planck/ez:bocaj` | ||
| 14 | |||
| 15 | On that note, I use a separate workspace when making changes to my layouts or userspace. In that repo, there is a tool that does this for me. See [JacobJerrell/qmk_layouts/tools/](https://github.com/JacobJerrell/qmk_layouts/tree/master/tools) until I get documentation finished (Write code first, define requirements second... right?). | ||
| 16 | |||
| 17 | ## Layers | ||
| 18 | |||
| 19 | * WORKMAN/QWERTY: Default is workman, can be switched via the ADJUST layer. Idk why you would though. | ||
| 20 | * LOWER: Nums across the top, switches enter key to tab and tab key to delete. Symbols in the middle, remenascent of the ergodox | ||
| 21 | * RAISE: Symbols across the top, F-Keys on the 2nd row. Switches backspace to delete | ||
| 22 | * ADJUST: Computer Audio controls, RGB controls, Sound controls, macros, etc. | ||
| 23 | * MOD: Mouse controls under the left hand. Numpad under the right hand \ No newline at end of file | ||
diff --git a/layouts/community/ortho_4x12/bocaj/rules.mk b/layouts/community/ortho_4x12/bocaj/rules.mk new file mode 100644 index 000000000..3383cfd35 --- /dev/null +++ b/layouts/community/ortho_4x12/bocaj/rules.mk | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) | ||
| 2 | MOUSEKEY_ENABLE = no # Mouse keys(+4700) | ||
| 3 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
| 4 | TAP_DANCE_ENABLE = no | ||
| 5 | SPACE_CADET_ENABLE = no | ||
| 6 | NKRO_ENABLE = yes | ||
| 7 | |||
| 8 | ifneq ($(strip $(KEYBOARD)), planck/rev6) | ||
| 9 | CONSOLE_ENABLE = no | ||
| 10 | COMMAND_ENABLE = no | ||
| 11 | ifeq ($(strip $(LAYOUT_HAS_RGB)), yes) | ||
| 12 | RGBLIGHT_ENABLE = yes | ||
| 13 | INDICATOR_LIGHTS = yes | ||
| 14 | RGBLIGHT_TWINKLE = yes | ||
| 15 | RGBLIGHT_STARTUP_ANIMATION = yes | ||
| 16 | endif | ||
| 17 | else | ||
| 18 | CONSOLE_ENABLE = yes | ||
| 19 | COMMAND_ENABLE = yes | ||
| 20 | RGBLIGHT_ENABLE = yes | ||
| 21 | RGBLIGHT_STARTUP_ANIMATION = yes | ||
| 22 | RGB_MATRIX_ENABLE = no | ||
| 23 | AUDIO_ENABLE = yes | ||
| 24 | EEPROM_DRIVER = i2c | ||
| 25 | endif | ||
| 26 | ifeq ($(strip $(KEYBOARD)), planck/light) | ||
| 27 | RGB_MATRIX_ENABLE = yes | ||
| 28 | RGBLIGHT_ENABLE = yes | ||
| 29 | RGBLIGHT_STARTUP_ANIMATION = yes | ||
| 30 | AUDIO_ENABLE = yes | ||
| 31 | # HAPTIC_ENABLE += SOLENOID | ||
| 32 | endif | ||
| 33 | ifeq ($(strip $(KEYBOARD)), planck/ez) | ||
| 34 | RGBLIGHT_ENABLE = no | ||
| 35 | # SERIAL_LINK_ENABLE = yes | ||
| 36 | ENCODER_ENABLE = yes | ||
| 37 | RGB_MATRIX_ENABLE = IS31FL3737 | ||
| 38 | INDICATOR_LIGHTS = yes | ||
| 39 | RGBLIGHT_TWINKLE = yes | ||
| 40 | RGBLIGHT_STARTUP_ANIMATION = yes | ||
| 41 | CONSOLE_ENABLE = yes | ||
| 42 | COMMAND_ENABLE = yes | ||
| 43 | AUDIO_ENABLE = yes | ||
| 44 | endif | ||
