diff options
| author | Mat Greten <mgreten@gmail.com> | 2018-09-19 17:15:13 -0600 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2018-09-19 16:15:13 -0700 |
| commit | 14f691d2a749c6f4fd9bf39d219da1369747cd8d (patch) | |
| tree | f12c25ee6fbbe96a267ee25f36c79a3f109d1374 /layouts/community/ergodox | |
| parent | c23233f41ab9221577fc83bbae0a230452a38231 (diff) | |
| download | qmk_firmware-14f691d2a749c6f4fd9bf39d219da1369747cd8d.tar.gz qmk_firmware-14f691d2a749c6f4fd9bf39d219da1369747cd8d.zip | |
Keymap: meagerfindings ergodox (#3920)
* initial commit
* updating after review
Diffstat (limited to 'layouts/community/ergodox')
| -rw-r--r-- | layouts/community/ergodox/meagerfindings/README.md | 109 | ||||
| -rw-r--r-- | layouts/community/ergodox/meagerfindings/config.h | 26 | ||||
| -rw-r--r-- | layouts/community/ergodox/meagerfindings/keymap.c | 558 | ||||
| -rw-r--r-- | layouts/community/ergodox/meagerfindings/rules.mk | 3 |
4 files changed, 696 insertions, 0 deletions
diff --git a/layouts/community/ergodox/meagerfindings/README.md b/layouts/community/ergodox/meagerfindings/README.md new file mode 100644 index 000000000..e7e4270db --- /dev/null +++ b/layouts/community/ergodox/meagerfindings/README.md | |||
| @@ -0,0 +1,109 @@ | |||
| 1 |  | ||
| 2 | |||
| 3 | # Meagerfinding's ErgoDox Layout | ||
| 4 | |||
| 5 | <!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 --> | ||
| 6 | |||
| 7 | - [Overview](#overview) | ||
| 8 | - [Credit where credit is due](#credit-where-credit-is-due) | ||
| 9 | - [Features](#features) | ||
| 10 | - [Tap/Hold Macro Keys](#taphold-macro-keys) | ||
| 11 | - [TapDance Keys](#tapdance-keys) | ||
| 12 | - [Base Layer](#base-layer) | ||
| 13 | - [Things to note:](#things-to-note) | ||
| 14 | - [Old Base Layer](#old-base-layer) | ||
| 15 | - [Symbols Layer](#symbols-layer) | ||
| 16 | - [Mouse & Media Keys Layer](#mouse-media-keys-layer) | ||
| 17 | - [Markdown Layer](#markdown-layer) | ||
| 18 | - [Arrow/Movements Layer](#arrowmovements-layer) | ||
| 19 | - [Numpad Layer](#numpad-layer) | ||
| 20 | |||
| 21 | <!-- /TOC --> | ||
| 22 | |||
| 23 | ## Overview | ||
| 24 | |||
| 25 | The overall goals of this layout are to: | ||
| 26 | 1. Use the Ergodox thumb clusters to eliminate pinky reach. | ||
| 27 | 2. Place as many useful keys under the home rows as possible. | ||
| 28 | |||
| 29 | I first decided to build an ErgoDox as I wanted to use my thumbs for more with the added ergonomic benefits of a split board and ortholinear layout. I knew my hands were hurting from the weird contortions of copying and pasting constantly on my Mac, but I had no idea how strained I really was until I started moving as many modifier keys to the thumb clusters. | ||
| 30 | |||
| 31 | ## Credit where credit is due | ||
| 32 | |||
| 33 | The initial layout used created on the [ErgoDox EZ Configurator](https://ergodox-ez.com/pages/graphical-configurator). I went through 26+ iterations within the configurator prior to beginning my journey with QMK itself. Much of the dual function/layer keys are influenced by and adapted from the EZ Configurator. | ||
| 34 | |||
| 35 | Many features in this layout are either directly inspired by or are adaptations of [Algernon's incredible ErgoDox layout](https://github.com/algernon/ergodox-layout). Specifically: TapDance and its usage, and the brilliant idea of using TapDance to pair down the four keys for parens, brackets, and curly braces into just 2 keys. | ||
| 36 | |||
| 37 | ## Features | ||
| 38 | |||
| 39 | ### Tap/Hold Macro Keys | ||
| 40 | * `Paste/Paste Special` key sends Paste on tap and Paste Special when held. | ||
| 41 | * `Screen/Video` key sends `||scrn` when tapped and `||video` when held | ||
| 42 | - [Typinator](http://www.ergonis.com/products/typinator/) expands `||scrn` into `(Screenshot: <CLIPBOARD CONTENTS>)`, and `||video` into `(Video: <CLIPBOARD CONTENTS>)`, the QMK macro then moves back to before the last paren, inserts a space and removes a space to create a hyperlink for use in Zendesk. | ||
| 43 | * When tapped, `Todoist` toggles quick add window for a new Todoist task (`CMD + Shift + A`) and switches to Todoist when held | ||
| 44 | * The RubyMine key opens RubyMine by triggering spotlight, typing out `Rubymine`, and submitting the enter key. | ||
| 45 | * `Zendesk` triggers spotlight and then calls Typinator expansion to open my Zendesk Agent dashboard in Chrome. | ||
| 46 | |||
| 47 | |||
| 48 | ### TapDance Keys | ||
| 49 | * `Copy/Cut` key copies on tap, cut's on two taps. | ||
| 50 | * One tap on `Snagit` key = sends `Ctrl + Shift + C` which is Snagit's selector and two taps on `Snagit` key = `Cmd + Shift + Opt + 4`, OS X cropping screenshot that is copied to the clipboard only. | ||
| 51 | * Tapping the `[{(`/`)}]` keys once yields `[` or `{` when the shift key is engaged, tapping them twice yields `(`. | ||
| 52 | |||
| 53 | ## Base Layer | ||
| 54 | |||
| 55 |  | ||
| 56 | |||
| 57 | The base layer retains the alphas from the QWERTY layout without any modifications. | ||
| 58 | |||
| 59 | ### Things to note: | ||
| 60 | |||
| 61 | - The shift key is a One Shot Modifier key, meaning shift is not submitted when the key is tapped, instead, it only submits when you either tap it again, or on the next key press. | ||
| 62 | - There is no CAPSLOCK key designated as it is pretty comfortable to simply hold down shift in this layout and continue typing. | ||
| 63 | - There is only one layer that you can fully switch to on this layout, the [Old Base layer](#old-base-layer). All other layers require holding a key to reach them. For the most part, the key that toggles a layer, will be on the opposite hand that will be typing with that layer. | ||
| 64 | - For example: the symbols layer is reached by holding down the enter key with your right thumb, and most of the symbols are located on the left hand board. | ||
| 65 | |||
| 66 | |||
| 67 | ## Old Base Layer | ||
| 68 | |||
| 69 |  | ||
| 70 | |||
| 71 | I am moving into a new position (software engineering) at work from a Support position. My hope is to use my F keys more often and write fewer emails. This is my old base layer, still easily accessible, as I'm not used to having F key's on my top row quite yet. | ||
| 72 | |||
| 73 | ## Symbols Layer | ||
| 74 | |||
| 75 |  | ||
| 76 | |||
| 77 | Holding down the `enter` key with your right thumb toggles the symbol layer. | ||
| 78 | |||
| 79 | I've placed my most used symbols under the homerow. Granted, right now I mainly right emails/support ticket responses, so this home row may need to change as I transition to software engineering. | ||
| 80 | |||
| 81 | ## Mouse & Media Keys Layer | ||
| 82 | |||
| 83 |  | ||
| 84 | |||
| 85 | Holding down the `:` key on with your right pinky toggles the mouse and media layer. Your left hand controls the mouse directions just in a similar fashion to the keys used in the [movement layer](#arrowmovements-layer). | ||
| 86 | |||
| 87 | The right hand has a media controls under the homerow for quick muting/pausing. | ||
| 88 | |||
| 89 | * `XKCD #1319` Key that ironically partially-automates accessing the link to [XKCD #1319](https://xkcd.com/1319/). | ||
| 90 | |||
| 91 | ## Markdown Layer | ||
| 92 | |||
| 93 |  | ||
| 94 | |||
| 95 | This layer places most common markdown symbols under the right hand. You can reach this layer by holding down the `F` key on your left hand. | ||
| 96 | |||
| 97 | ## Arrow/Movements Layer | ||
| 98 | |||
| 99 |  | ||
| 100 | |||
| 101 | Toggled by holding down the space key with the right thumb. This isn't vim like movement, nope, it's `WASD` but over one column. So I guess it's actually `ESDF` on the left hand and `IJKL` on the right hand to better line up with the columns offset/staggered columns on the Dox. | ||
| 102 | |||
| 103 | ## Numpad Layer | ||
| 104 | |||
| 105 |  | ||
| 106 | |||
| 107 | My right hand is pretty comfortable with tenkey number input so this is easily accessible by holding down backspace with the left thumb. | ||
| 108 | |||
| 109 | Also, on the left hand, there is a tap to copy and hold to cut macro under the `D` key, and a tap to paste and a hold to paste special macro on the `F` key. I guess I'm to too lazy to move my fingers when copying/pasting... | ||
diff --git a/layouts/community/ergodox/meagerfindings/config.h b/layouts/community/ergodox/meagerfindings/config.h new file mode 100644 index 000000000..3d4f11b43 --- /dev/null +++ b/layouts/community/ergodox/meagerfindings/config.h | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | #undef VENDOR_ID | ||
| 2 | #define VENDOR_ID 0xFEED | ||
| 3 | #undef PRODUCT_ID | ||
| 4 | #define PRODUCT_ID 0x1307 | ||
| 5 | #undef DEVICE_VER | ||
| 6 | #define DEVICE_VER 0x0001 | ||
| 7 | #undef MANUFACTURER | ||
| 8 | #define MANUFACTURER meagerfindings | ||
| 9 | #undef PRODUCT | ||
| 10 | #define PRODUCT ErgoDox | ||
| 11 | #undef DESCRIPTION | ||
| 12 | #define DESCRIPTION meagerfindings firmware for Ergodox | ||
| 13 | |||
| 14 | #define USB_MAX_POWER_CONSUMPTION 500 | ||
| 15 | |||
| 16 | #undef MOUSEKEY_INTERVAL | ||
| 17 | #define MOUSEKEY_INTERVAL 20 | ||
| 18 | #undef MOUSEKEY_DELAY | ||
| 19 | #define MOUSEKEY_DELAY 0 | ||
| 20 | #undef MOUSEKEY_TIME_TO_MAX | ||
| 21 | #define MOUSEKEY_TIME_TO_MAX 18 | ||
| 22 | #undef MOUSEKEY_MAX_SPEED | ||
| 23 | #define MOUSEKEY_MAX_SPEED 4 | ||
| 24 | |||
| 25 | #undef TAPPING_TERM | ||
| 26 | #define TAPPING_TERM 200 | ||
diff --git a/layouts/community/ergodox/meagerfindings/keymap.c b/layouts/community/ergodox/meagerfindings/keymap.c new file mode 100644 index 000000000..62504f966 --- /dev/null +++ b/layouts/community/ergodox/meagerfindings/keymap.c | |||
| @@ -0,0 +1,558 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | #include "version.h" | ||
| 3 | |||
| 4 | enum { | ||
| 5 | BASE = 0, | ||
| 6 | OLD_BASE, | ||
| 7 | SYMBL, | ||
| 8 | MEDIA, | ||
| 9 | MKDWN, | ||
| 10 | ARROWS, | ||
| 11 | NUM, | ||
| 12 | }; | ||
| 13 | |||
| 14 | enum custom_keycodes { | ||
| 15 | PLACEHOLDER = SAFE_RANGE, // can always be here | ||
| 16 | EPRM, | ||
| 17 | VRSN, | ||
| 18 | MD_LINK, | ||
| 19 | XKCD, | ||
| 20 | DBLE_ZER0, | ||
| 21 | L_ID_0, | ||
| 22 | L_ID_1, | ||
| 23 | L_ID_2, | ||
| 24 | PAST_PS, | ||
| 25 | TODO, | ||
| 26 | RUBYMINE, | ||
| 27 | ZENDESK, | ||
| 28 | DBLE_ASTR, | ||
| 29 | TRPLE_GRAVE, | ||
| 30 | H_ONE, | ||
| 31 | H_TWO, | ||
| 32 | H_THREE, | ||
| 33 | H_FOUR, | ||
| 34 | H_FIVE, | ||
| 35 | M_LINK, | ||
| 36 | M_GREATER, | ||
| 37 | TD_COPY_CUT = 6, | ||
| 38 | TD_SNAGIT = 8, | ||
| 39 | TD_B_L_SEL = 10, | ||
| 40 | CT_LBP = 11, | ||
| 41 | CT_RBP = 12 | ||
| 42 | }; | ||
| 43 | |||
| 44 | //Redefine Key Names for Readaibilty | ||
| 45 | #define XXXXXXX KC_NO | ||
| 46 | #define SCRN_CLIPB LCTL(LGUI(LSFT(KC_4))) | ||
| 47 | #define CHRM_L LALT(LGUI(KC_LEFT)) //Move left one tab in Chrome | ||
| 48 | #define CHRM_R LALT(LGUI(KC_RIGHT)) //Move right one tab in Chrome | ||
| 49 | #define S_CMD_S LGUI_T(KC_S) //`S` when typing `CMD` when held | ||
| 50 | #define D_CMD_OPT LGUI_T(LALT_T(KC_D)) //`D` when typing `CMD + Opt` when held | ||
| 51 | |||
| 52 | static uint16_t key_timer; //key timer for macros | ||
| 53 | |||
| 54 | //Tap Dance Definitions | ||
| 55 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 56 | //Tap once for Copy, twice for Paste, three times for Cut. | ||
| 57 | [TD_COPY_CUT] = ACTION_TAP_DANCE_DOUBLE(LGUI(KC_C),LGUI(KC_X)), | ||
| 58 | //Tap once for Snagit, twice for Cmd + Shift + Opt + 4 (OS X cropping screenshot that is copied to the clipboard only.) | ||
| 59 | [TD_SNAGIT] = ACTION_TAP_DANCE_DOUBLE(LCTL(LSFT(KC_C)), LCTL(LGUI(LSFT(KC_4)))), | ||
| 60 | [CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN), | ||
| 61 | [CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN) | ||
| 62 | }; | ||
| 63 | |||
| 64 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 65 | |||
| 66 | /* Keymap 0: Basic layer | ||
| 67 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 68 | * | = | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - | | ||
| 69 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 70 | * | Tab | Q | W | E | R | T | "> " | | []() | Y | U | I | O | P | \ | | ||
| 71 | * |--------+------+------+------+------+------| | | SCRN |------+------+------+------+------+--------| | ||
| 72 | * | Hyper | A |S /CMD|D/OPT | F /MD| G |------| |------| H | J |K/OPT |L /CMD| ; /L2| '/Hyper| | ||
| 73 | * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------| | ||
| 74 | * |Shft Tab|Z/Ctrl|X/Alt | C | V | B | [ { | | ] } | N | M | , | ./Alt|//Ctrl|CMD+SHFT| | ||
| 75 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 76 | * | ` |Zendsk|RBMINE|CMD+S | ToDo | | _ | | 00 | 00 |OLD BASE| | ||
| 77 | * `----------------------------------' `----------------------------------' | ||
| 78 | * ,-------------. ,--------------. | ||
| 79 | * | Esc | Home | |Layer?| Esc | | ||
| 80 | * ,------|------|------| |------+-------+------. | ||
| 81 | * | | | End | | Undo | | | | ||
| 82 | * |Shift |Backsp|------| |------| Return|Space/| | ||
| 83 | * | OSM | /NUM | DEL | | Ctrl | /SYML |Arrows| | ||
| 84 | * `--------------------' `---------------------' | ||
| 85 | * | ||
| 86 | *Copy/Cut key copies on tap, cut's on two taps. | ||
| 87 | * | ||
| 88 | *One tap on Snagit key = is Ctrl + Shift + C which is Snagit's selector. | ||
| 89 | *Two taps on Snagit key = Cmd + Shift + Opt + 4 (OS X cropping screenshot that is copied to the clipboard only.) | ||
| 90 | */ | ||
| 91 | |||
| 92 | [BASE] = LAYOUT_ergodox( | ||
| 93 | //left hand | ||
| 94 | KC_EQUAL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, | ||
| 95 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, M_GREATER, | ||
| 96 | OSM(MOD_HYPR), KC_A, S_CMD_S, ALT_T(KC_D), LT(MKDWN,KC_F), KC_G, | ||
| 97 | LSFT(KC_TAB), CTL_T(KC_Z), ALT_T(KC_X), KC_C, KC_V, KC_B, TD(CT_LBP), | ||
| 98 | KC_GRAVE, ZENDESK, RUBYMINE, LGUI(KC_S), TODO, | ||
| 99 | KC_ESCAPE, KC_HOME, | ||
| 100 | KC_END, | ||
| 101 | OSM(MOD_LSFT), LT(NUM,KC_BSPACE), LT(MKDWN,KC_DELETE), | ||
| 102 | |||
| 103 | //right hand | ||
| 104 | KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINUS, | ||
| 105 | MD_LINK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, | ||
| 106 | KC_H, KC_J, ALT_T(KC_K), LGUI_T(KC_L), LT(MEDIA,KC_SCOLON), ALL_T(KC_QUOTE), | ||
| 107 | TD(CT_RBP), KC_N, KC_M, KC_COMMA, ALT_T(KC_DOT), CTL_T(KC_SLASH), SCMD_T(_______), | ||
| 108 | LSFT(KC_MINUS), _______, DBLE_ZER0, DBLE_ZER0, TO(OLD_BASE), | ||
| 109 | L_ID_0, KC_ESCAPE, | ||
| 110 | LGUI(KC_Z), | ||
| 111 | LT(MEDIA,KC_LCTL), LT(SYMBL,KC_ENTER), LT(ARROWS,KC_SPACE)), | ||
| 112 | |||
| 113 | /* Keymap 1: OLD Base layer | ||
| 114 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 115 | * | = | 1 | 2 | 3 | 4 | 5 | []() | |Snagit| 6 | 7 | 8 | 9 | 0 | - | | ||
| 116 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 117 | * | Tab | Q | W | E | R | T | "> " | | []() | Y | U | I | O | P | \ | | ||
| 118 | * |--------+------+------+------+------+------| | | SCRN |------+------+------+------+------+--------| | ||
| 119 | * | Hyper | A |S /CMD| D | F | G |------| |------| H | J | K |L /CMD| ; /L2| '/Hyper| | ||
| 120 | * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------| | ||
| 121 | * |Shft Tab|Z/Ctrl|X/Alt | C | V | B | [ { | | ] } | N | M | , | ./Alt|//Ctrl|CMD+SHFT| | ||
| 122 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 123 | * | ` |Zendsk|RBMINE|CMD+S | ToDo | | _ | | 00 | 00 |ToBase| | ||
| 124 | * `----------------------------------' `----------------------------------' | ||
| 125 | * ,-------------. ,--------------. | ||
| 126 | * | Esc | Home | |Layer?| Esc | | ||
| 127 | * ,------|------|------| |------+-------+------. | ||
| 128 | * | | | End | | Undo | | | | ||
| 129 | * |Shift |Backsp|------| |------| Return|Space/| | ||
| 130 | * | OSM | /L5 | DEL | | Ctrl | /LT1 |Arrows| | ||
| 131 | * `--------------------' `---------------------' | ||
| 132 | * | ||
| 133 | *Copy/Cut key copies on tap, cut's on two taps. | ||
| 134 | * | ||
| 135 | *One tap on Snagit key = is Ctrl + Shift + C which is Snagit's selector. | ||
| 136 | *Two taps on Snagit key = Cmd + Shift + Opt + 4 (OS X cropping screenshot that is copied to the clipboard only.) | ||
| 137 | */ | ||
| 138 | |||
| 139 | [OLD_BASE] = LAYOUT_ergodox( | ||
| 140 | //left hand | ||
| 141 | KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, M_LINK, | ||
| 142 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, M_GREATER, | ||
| 143 | OSM(MOD_HYPR), KC_A, S_CMD_S, D_CMD_OPT, LT(MKDWN,KC_F),KC_G, | ||
| 144 | LSFT(KC_TAB), CTL_T(KC_Z), ALT_T(KC_X), KC_C, KC_V, KC_B, TD(CT_LBP), | ||
| 145 | KC_GRAVE, ZENDESK, RUBYMINE, LGUI(KC_S), TODO, | ||
| 146 | KC_ESCAPE, KC_HOME, | ||
| 147 | KC_END, | ||
| 148 | OSM(MOD_LSFT), LT(NUM,KC_BSPACE), LT(MKDWN,KC_DELETE), | ||
| 149 | |||
| 150 | //right hand | ||
| 151 | TD(TD_SNAGIT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, | ||
| 152 | MD_LINK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, | ||
| 153 | KC_H, KC_J, KC_K, LGUI_T(KC_L), LT(MEDIA,KC_SCOLON), ALL_T(KC_QUOTE), | ||
| 154 | TD(CT_RBP), KC_N, KC_M, KC_COMMA, ALT_T(KC_DOT), CTL_T(KC_SLASH), SCMD_T(_______), | ||
| 155 | LSFT(KC_MINUS), _______, DBLE_ZER0, DBLE_ZER0, TO(BASE), | ||
| 156 | L_ID_0, KC_ESCAPE, | ||
| 157 | LGUI(KC_Z), | ||
| 158 | LT(MEDIA,KC_LCTL), LT(SYMBL,KC_ENTER), LT(ARROWS,KC_SPACE)), | ||
| 159 | |||
| 160 | /* Keymap 2: Symbol | ||
| 161 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 162 | * | | 1 | 2 | 3 | 4 | 5 | []() | |Snagit| 6 | 7 | 8 | 9 | 0 | - | | ||
| 163 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 164 | * | | | $ | & | ` | | | Cmd | | | | | * | | | | | ||
| 165 | * |--------+------+------+------+------+------| + K | | |------+------+------+------+------+--------| | ||
| 166 | * | | # | $ | & | ! | @ |------| |------| - | [ | ] | ( | ) | | | ||
| 167 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 168 | * | | % | ^ | | | ~ | | | | | | | | | | | ||
| 169 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 170 | * | | | | | | | | | | | | | ||
| 171 | * `----------------------------------' `----------------------------------' | ||
| 172 | * ,-------------. ,-------------. | ||
| 173 | * | | | |Layer?| | | ||
| 174 | * ,------|------|------| |------+------+------. | ||
| 175 | * | | | | | | | | | ||
| 176 | * | | |------| |------| | | | ||
| 177 | * | | | | | | | | | ||
| 178 | * `--------------------' `--------------------' | ||
| 179 | */ | ||
| 180 | // SYMBOLS | ||
| 181 | [SYMBL] = LAYOUT_ergodox( | ||
| 182 | //left hand | ||
| 183 | _______, KC_1, KC_2, KC_3, KC_4, KC_5, M_LINK, | ||
| 184 | _______, _______, KC_DLR, KC_AMPR, KC_GRAVE, KC_PIPE, LGUI(KC_K), | ||
| 185 | _______, KC_HASH, KC_DLR, KC_AMPR, KC_EXLM, KC_AT, | ||
| 186 | _______, KC_PERC, KC_CIRC, _______, _______, KC_TILD, _______, | ||
| 187 | _______, _______, _______, _______, _______, | ||
| 188 | _______, _______, | ||
| 189 | _______, | ||
| 190 | _______, _______, _______, | ||
| 191 | |||
| 192 | //right hand | ||
| 193 | TD(TD_SNAGIT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, | ||
| 194 | _______, _______, _______, KC_PAST, _______, _______, _______, | ||
| 195 | KC_MINUS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, _______, | ||
| 196 | _______, _______, _______, _______, _______, _______, _______, | ||
| 197 | _______, _______, _______, _______, _______, | ||
| 198 | L_ID_1, _______, | ||
| 199 | _______, | ||
| 200 | _______, _______, _______), | ||
| 201 | |||
| 202 | /* Keymap 3: Media and mouse keys | ||
| 203 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 204 | * | | | | | | | | | XKCD | | | | | | F15 | | ||
| 205 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 206 | * | | |Whl Up| MsUp |Whl Dn| | | | | | | | | | F14 | | ||
| 207 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 208 | * | |Ctl L |MsLeft|MsDown|MsRght| Ctl R|------| |------| | Mute | VolDn| VolUp| TL 2 | Play | | ||
| 209 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 210 | * | | |WHL L | |Whl R | | | | | | | Prev | Next | | | | ||
| 211 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 212 | * | | | | | | | Mute | | | | | | ||
| 213 | * `----------------------------------' `----------------------------------' | ||
| 214 | * ,-------------. ,-------------. | ||
| 215 | * | | | |LAYER?| | | ||
| 216 | * ,------|------|------| |------+------+------. | ||
| 217 | * | Left |Right | | | |Copy/ | paste| | ||
| 218 | * | Click|Click |------| |------| cut |/paste| | ||
| 219 | * | | | | | | |spcial| | ||
| 220 | * `--------------------' `--------------------' | ||
| 221 | */ | ||
| 222 | // MEDIA AND MOUSE | ||
| 223 | |||
| 224 | [MEDIA] = LAYOUT_ergodox( | ||
| 225 | //left hand | ||
| 226 | _______, _______, _______, _______, _______, _______, _______, | ||
| 227 | _______, _______, KC_MS_WH_UP, KC_MS_UP, KC_MS_WH_DOWN, _______, _______, | ||
| 228 | _______, LCTL(KC_LEFT), KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, RCTL(KC_RIGHT), | ||
| 229 | XXXXXXX, _______, KC_MS_WH_LEFT, _______, KC_MS_WH_RIGHT, _______, _______, | ||
| 230 | _______, _______, _______, _______, _______, | ||
| 231 | _______, _______, | ||
| 232 | _______, | ||
| 233 | KC_MS_BTN1, KC_MS_BTN2, _______, | ||
| 234 | |||
| 235 | //right hand | ||
| 236 | XKCD, _______, _______, _______, _______, _______, KC_F15, | ||
| 237 | _______, _______, _______, _______, _______, _______, KC_F14, | ||
| 238 | _______, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _______, KC_MEDIA_PLAY_PAUSE, | ||
| 239 | _______, _______, _______, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, _______, XXXXXXX, | ||
| 240 | _______, _______, _______, _______, _______, | ||
| 241 | L_ID_2, _______, | ||
| 242 | _______, | ||
| 243 | _______, TD(TD_COPY_CUT), PAST_PS), | ||
| 244 | |||
| 245 | /* Keymap 4: Markdown Symbols | ||
| 246 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 247 | * | | | | | | | | |SCRNCL| | | | | | | | ||
| 248 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 249 | * | | | | | | | | | | | ``` | ** | _ | ` | | | ||
| 250 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 251 | * | | | | | TL MD| |------| |------| - | [ | ] | ( | ) | | | ||
| 252 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 253 | * | | | | | | | | | | # | ## | ### | #### | #####| | | ||
| 254 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 255 | * | | | | | | | | | | | | | ||
| 256 | * `----------------------------------' `----------------------------------' | ||
| 257 | * ,-------------. ,-------------. | ||
| 258 | * | | | |Layer?| | | ||
| 259 | * ,------|------|------| |------+------+------. | ||
| 260 | * | | | | | | | | | ||
| 261 | * | | |------| |------| | | | ||
| 262 | * | | | | | | | | | ||
| 263 | * `--------------------' `--------------------' | ||
| 264 | * Sc cp = OS X cropping screenshot that is copied to the clipboard only. | ||
| 265 | */ | ||
| 266 | // Markdown Layer | ||
| 267 | [MKDWN] = LAYOUT_ergodox( | ||
| 268 | //left hand | ||
| 269 | _______, _______, _______, _______, _______, _______, _______, | ||
| 270 | _______, _______, _______, _______, _______, _______, _______, | ||
| 271 | _______, _______, _______, _______, _______, _______, | ||
| 272 | _______, _______, _______, _______, _______, _______, _______, | ||
| 273 | _______, _______, _______, _______, _______, | ||
| 274 | _______, _______, | ||
| 275 | _______, | ||
| 276 | _______, _______, _______, | ||
| 277 | |||
| 278 | //right hand | ||
| 279 | SCRN_CLIPB, _______, _______, _______, _______, _______, _______, | ||
| 280 | _______, _______, TRPLE_GRAVE, DBLE_ASTR,LSFT(KC_MINUS), KC_GRAVE, _______, | ||
| 281 | KC_MINUS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, _______, | ||
| 282 | _______, H_ONE, H_TWO, H_THREE, H_FOUR, H_FIVE, _______, | ||
| 283 | _______, _______, _______, _______, _______, | ||
| 284 | _______, _______, | ||
| 285 | _______, | ||
| 286 | _______, _______, _______), | ||
| 287 | |||
| 288 | /* Keymap 5: Arrows | ||
| 289 | * | ||
| 290 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 291 | * | RESET | | | | | | | | | | | | | | | | ||
| 292 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 293 | * | | | Opt+L| Up |Opt+R | | | | | | Opt+L| Up |Opt+R | | | | ||
| 294 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 295 | * | |Ctrl+L| Left | Dn | Right|Ctrl+R|------| |------|Ctrl+L| Left | Dn | Right|Ctrl+R| | | ||
| 296 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 297 | * | | | | | | | | | | | | | | | | | ||
| 298 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 299 | * | | | | | | | | | | | | | ||
| 300 | * `----------------------------------' `----------------------------------' | ||
| 301 | * ,-------------. ,-------------. | ||
| 302 | * | | | | | | | ||
| 303 | * ,------|------|------| |------+------+------. | ||
| 304 | * | | | | | | | | | ||
| 305 | * | | |------| |------| | | | ||
| 306 | * | | | | | | | | | ||
| 307 | * `--------------------' `--------------------' | ||
| 308 | * | ||
| 309 | * | ||
| 310 | * | ||
| 311 | */ | ||
| 312 | // Movement Layer | ||
| 313 | |||
| 314 | [ARROWS] = LAYOUT_ergodox( | ||
| 315 | //left hand | ||
| 316 | RESET, _______, _______, _______, _______, _______, _______, | ||
| 317 | _______, _______, CHRM_L, KC_UP, CHRM_R, _______, _______, | ||
| 318 | _______,LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), | ||
| 319 | _______, _______, _______, _______, _______, _______, _______, | ||
| 320 | _______, _______, _______, _______, _______, | ||
| 321 | _______, _______, | ||
| 322 | _______, | ||
| 323 | _______, _______, _______, | ||
| 324 | //right hand | ||
| 325 | _______, _______, _______, _______, _______, _______, _______, | ||
| 326 | _______, _______, CHRM_L, KC_UP, CHRM_R, _______, _______, | ||
| 327 | LCTL(KC_LEFT), KC_LEFT, KC_DOWN, LGUI_T(KC_RIGHT), LCTL(KC_RIGHT), _______, | ||
| 328 | _______, _______, _______, _______, _______, _______, _______, | ||
| 329 | _______, _______, _______, _______, _______, | ||
| 330 | _______, _______, | ||
| 331 | _______, | ||
| 332 | _______, _______, _______), | ||
| 333 | |||
| 334 | /* Keymap 6: Numpad | ||
| 335 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 336 | * | | | | | | | | | | | | | | | | | ||
| 337 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 338 | * | | | | | | | | | | = | 7 | 8 | 9 | * | | | ||
| 339 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 340 | * | | | |Cp/Cut|paste | |------| |------| + | 4 | 5 | 6 | + | | | ||
| 341 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 342 | * | | | | | | | | | | - | 1 | 2 | 3 | / | | | ||
| 343 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 344 | * | | | | | | | 0 | . | 00 | 00 | Enter| | ||
| 345 | * `----------------------------------' `----------------------------------' | ||
| 346 | * ,-------------. ,-------------. | ||
| 347 | * | | | | | | | ||
| 348 | * ,------|------|------| |------+------+------. | ||
| 349 | * | | | | | |Nupmad| | | ||
| 350 | * | | |------| |------|Enter | | | ||
| 351 | * | | | | | | | | | ||
| 352 | * `--------------------' `--------------------' | ||
| 353 | */ | ||
| 354 | // Numpad Layer | ||
| 355 | [NUM] = LAYOUT_ergodox( | ||
| 356 | //left hand | ||
| 357 | _______, _______, _______, _______, _______, _______, _______, | ||
| 358 | _______, _______, _______, _______, _______, _______, _______, | ||
| 359 | _______, _______, _______, TD(TD_COPY_CUT), PAST_PS, _______, | ||
| 360 | _______, _______, _______, _______, _______, _______, _______, | ||
| 361 | _______, _______, _______, _______, _______, | ||
| 362 | _______, _______, | ||
| 363 | _______, | ||
| 364 | _______, _______, _______, | ||
| 365 | |||
| 366 | //right hand | ||
| 367 | _______, _______, _______, _______, _______, _______, _______, | ||
| 368 | _______, KC_EQUAL, KC_7, KC_8, KC_9, KC_ASTR, _______, | ||
| 369 | KC_PLUS, KC_4, KC_5, KC_6, KC_PLUS, _______, | ||
| 370 | _______, KC_MINUS, KC_1, KC_2, KC_3, KC_KP_SLASH, _______, | ||
| 371 | KC_KP_0, KC_DOT, DBLE_ZER0, DBLE_ZER0, KC_KP_ENTER, | ||
| 372 | _______, _______, | ||
| 373 | _______, | ||
| 374 | _______, KC_PENT, _______), | ||
| 375 | }; | ||
| 376 | |||
| 377 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 378 | |||
| 379 | switch (keycode) { | ||
| 380 | case EPRM: | ||
| 381 | if (record->event.pressed) { | ||
| 382 | eeconfig_init(); | ||
| 383 | } | ||
| 384 | return false; | ||
| 385 | break; | ||
| 386 | |||
| 387 | case VRSN: | ||
| 388 | if (record->event.pressed) { | ||
| 389 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | ||
| 390 | } | ||
| 391 | return false; | ||
| 392 | break; | ||
| 393 | |||
| 394 | case MD_LINK: | ||
| 395 | if (record->event.pressed){ | ||
| 396 | key_timer = timer_read(); | ||
| 397 | } else { | ||
| 398 | if (timer_elapsed(key_timer) > 150) { | ||
| 399 | SEND_STRING ("([Video]("); | ||
| 400 | } else { | ||
| 401 | SEND_STRING ("([Screenshot]("); | ||
| 402 | } | ||
| 403 | SEND_STRING(SS_LGUI("v")); | ||
| 404 | SEND_STRING("))"); | ||
| 405 | } | ||
| 406 | break; | ||
| 407 | |||
| 408 | case XKCD: | ||
| 409 | if (record->event.pressed) { | ||
| 410 | SEND_STRING ("https://xkcd.com/1319/"); | ||
| 411 | } | ||
| 412 | break; | ||
| 413 | |||
| 414 | case DBLE_ZER0: | ||
| 415 | if (record->event.pressed){ | ||
| 416 | SEND_STRING ("00"); | ||
| 417 | } | ||
| 418 | break; | ||
| 419 | |||
| 420 | case DBLE_ASTR: | ||
| 421 | if (record->event.pressed){ | ||
| 422 | SEND_STRING ("**"); | ||
| 423 | SEND_STRING ("**"); | ||
| 424 | SEND_STRING (SS_TAP(X_LEFT)); | ||
| 425 | SEND_STRING (SS_TAP(X_LEFT)); | ||
| 426 | } | ||
| 427 | break; | ||
| 428 | |||
| 429 | case TRPLE_GRAVE: | ||
| 430 | if (record->event.pressed){ | ||
| 431 | SEND_STRING ("```"); | ||
| 432 | } | ||
| 433 | break; | ||
| 434 | |||
| 435 | case L_ID_0: | ||
| 436 | if (record->event.pressed) { | ||
| 437 | SEND_STRING (SS_LGUI(" ")); | ||
| 438 | SEND_STRING ("Layer 0: Base"); | ||
| 439 | } | ||
| 440 | break; | ||
| 441 | |||
| 442 | case L_ID_1: | ||
| 443 | if (record->event.pressed) { | ||
| 444 | SEND_STRING (SS_LGUI(" ")); | ||
| 445 | SEND_STRING ("Layer 1: Symbols"); | ||
| 446 | } | ||
| 447 | break; | ||
| 448 | |||
| 449 | case L_ID_2: | ||
| 450 | if (record->event.pressed) { | ||
| 451 | SEND_STRING (SS_LGUI(" ")); | ||
| 452 | SEND_STRING ("Layer 2: Media & Mousekeys"); | ||
| 453 | } | ||
| 454 | break; | ||
| 455 | |||
| 456 | case PAST_PS: | ||
| 457 | if (record->event.pressed) { | ||
| 458 | key_timer = timer_read(); | ||
| 459 | } else { | ||
| 460 | if (timer_elapsed(key_timer) > 150) { | ||
| 461 | SEND_STRING (SS_LGUI("V")); // Paste special | ||
| 462 | } else { | ||
| 463 | SEND_STRING (SS_LGUI("v")); // Paste | ||
| 464 | } | ||
| 465 | } | ||
| 466 | break; | ||
| 467 | |||
| 468 | case TODO: | ||
| 469 | if (record->event.pressed) { | ||
| 470 | key_timer = timer_read(); | ||
| 471 | } else { | ||
| 472 | if (timer_elapsed(key_timer) > 150) { //switch to Todoist when held and released | ||
| 473 | SEND_STRING (SS_LGUI(" ")); | ||
| 474 | SEND_STRING ("Todoist"); | ||
| 475 | SEND_STRING (SS_TAP(X_ENTER)); | ||
| 476 | } else { | ||
| 477 | SEND_STRING (SS_LGUI(SS_LCTRL("a"))); //macro to open Todoist new task dialog | ||
| 478 | } | ||
| 479 | } | ||
| 480 | break; | ||
| 481 | |||
| 482 | case RUBYMINE: | ||
| 483 | if (record->event.pressed){ | ||
| 484 | SEND_STRING (SS_LGUI(" ")); | ||
| 485 | SEND_STRING ("RUBYMINE"); | ||
| 486 | SEND_STRING (SS_TAP(X_ENTER)); | ||
| 487 | } | ||
| 488 | break; | ||
| 489 | |||
| 490 | case ZENDESK: | ||
| 491 | if (record->event.pressed){ | ||
| 492 | SEND_STRING (SS_LGUI(" ")); | ||
| 493 | SEND_STRING ("||ZEN"); | ||
| 494 | SEND_STRING (SS_TAP(X_ENTER)); | ||
| 495 | } | ||
| 496 | break; | ||
| 497 | |||
| 498 | case H_ONE: | ||
| 499 | if (record->event.pressed){ | ||
| 500 | SEND_STRING ("# "); | ||
| 501 | } | ||
| 502 | break; | ||
| 503 | |||
| 504 | case H_TWO: | ||
| 505 | if (record->event.pressed){ | ||
| 506 | SEND_STRING ("## "); | ||
| 507 | } | ||
| 508 | break; | ||
| 509 | |||
| 510 | case H_THREE: | ||
| 511 | if (record->event.pressed){ | ||
| 512 | SEND_STRING ("### "); | ||
| 513 | } | ||
| 514 | break; | ||
| 515 | |||
| 516 | case H_FOUR: | ||
| 517 | if (record->event.pressed){ | ||
| 518 | SEND_STRING ("#### "); | ||
| 519 | } | ||
| 520 | break; | ||
| 521 | |||
| 522 | case H_FIVE: | ||
| 523 | if (record->event.pressed){ | ||
| 524 | SEND_STRING ("##### "); | ||
| 525 | } | ||
| 526 | break; | ||
| 527 | case M_LINK: | ||
| 528 | if (record->event.pressed){ | ||
| 529 | SEND_STRING ("[]()"); | ||
| 530 | } | ||
| 531 | break; | ||
| 532 | case M_GREATER: | ||
| 533 | if (record->event.pressed){ | ||
| 534 | SEND_STRING ("> "); | ||
| 535 | } | ||
| 536 | break; | ||
| 537 | } | ||
| 538 | return true; | ||
| 539 | }; | ||
| 540 | |||
| 541 | void matrix_scan_user(void) { | ||
| 542 | uint8_t layer = biton32(layer_state); | ||
| 543 | |||
| 544 | ergodox_board_led_off(); | ||
| 545 | ergodox_right_led_1_off(); | ||
| 546 | ergodox_right_led_2_off(); | ||
| 547 | ergodox_right_led_3_off(); | ||
| 548 | switch (layer) { | ||
| 549 | case 1: | ||
| 550 | ergodox_right_led_1_on(); | ||
| 551 | break; | ||
| 552 | case 2: | ||
| 553 | ergodox_right_led_2_on(); | ||
| 554 | break; | ||
| 555 | default: | ||
| 556 | break; | ||
| 557 | } | ||
| 558 | }; | ||
diff --git a/layouts/community/ergodox/meagerfindings/rules.mk b/layouts/community/ergodox/meagerfindings/rules.mk new file mode 100644 index 000000000..c775e1f6d --- /dev/null +++ b/layouts/community/ergodox/meagerfindings/rules.mk | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | COMMAND_ENABLE = no | ||
| 2 | TAP_DANCE_ENABLE = yes | ||
| 3 | FORCE_NKRO = yes | ||
