summaryrefslogtreecommitdiffstats
path: root/layouts/community/ergodox/qwerty_code_friendly/readme.md
blob: 319ea50b9a33dab1135da8d3a112da40bb42e8ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# 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`.