# ErgoDox EZ Code Friendly Qwerty Layout - This layout aims to balance muscle memory from a typical QWERTY layout with having keys used for software development easily accessible. The this layout is a normalized qwerty, with some configurable keys left thumb cluster so you can use it more as needed. - Arrow keys follow VIM convention. - On the top row only symbols are used (not numbers), it's expected the symbol layer's number-pad layout will be used for numbers. - Symbols match regular QWERTY. except for '()' which are grouped with other brackets. In their place -/= keys are placed, which almost matches a regular layout. - Brackets are placed symmetrically along the center edges, if using keys from both sides is inconvenient - the symbol layer has macros at the same key locations to type matching pairs. - The space-bar on the lower-left looks like it's in an obscure location, however using the larger thumb cluster ended up being more of a reach while typing. ## Configuration Some optional behavior is configurable without editing the code using `CFQ_` prefixed defines which can be set by passing `EXTRAFLAGS` to make. - `CFQ_USER_KEY0` (0..8) are used for custom-keys - `CFQ_USE_MOMENTARY_LAYER_KEYS` is used to prevent layer keys from toggling when tapped. - `CFQ_USE_SHIFT_QUOTES` an optional handy shortcut for writing quotes that inserts the cursor between the quotation marks. Holding LShift, then RShift types: "" (then presses left). Holding RShift, then LShift types: '' (then presses left). - `CFQ_WORD_[A-Z]` defines can bind a key to an entire user defined word. - `CFQ_USE_80_KEYS` enables 80 key layout, none of the extra keys are bound, they need to be set with defines: `CFQ_USER_K80_L0K0` .. `CFQ_USER_K80_L3K4`. Where `L#` is the layer and `K#` is the key. ## Keymap 0: Basic layer ``` .--------------------------------------------------. .--------------------------------------------------. | Grave | ! | @ | # | $ | % | { | | } | ^ | & | * | - | = | BSpace | |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| | Tab | Q | W | E | R | T | ( | | ) | Y | U | I | O | P | \ | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' | LCtl |Super | Alt | ~L1 |Space | | Left | Down | Up |Right | Del | '----------------------------------' '----------------------------------' .-------------. .-------------. | Ins |NumClk| | Home | End | .------+------+------| |------+------+------. | | |CapsLk| | PgUp | | | |BSpace| Del |------| |------| ~L2 |Enter | | | | ~L3 | | PgDn | | | '--------------------' '--------------------' Optional overrides: see CFQ_USER_KEY# defines. .--------------------------------------------------. .--------------------------------------------------. | | | | | | | | | | | | | | | USR0 | |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| | | | | | | | | | | | | | | | | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | | | | | | |------| |------| | | | | | | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | | | | | | | | | | | | | | | | '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' | | | | USR1 | | | | | | | USR8 | '----------------------------------' '----------------------------------' .-------------. .-------------. | USR2 | USR3 | | | | .------+------+------| |------+------+------. | | | USR6 | | | | | | USR4 | USR5 |------| |------| | | | | | USR7 | | | | | '--------------------' '--------------------' ``` ## Keymap 1: KeyPad, Macro Record Notes: - The double bracket keys on this layer press left to position the cursor between them. - The left thumb cluster is used for macro record/replay. ``` .--------------------------------------------------. .--------------------------------------------------. | | | | | | | {} | | }{ | |NumLck| / | * | - | | |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| | | | | | | => | () | | )( | <= | 7 | 8 | 9 | + | | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | | | | | | -> |------| |------| <- | 4 | 5 | 6 | + | | |--------+------+------+------+------+------| [] | | ][ |------+------+------+------+------+--------| | | | | | | <> | | | | >< | 1 | 2 | 3 | Enter| | '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' | | | | | | | 0 | | . | Enter| | '----------------------------------' '----------------------------------' .-------------. .-------------. |Start1|Start2| | | | .------+------+------| |------+------+------. | | | Stop | | | | | |Play1 |Play2 |------| |------| | | | | | | | | | | '--------------------' '--------------------' ``` ## Keymap 2: F-Keys, Media & Mouse Keys ``` .--------------------------------------------------. .--------------------------------------------------. | | | | | | | | | Mute | | F10 | F11 | F12 | | | |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| | | | | MsUp | | |MWhlUp| |VolUp | | F7 | F8 | F9 | | | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | | |MsLeft|MsDown|MsRght| |------| |------| | F4 | F5 | F6 | | | |--------+------+------+------+------+------|MWhlDn| |VolDn |------+------+------+------+------+--------| | | | Rclk | Mclk | Lclk | | | | | | F1 | F2 | F3 | | | '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' | | | | | | | | | | | | '----------------------------------' '----------------------------------' .-------------. .-------------. | | | | MRwd | MFwd | .------+------+------| |------+------+------. | | | | | MPrv | | | | | |------| |------| | Play | | | | | | MNxt | | | '--------------------' '--------------------' ``` ## Keymap 3: User Defined Words & Numbers This is for assigning whole words to single keys. You can define the arguments (which must be quoted) using: `CFQ_WORD_[A-Z]` eg: `-DCFQ_WORD_E=\"my@email.com\"` Notes: - Numbers are included on this layer since some applications differentiate between numbers top row and keypad. ``` .--------------------------------------------------. .--------------------------------------------------. | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| | | Q | W | E | R | T | | | | Y | U | I | O | P | | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | | A | S | D | F | G |------| |------| H | J | K | L | | | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | | Z | X | C | V | B | | | | N | M | | | | | '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' | | | | | | | | | | | | '----------------------------------' '----------------------------------' .-------------. .-------------. | | | | | | .------+------+------| |------+------+------. | | | | | | | | | | |------| |------| | | | | | | | | | | '--------------------' '--------------------' ``` ## Changelog - 2018/10/19 Move F-Keys to key-pad like layout. - 2018/05/29 Add number keys for cases when keypad numbers are handled differently. - 2018/05/19 Move all media keys to right thumb cluster (matching page up/down, home/end locations). - 2018/04/14 Add `CFQ_USE_80_KEYS` to optionally support an 80 key layout. - 2018/03/08 Add `CFQ_USE_SHIFT_QUOTES` option. Add `CFQ_USER_KEY8` key. When holding shift `CFQ_WORD_[A-Z]` use title caps. - 2018/03/06 Add layer for user defined words (replaces `CFQ_USE_EXPEREMENTAL_LAYER`). Minor changes to thumb cluster. Move backspace to left thumb, optionally remap the top right backspace. Make keypad layout match a typical numpad. Move F-Keys to layer 3. - 2017/11/09 Use Caps-Lock when `CFQ_USE_EXPEREMENTAL_LAYER` isn't defined. - 2017/11/07 Make thumb left thumb cluster completely configurable with defines. Add mouse wheel to mouse layer. - 2017/10/28 Make more keys user defined on the left thumb cluster. Add macro record/replay keys. - 2017/10/04 Move Insert key to the left thumb cluster (away from the modifier keys). Replace with `USR2` which defaults to `APP`.