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.

335 lines
15 KiB

  1. /* Copyright 2021 SawnsProjects
  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 XXX KC_NO
  19. //x
  20. #define LAYOUT_all( \
  21. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  22. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  23. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  24. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K77, \
  25. K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
  26. ) { \
  27. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  28. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  29. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  30. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  31. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  32. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  33. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  34. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  35. { K80, K81, K82, XXX, K84, K85, K86, XXX }, \
  36. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  37. }
  38. //LAYOUT_60_ansi
  39. //x
  40. #define LAYOUT_60_ansi( \
  41. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  42. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  43. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  44. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  45. K80, K90, K81, K92, K94, K85, K95, K97 \
  46. ) { \
  47. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  48. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  49. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  50. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  51. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  52. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  53. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  54. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  55. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  56. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  57. }
  58. //LAYOUT_60_iso
  59. //x
  60. #define LAYOUT_60_iso(\
  61. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  62. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  63. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  64. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  65. K80, K90, K81, K92, K94, K85, K95, K97 \
  66. ) { \
  67. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  68. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  69. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  70. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  71. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  72. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  73. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  74. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  75. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  76. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  77. }
  78. //LAYOUT_60_ansi_split_bs
  79. #define LAYOUT_60_ansi_split_bs( \
  80. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  81. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  82. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  83. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  84. K80, K90, K81, K92, K94, K85, K95, K97 \
  85. ) { \
  86. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  87. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  88. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  89. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  90. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  91. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  92. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  93. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  94. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  95. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  96. }
  97. //LAYOUT_60_ansi_split_spc
  98. #define LAYOUT_60_ansi_split_spc( \
  99. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  100. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  101. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  102. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  103. K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
  104. ) { \
  105. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  106. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  107. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  108. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  109. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  110. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  111. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  112. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  113. { K80, K81, K82, XXX, K84, K85, xxx, XXX }, \
  114. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  115. }
  116. //LAYOUT_60_ansi_split_bs_spc
  117. #define LAYOUT_60_ansi_split_bs_spc( \
  118. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  119. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  120. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  121. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  122. K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
  123. ) { \
  124. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  125. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  126. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  127. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  128. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  129. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  130. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  131. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  132. { K80, K81, K82, XXX, K84, K85, xxx, XXX }, \
  133. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  134. }
  135. //LAYOUT_60_ansi_7u_spc
  136. #define LAYOUT_60_ansi_7u_spc( \
  137. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  138. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  139. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  140. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  141. K80, K90, K81, K92, K85, K95, K97 \
  142. ) { \
  143. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  144. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  145. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  146. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  147. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  148. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  149. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  150. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  151. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  152. { K90, XXX, K92, XXX, xxx, K95, XXX, K97 }, \
  153. }
  154. //LAYOUT_60_ansi_split_7u_spc
  155. #define LAYOUT_60_ansi_split_bs_7u_spc( \
  156. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  157. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  158. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  159. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
  160. K80, K90, K81, K92, K85, K95, K97 \
  161. ) { \
  162. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  163. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  164. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  165. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  166. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  167. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  168. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  169. { K70, K71, K72, K73, K74, xxx, XXX, xxx }, \
  170. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  171. { K90, XXX, K92, XXX, xxx, K95, XXX, K97 }, \
  172. }
  173. //LAYOUT_60_ansi_arrow_split_bs
  174. #define LAYOUT_60_ansi_arrow_split_bs( \
  175. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  176. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  177. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  178. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
  179. K80, K90, K81, K92, K94, K85, K86, K95, K97 \
  180. ) { \
  181. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  182. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  183. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  184. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  185. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  186. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  187. { K60, K61, K62, K63, K64, xxx, K66, XXX }, \
  188. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  189. { K80, K81, xxx, XXX, xxx, K85, K86, XXX }, \
  190. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  191. }
  192. //LAYOUT_60_ansi_arrow_split_spc
  193. #define LAYOUT_60_ansi_arrow_split_spc( \
  194. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  195. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  196. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  197. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
  198. K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
  199. ) { \
  200. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  201. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  202. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  203. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  204. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  205. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  206. { K60, K61, K62, K63, K64, xxx, K66, XXX }, \
  207. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  208. { K80, K81, K82, XXX, K84, K85, K86, XXX }, \
  209. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  210. }
  211. //LAYOUT_60_ansi_arrow_split_bs_spc
  212. #define LAYOUT_60_ansi_arrow_split_bs_spc( \
  213. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  214. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  215. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  216. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
  217. K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
  218. ) { \
  219. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  220. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  221. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  222. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  223. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  224. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  225. { K60, K61, K62, K63, K64, xxx, K66, XXX }, \
  226. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  227. { K80, K81, K82, XXX, K84, K85, K86, XXX }, \
  228. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  229. }
  230. //LAYOUT_60_ansi_arrow_7u_spc
  231. #define LAYOUT_60_ansi_arrow_7u_spc( \
  232. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  233. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  234. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  235. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
  236. K80, K90, K81, K92, K85, K86, K95, K97 \
  237. ) { \
  238. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  239. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  240. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  241. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  242. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  243. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  244. { K60, K61, K62, K63, K64, xxx, K66, XXX }, \
  245. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  246. { K80, K81, xxx, XXX, xxx, K85, K86, XXX }, \
  247. { K90, XXX, K92, XXX, xxx, K95, XXX, K97 }, \
  248. }
  249. //LAYOUT_60_ansi_arrow
  250. //x
  251. #define LAYOUT_60_ansi_arrow( \
  252. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  253. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  254. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  255. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
  256. K80, K90, K81, K92, K94, K85, K86, K95, K97 \
  257. ) { \
  258. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  259. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  260. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  261. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  262. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  263. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  264. { K60, K61, K62, K63, K64, xxx, K66, XXX }, \
  265. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  266. { K80, K81, xxx, XXX, xxx, K85, K86, XXX }, \
  267. { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
  268. }
  269. //x
  270. //LAYOUT_60_ansi_arrow_split_bs_7u_spc
  271. #define LAYOUT_60_ansi_arrow_split_bs_7u_spc( \
  272. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  273. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  274. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  275. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
  276. K80, K90, K81, K92, K85, K86, K95, K97 \
  277. ) { \
  278. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  279. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  280. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  281. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  282. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  283. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  284. { K60, K61, K62, K63, K64, xxx, K66, XXX }, \
  285. { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
  286. { K80, K81, xxx, XXX, xxx, K85, K86, XXX }, \
  287. { K90, XXX, K92, XXX, xxx, K95, XXX, K97 }, \
  288. }
  289. //LAYOUT_60_ansi_tsangan
  290. #define LAYOUT_60_ansi_tsangan( \
  291. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
  292. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  293. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  294. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
  295. K80, K90, K81, K92, K85, K95, K97 \
  296. ) { \
  297. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  298. { K10, K11, K12, K13, K14, K15, XXX, xxx }, \
  299. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  300. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  301. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  302. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  303. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  304. { K70, K71, K72, K73, K74, xxx, XXX, K77 }, \
  305. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  306. { K90, XXX, K92, XXX, xxx, K95, XXX, K97 }, \
  307. }
  308. //LAYOUT_60_ansi_tsangan_split_bs
  309. #define LAYOUT_60_ansi_tsangan_split_bs( \
  310. K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
  311. K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
  312. K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
  313. K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
  314. K80, K90, K81, K92, K85, K95, K97 \
  315. ) { \
  316. { K00, K01, K02, K03, K04, K05, K06, XXX }, \
  317. { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
  318. { K20, K21, K22, K23, K24, K25, K26, XXX }, \
  319. { K30, K31, K32, K33, K34, K35, K36, XXX }, \
  320. { K40, K41, K42, K43, K44, K45, K46, K47 }, \
  321. { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
  322. { K60, K61, K62, K63, K64, K65, K66, XXX }, \
  323. { K70, K71, K72, K73, K74, xxx, XXX, K77 }, \
  324. { K80, K81, xxx, XXX, xxx, K85, xxx, XXX }, \
  325. { K90, XXX, K92, XXX, xxx, K95, XXX, K97 }, \
  326. }
  327. //LAYOUT_60_iso_tsangan
  328. #define LAYOUT_60_iso_tsangan LAYOUT_60_ansi_tsangan
  329. //LAYOUT_60_iso_tsangan_split_bs
  330. #define LAYOUT_60_iso_tsangan_split_bs LAYOUT_60_ansi_tsangan_split_bs