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.

342 lines
22 KiB

  1. /* Copyright 2020 kakunpc
  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. /* This is a shortcut to help you visually see your layout.
  19. *
  20. * The first section contains all of the arguments representing the physical
  21. * layout of the board and position of the keys.
  22. *
  23. * The second converts the arguments into a two-dimensional array which
  24. * represents the switch matrix.
  25. */
  26. /* LAYOUT_all
  27. *
  28. * 001002003004005006007008009010011012013014015
  29. *
  30. * 101 102103104105106107108109110111112113114
  31. *
  32. * 201 202203204205206207208209210211212213
  33. *
  34. * 301 301302303304305306307308309310311312 313
  35. *
  36. * 401 402 403 404 405 406407408
  37. *
  38. */
  39. #define LAYOUT_all( \
  40. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
  41. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  42. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  43. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
  44. k401, k402, k403, k404, k405, k406, k407, k408 \
  45. ) \
  46. { \
  47. { k009, k109, k209, k309, KC_NO } , \
  48. { k010, k110, k210, k310, KC_NO } , \
  49. { k011, k111, k211, k311, KC_NO } , \
  50. { k012, k112, k212, k312, KC_NO } , \
  51. { k013, k113, k213, k313, KC_NO } , \
  52. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  53. { k015, KC_NO, KC_NO, KC_NO, KC_NO } , \
  54. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  55. { k001, k101, k201, k301, k401 } , \
  56. { k002, k102, k202, k302, k402 } , \
  57. { k003, k103, k203, k303, k403 } , \
  58. { k004, k104, k204, k304, k404 } , \
  59. { k005, k105, k205, k305, k405 } , \
  60. { k006, k106, k206, k306, k406 } , \
  61. { k007, k107, k207, k307, k407 } , \
  62. { k008, k108, k208, k308, k408 } \
  63. }
  64. /* LAYOUT_ansi
  65. *
  66. * 001002003004005006007008009010011012013 014
  67. *
  68. * 101 102103104105106107108109110111112113114
  69. *
  70. * 201 202203204205206207208209210211212213
  71. *
  72. * 301 301302303304305306307308309310311 312
  73. *
  74. * 401 402 403 404 405 406407408
  75. *
  76. */
  77. #define LAYOUT_ansi( \
  78. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
  79. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  80. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  81. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
  82. k401, k402, k403, k404, k405, k406, k407, k408 \
  83. ) \
  84. { \
  85. { k009, k109, k209, k309, KC_NO } , \
  86. { k010, k110, k210, k310, KC_NO } , \
  87. { k011, k111, k211, k311, KC_NO } , \
  88. { k012, k112, k212, k312, KC_NO } , \
  89. { k013, k113, k213, KC_NO, KC_NO } , \
  90. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  91. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  92. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  93. { k001, k101, k201, k301, k401 } , \
  94. { k002, k102, k202, k302, k402 } , \
  95. { k003, k103, k203, k303, k403 } , \
  96. { k004, k104, k204, k304, k404 } , \
  97. { k005, k105, k205, k305, k405 } , \
  98. { k006, k106, k206, k306, k406 } , \
  99. { k007, k107, k207, k307, k407 } , \
  100. { k008, k108, k208, k308, k408 } \
  101. }
  102. /* LAYOUT_ansi_split_bs
  103. *
  104. * 001002003004005006007008009010011012013014015
  105. *
  106. * 101 102103104105106107108109110111112113114
  107. *
  108. * 201 202203204205206207208209210211212213
  109. *
  110. * 301 301302303304305306307308309310311 312
  111. *
  112. * 401 402 403 404 405 406407408
  113. *
  114. */
  115. #define LAYOUT_ansi_split_bs( \
  116. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
  117. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  118. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  119. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
  120. k401, k402, k403, k404, k405, k406, k407, k408 \
  121. ) \
  122. { \
  123. { k009, k109, k209, k309, KC_NO } , \
  124. { k010, k110, k210, k310, KC_NO } , \
  125. { k011, k111, k211, k311, KC_NO } , \
  126. { k012, k112, k212, k312, KC_NO } , \
  127. { k013, k113, k213, KC_NO, KC_NO } , \
  128. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  129. { k015, KC_NO, KC_NO, KC_NO, KC_NO } , \
  130. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  131. { k001, k101, k201, k301, k401 } , \
  132. { k002, k102, k202, k302, k402 } , \
  133. { k003, k103, k203, k303, k403 } , \
  134. { k004, k104, k204, k304, k404 } , \
  135. { k005, k105, k205, k305, k405 } , \
  136. { k006, k106, k206, k306, k406 } , \
  137. { k007, k107, k207, k307, k407 } , \
  138. { k008, k108, k208, k308, k408 } \
  139. }
  140. /* LAYOUT_ansi_split_rshift
  141. *
  142. * 001002003004005006007008009010011012013 014
  143. *
  144. * 101 102103104105106107108109110111112113114
  145. *
  146. * 201 202203204205206207208209210211212213
  147. *
  148. * 301 301302303304305306307308309310311312 313
  149. *
  150. * 401 402 403 404 405 406407408
  151. *
  152. */
  153. #define LAYOUT_ansi_split_rshift( \
  154. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
  155. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  156. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  157. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
  158. k401, k402, k403, k404, k405, k406, k407, k408 \
  159. ) \
  160. { \
  161. { k009, k109, k209, k309, KC_NO } , \
  162. { k010, k110, k210, k310, KC_NO } , \
  163. { k011, k111, k211, k311, KC_NO } , \
  164. { k012, k112, k212, k312, KC_NO } , \
  165. { k013, k113, k213, k313, KC_NO } , \
  166. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  167. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  168. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  169. { k001, k101, k201, k301, k401 } , \
  170. { k002, k102, k202, k302, k402 } , \
  171. { k003, k103, k203, k303, k403 } , \
  172. { k004, k104, k204, k304, k404 } , \
  173. { k005, k105, k205, k305, k405 } , \
  174. { k006, k106, k206, k306, k406 } , \
  175. { k007, k107, k207, k307, k407 } , \
  176. { k008, k108, k208, k308, k408 } \
  177. }
  178. /* LAYOUT_iso
  179. *
  180. * 001002003004005006007008009010011012013 014
  181. *
  182. * 101 102103104105106107108109110111112113
  183. * 114
  184. * 201 202203204205206207208209210211212213
  185. *
  186. * 301 301302303304305306307308309310311 312
  187. *
  188. * 401 402 403 404 405 406407408
  189. *
  190. */
  191. #define LAYOUT_iso( \
  192. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
  193. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  194. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  195. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
  196. k401, k402, k403, k404, k405, k406, k407, k408 \
  197. ) \
  198. { \
  199. { k009, k109, k209, k309, KC_NO } , \
  200. { k010, k110, k210, k310, KC_NO } , \
  201. { k011, k111, k211, k311, KC_NO } , \
  202. { k012, k112, k212, k312, KC_NO } , \
  203. { k013, k113, k213, KC_NO, KC_NO } , \
  204. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  205. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  206. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  207. { k001, k101, k201, k301, k401 } , \
  208. { k002, k102, k202, k302, k402 } , \
  209. { k003, k103, k203, k303, k403 } , \
  210. { k004, k104, k204, k304, k404 } , \
  211. { k005, k105, k205, k305, k405 } , \
  212. { k006, k106, k206, k306, k406 } , \
  213. { k007, k107, k207, k307, k407 } , \
  214. { k008, k108, k208, k308, k408 } \
  215. }
  216. /* LAYOUT_iso_split_rshift
  217. *
  218. * 001002003004005006007008009010011012013 014
  219. *
  220. * 101 102103104105106107108109110111112113
  221. * 114
  222. * 201 202203204205206207208209210211212213
  223. *
  224. * 301 301302303304305306307308309310311312 313
  225. *
  226. * 401 402 403 404 405 406407408
  227. *
  228. */
  229. #define LAYOUT_iso_split_rshift( \
  230. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
  231. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  232. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  233. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
  234. k401, k402, k403, k404, k405, k406, k407, k408 \
  235. ) \
  236. { \
  237. { k009, k109, k209, k309, KC_NO } , \
  238. { k010, k110, k210, k310, KC_NO } , \
  239. { k011, k111, k211, k311, KC_NO } , \
  240. { k012, k112, k212, k312, KC_NO } , \
  241. { k013, k113, k213, k313, KC_NO } , \
  242. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  243. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  244. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  245. { k001, k101, k201, k301, k401 } , \
  246. { k002, k102, k202, k302, k402 } , \
  247. { k003, k103, k203, k303, k403 } , \
  248. { k004, k104, k204, k304, k404 } , \
  249. { k005, k105, k205, k305, k405 } , \
  250. { k006, k106, k206, k306, k406 } , \
  251. { k007, k107, k207, k307, k407 } , \
  252. { k008, k108, k208, k308, k408 } \
  253. }
  254. /* LAYOUT_iso_split_bs
  255. *
  256. * 001002003004005006007008009010011012013014015
  257. *
  258. * 101 102103104105106107108109110111112113
  259. * 114
  260. * 201 202203204205206207208209210211212213
  261. *
  262. * 301 301302303304305306307308309310311 312
  263. *
  264. * 401 402 403 404 405 406407408
  265. *
  266. */
  267. #define LAYOUT_iso_split_bs( \
  268. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
  269. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  270. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  271. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
  272. k401, k402, k403, k404, k405, k406, k407, k408 \
  273. ) \
  274. { \
  275. { k009, k109, k209, k309, KC_NO } , \
  276. { k010, k110, k210, k310, KC_NO } , \
  277. { k011, k111, k211, k311, KC_NO } , \
  278. { k012, k112, k212, k312, KC_NO } , \
  279. { k013, k113, k213, KC_NO, KC_NO } , \
  280. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  281. { k015, KC_NO, KC_NO, KC_NO, KC_NO } , \
  282. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  283. { k001, k101, k201, k301, k401 } , \
  284. { k002, k102, k202, k302, k402 } , \
  285. { k003, k103, k203, k303, k403 } , \
  286. { k004, k104, k204, k304, k404 } , \
  287. { k005, k105, k205, k305, k405 } , \
  288. { k006, k106, k206, k306, k406 } , \
  289. { k007, k107, k207, k307, k407 } , \
  290. { k008, k108, k208, k308, k408 } \
  291. }
  292. /* LAYOUT_iso_split_bs_rshift
  293. *
  294. * 001002003004005006007008009010011012013014015
  295. *
  296. * 101 102103104105106107108109110111112113
  297. * 114
  298. * 201 202203204205206207208209210211212213
  299. *
  300. * 301 301302303304305306307308309310311312 313
  301. *
  302. * 401 402 403 404 405 406407408
  303. *
  304. */
  305. #define LAYOUT_iso_split_bs_rshift( \
  306. k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
  307. k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
  308. k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
  309. k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
  310. k401, k402, k403, k404, k405, k406, k407, k408 \
  311. ) \
  312. { \
  313. { k009, k109, k209, k309, KC_NO } , \
  314. { k010, k110, k210, k310, KC_NO } , \
  315. { k011, k111, k211, k311, KC_NO } , \
  316. { k012, k112, k212, k312, KC_NO } , \
  317. { k013, k113, k213, k313, KC_NO } , \
  318. { k014, k114, KC_NO, KC_NO, KC_NO } , \
  319. { k015, KC_NO, KC_NO, KC_NO, KC_NO } , \
  320. { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } , \
  321. { k001, k101, k201, k301, k401 } , \
  322. { k002, k102, k202, k302, k402 } , \
  323. { k003, k103, k203, k303, k403 } , \
  324. { k004, k104, k204, k304, k404 } , \
  325. { k005, k105, k205, k305, k405 } , \
  326. { k006, k106, k206, k306, k406 } , \
  327. { k007, k107, k207, k307, k407 } , \
  328. { k008, k108, k208, k308, k408 } \
  329. }