You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

222 lines
12 KiB

  1. # ErgoDox EZ Code Friendly Qwerty Layout
  2. - This layout aims to balance muscle memory from a typical QWERTY layout
  3. with having keys used for software development easily accessible.
  4. The this layout is a normalized qwerty,
  5. with some configurable keys left thumb cluster so you can use it more as needed.
  6. - Arrow keys follow VIM convention
  7. (the media layer even uses arrow keys for HJKL).
  8. - On the top row only symbols are used (not numbers),
  9. it's expected the symbol layer's number-pad layout will be used for numbers.
  10. - Symbols match regular QWERTY.
  11. except for '()' which are grouped with other brackets.
  12. In their place -/= keys are placed, which almost matches a regular layout.
  13. - Brackets are placed symmetrically along the center edges,
  14. if using keys from both sides is inconvenient - the symbol layer has macros
  15. at the same key locations to type matching pairs.
  16. - The space-bar on the lower-left looks like it's in an obscure location,
  17. however using the larger thumb cluster
  18. ended up being more of a reach while typing.
  19. ## Configuration
  20. Some optional behavior is configurable without editing the code
  21. using `CFQ_` prefixed defines which can be set by passing `EXTRAFLAGS` to make.
  22. - `CFQ_USER_KEY0`
  23. (0..7) are used for custom-keys
  24. - `CFQ_USE_MOMENTARY_LAYER_KEYS`
  25. is used to prevent layer keys from toggling when tapped.
  26. - `CFQ_USE_SHIFT_QUOTES`
  27. an optional handy shortcut for writing quotes that inserts the
  28. cursor between the quotation marks.
  29. Holding LShift, then RShift types: "" (then presses left).
  30. Holding RShift, then LShift types: '' (then presses left).
  31. - `CFQ_WORD_[A-Z]`
  32. defines can bind a key to an entire user defined word.
  33. - `CFQ_USE_80_KEYS`
  34. enables 80 key layout, none of the extra keys are bound,
  35. they need to be set with defines: `CFQ_USER_K80_L0K0` .. `CFQ_USER_K80_L3K4`.
  36. Where `L#` is the layer and `K#` is the key.
  37. ## Keymap 0: Basic layer
  38. ```
  39. .--------------------------------------------------. .--------------------------------------------------.
  40. | Grave | ! | @ | # | $ | % | { | | } | ^ | & | * | - | = | BSpace |
  41. |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  42. | Tab | Q | W | E | R | T | ( | | ) | Y | U | I | O | P | \ |
  43. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  44. | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
  45. |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
  46. | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
  47. '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
  48. | LCtl |Super | Alt | ~L1 |Space | | Left | Down | Up |Right | Del |
  49. '----------------------------------' '----------------------------------'
  50. .-------------. .-------------.
  51. | Ins |NumClk| | Home | End |
  52. .------+------+------| |------+------+------.
  53. | | |CapsLk| | PgUp | | |
  54. |BSpace| Del |------| |------| ~L2 |Enter |
  55. | | | ~L3 | | PgDn | | |
  56. '--------------------' '--------------------'
  57. Optional overrides: see CFQ_USER_KEY# defines.
  58. .--------------------------------------------------. .--------------------------------------------------.
  59. | | | | | | | | | | | | | | | USR0 |
  60. |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  61. | | | | | | | | | | | | | | | |
  62. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  63. | | | | | | |------| |------| | | | | | |
  64. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  65. | | | | | | | | | | | | | | | |
  66. '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
  67. | | | | USR1 | | | | | | | USR8 |
  68. '----------------------------------' '----------------------------------'
  69. .-------------. .-------------.
  70. | USR2 | USR3 | | | |
  71. .------+------+------| |------+------+------.
  72. | | | USR6 | | | | |
  73. | USR4 | USR5 |------| |------| | |
  74. | | | USR7 | | | | |
  75. '--------------------' '--------------------'
  76. ```
  77. ## Keymap 1: KeyPad, Macro Record
  78. Notes:
  79. - The double bracket keys on this layer press left to position the cursor between them.
  80. - The left thumb cluster is used for macro record/replay.
  81. ```
  82. .--------------------------------------------------. .--------------------------------------------------.
  83. | | | | | | | {} | | }{ | |NumLck| / | * | - | |
  84. |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  85. | | | | | | => | () | | )( | <= | 7 | 8 | 9 | + | |
  86. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  87. | | | | | | -> |------| |------| <- | 4 | 5 | 6 | + | |
  88. |--------+------+------+------+------+------| [] | | ][ |------+------+------+------+------+--------|
  89. | | | | | | <> | | | | >< | 1 | 2 | 3 | Enter| |
  90. '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
  91. | | | | | | | 0 | | . | Enter| |
  92. '----------------------------------' '----------------------------------'
  93. .-------------. .-------------.
  94. |Start1|Start2| | | |
  95. .------+------+------| |------+------+------.
  96. | | | Stop | | | | |
  97. |Play1 |Play2 |------| |------| | |
  98. | | | | | | | |
  99. '--------------------' '--------------------'
  100. ```
  101. ## Keymap 2: Media, Mouse Keys and Numbers
  102. Notes:
  103. - Numbers are included on this layer since some applications differentiate
  104. between numbers top row and keypad.
  105. ```
  106. .--------------------------------------------------. .--------------------------------------------------.
  107. | | 1 | 2 | 3 | 4 | 5 | | | Mute | 6 | 7 | 8 | 9 | 0 | |
  108. |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  109. | | | | MsUp | | |MWhlUp| |VolUp | | | | | | |
  110. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  111. | | |MsLeft|MsDown|MsRght| |------| |------| Left | Down | Up |Right | | |
  112. |--------+------+------+------+------+------|MWhlDn| |VolDn |------+------+------+------+------+--------|
  113. | | | Rclk | Mclk | Lclk | | | | | | | | | | |
  114. '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
  115. | | | | | | | | | | | |
  116. '----------------------------------' '----------------------------------'
  117. .-------------. .-------------.
  118. | | | | MRwd | MFwd |
  119. .------+------+------| |------+------+------.
  120. | | | | | MPrv | | |
  121. | | |------| |------| | Play |
  122. | | | | | MNxt | | |
  123. '--------------------' '--------------------'
  124. ```
  125. ## Keymap 3: F-Keys & User Defined Words
  126. This is for assigning whole words to single keys.
  127. You can define the arguments (which must be quoted) using: `CFQ_WORD_[A-Z]`
  128. eg: `-DCFQ_WORD_E=\"my@email.com\"`
  129. ```
  130. .--------------------------------------------------. .--------------------------------------------------.
  131. | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
  132. |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  133. | | Q | W | E | R | T | | | | Y | U | I | O | P | |
  134. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  135. | | A | S | D | F | G |------| |------| H | J | K | L | | |
  136. |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  137. | | Z | X | C | V | B | | | | N | M | | | | |
  138. '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
  139. | | | | | | | | | | | |
  140. '----------------------------------' '----------------------------------'
  141. .-------------. .-------------.
  142. | | | | | |
  143. .------+------+------| |------+------+------.
  144. | | | | | | | |
  145. | | |------| |------| | |
  146. | | | | | | | |
  147. '--------------------' '--------------------'
  148. ```
  149. ## Changelog
  150. - 2018/05/29
  151. Add number keys for cases when keypad numbers are handled differently.
  152. - 2018/05/19
  153. Move all media keys to right thumb cluster
  154. (matching page up/down, home/end locations).
  155. - 2018/04/14
  156. Add `CFQ_USE_80_KEYS` to optionally support an 80 key layout.
  157. - 2018/03/08
  158. Add `CFQ_USE_SHIFT_QUOTES` option.
  159. Add `CFQ_USER_KEY8` key.
  160. When holding shift `CFQ_WORD_[A-Z]` use title caps.
  161. - 2018/03/06
  162. Add layer for user defined words (replaces `CFQ_USE_EXPEREMENTAL_LAYER`).
  163. Minor changes to thumb cluster.
  164. Move backspace to left thumb, optionally remap the top right backspace.
  165. Make keypad layout match a typical numpad.
  166. Move F-Keys to layer 3.
  167. - 2017/11/09
  168. Use Caps-Lock when `CFQ_USE_EXPEREMENTAL_LAYER` isn't defined.
  169. - 2017/11/07
  170. Make thumb left thumb cluster completely configurable with defines.
  171. Add mouse wheel to mouse layer.
  172. - 2017/10/28
  173. Make more keys user defined on the left thumb cluster.
  174. Add macro record/replay keys.
  175. - 2017/10/04
  176. Move Insert key to the left thumb cluster (away from the modifier keys).
  177. Replace with `USR2` which defaults to `APP`.