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.

233 lines
12 KiB

  1. /* Copyright 2020 KnoblesseOblige
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #pragma once
  17. #include "quantum.h"
  18. #define kxx KC_NO
  19. /* This is a shortcut to help you visually see your layout.
  20. *
  21. * The first section contains all of the arguments representing the physical
  22. * layout of the board and position of the keys.
  23. *
  24. * The second converts the arguments into a two-dimensional array which
  25. * represents the switch matrix.
  26. */
  27. #define LAYOUT_all( \
  28. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  29. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  30. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  31. k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d \
  32. ) { \
  33. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  34. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  35. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  36. { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  37. }
  38. #define LAYOUT_3_split_space_standard_rshift_4x_125( \
  39. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  40. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  41. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  42. k30, k31, k32, k33, k34, k36, k39, k3b, k3c, k3d \
  43. ) { \
  44. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  45. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  46. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  47. { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  48. }
  49. #define LAYOUT_3_split_space_standard_rshift_5x_100( \
  50. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  51. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  52. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  53. k30, k31, k32, k33, k34, k36, k39, k3a, k3b, k3c, k3d \
  54. ) { \
  55. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  56. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  57. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  58. { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  59. }
  60. #define LAYOUT_3_split_space_split_rshift_4x_125( \
  61. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  62. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  63. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  64. k30, k31, k32, k33, k34, k36, k39, k3b, k3c, k3d \
  65. ) { \
  66. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  67. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  68. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  69. { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  70. }
  71. #define LAYOUT_3_split_space_split_rshift_5x_100( \
  72. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  73. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  74. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  75. k30, k31, k32, k33, k34, k36, k39, k3a, k3b, k3c, k3d \
  76. ) { \
  77. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  78. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  79. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  80. { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  81. }
  82. #define LAYOUT_4_split_space_standard_rshift_4x_125( \
  83. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  84. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  85. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  86. k30, k31, k32, k33, k34, k35, k36, k39, k3b, k3c, k3d \
  87. ) { \
  88. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  89. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  90. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  91. { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  92. }
  93. #define LAYOUT_4_split_space_standard_rshift_5x_100( \
  94. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  95. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  96. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  97. k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d \
  98. ) { \
  99. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  100. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  101. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  102. { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  103. }
  104. #define LAYOUT_4_split_space_split_rshift_4x_125( \
  105. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  106. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  107. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  108. k30, k31, k32, k33, k34, k35, k36, k39, k3b, k3c, k3d \
  109. ) { \
  110. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  111. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  112. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  113. { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  114. }
  115. #define LAYOUT_4_split_space_split_rshift_5x_100( \
  116. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  117. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  118. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  119. k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d \
  120. ) { \
  121. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  122. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  123. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  124. { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  125. }
  126. #define LAYOUT_625_standard_rshift_4x_125( \
  127. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  128. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  129. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  130. k30, k31, k32, k34, k39, k3b, k3c, k3d \
  131. ) { \
  132. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  133. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  134. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  135. { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  136. }
  137. #define LAYOUT_625_standard_rshift_5x_100( \
  138. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  139. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  140. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  141. k30, k31, k32, k34, k39, k3a, k3b, k3c, k3d \
  142. ) { \
  143. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  144. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  145. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  146. { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  147. }
  148. #define LAYOUT_625_split_rshift_4x_125( \
  149. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  150. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  151. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  152. k30, k31, k32, k34, k39, k3b, k3c, k3d \
  153. ) { \
  154. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  155. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  156. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  157. { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  158. }
  159. #define LAYOUT_625_split_rshift_5x_100( \
  160. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  161. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  162. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  163. k30, k31, k32, k34, k39, k3a, k3b, k3c, k3d \
  164. ) { \
  165. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  166. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  167. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  168. { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  169. }
  170. #define LAYOUT_700_standard_rshift_4x_125( \
  171. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  172. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  173. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  174. k30, k31, k34, k39, k3b, k3c, k3d \
  175. ) { \
  176. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  177. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  178. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  179. { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  180. }
  181. #define LAYOUT_700_standard_rshift_5x_100( \
  182. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  183. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  184. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \
  185. k30, k31, k34, k39, k3a, k3b, k3c, k3d \
  186. ) { \
  187. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  188. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  189. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \
  190. { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  191. }
  192. #define LAYOUT_700_split_rshift_4x_125( \
  193. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  194. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  195. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  196. k30, k31, k34, k39, k3b, k3c, k3d \
  197. ) { \
  198. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  199. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  200. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  201. { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \
  202. }
  203. #define LAYOUT_700_split_rshift_5x_100( \
  204. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  205. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  206. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \
  207. k30, k31, k34, k39, k3a, k3b, k3c, k3d \
  208. ) { \
  209. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
  210. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \
  211. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \
  212. { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \
  213. }