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.

243 lines
22 KiB

  1. /* Copyright 2021 meletrix
  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. /* Standard Arrangement
  19. *
  20. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 2d ISO
  21. *
  22. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1d
  23. *
  24. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e 2c
  25. *
  26. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  27. *
  28. * 40 41 42 44 46 48 4a 4b 4c 4d 4e
  29. *
  30. */
  31. #define LAYOUT_all( \
  32. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K43, K0E, K45, \
  33. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
  34. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
  35. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  36. K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
  37. ) { \
  38. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  39. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  40. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
  41. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  42. { K40, K41, K42, K43, K44, K45, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  43. }
  44. /* LAYOUT_65_ansi_blocker
  45. *
  46. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
  47. *
  48. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  49. *
  50. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  51. *
  52. * 30 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  53. *
  54. * 40 41 42 46 4a 4b 4c 4d 4e
  55. *
  56. */
  57. #define LAYOUT_65_ansi_blocker( \
  58. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
  59. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
  60. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
  61. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  62. K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
  63. ) { \
  64. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  65. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  66. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
  67. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  68. { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  69. }
  70. /* LAYOUT_65_iso_blocker
  71. *
  72. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
  73. *
  74. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  75. *
  76. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  77. *
  78. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  79. *
  80. * 40 41 42 46 4a 4b 4c 4d 4e
  81. *
  82. */
  83. #define LAYOUT_65_iso_blocker( \
  84. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
  85. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
  86. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2E, \
  87. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  88. K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
  89. ) { \
  90. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  91. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  92. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
  93. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  94. { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  95. }
  96. /* LAYOUT_65_ansi_blocker_split_bs
  97. *
  98. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 2d
  99. *
  100. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  101. *
  102. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  103. *
  104. * 30 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  105. *
  106. * 40 41 42 46 4a 4b 4c 4d 4e
  107. *
  108. */
  109. #define LAYOUT_65_ansi_blocker_split_bs( \
  110. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \
  111. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
  112. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
  113. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  114. K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
  115. ) { \
  116. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  117. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  118. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
  119. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  120. { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  121. }
  122. /* LAYOUT_65_iso_blocker_split_bs
  123. *
  124. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 2d
  125. *
  126. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  127. *
  128. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  129. *
  130. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  131. *
  132. * 40 41 42 46 4a 4b 4c 4d 4e
  133. *
  134. */
  135. #define LAYOUT_65_iso_blocker_split_bs( \
  136. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \
  137. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
  138. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2E, \
  139. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  140. K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
  141. ) { \
  142. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  143. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  144. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
  145. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  146. { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  147. }
  148. /* LAYOUT_65_ansi_blocker_split_lshift
  149. *
  150. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
  151. *
  152. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  153. *
  154. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  155. *
  156. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  157. *
  158. * 40 41 42 46 4a 4b 4c 4d 4e
  159. *
  160. */
  161. #define LAYOUT_65_ansi_blocker_split_lshift( \
  162. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
  163. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
  164. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
  165. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  166. K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
  167. ) { \
  168. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  169. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  170. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
  171. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  172. { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  173. }
  174. /* LAYOUT_65_ansi_blocker_split_space
  175. *
  176. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
  177. *
  178. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  179. *
  180. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  181. *
  182. * 30 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  183. *
  184. * 40 41 42 44 46 48 4a 4b 4c 4d 4e
  185. *
  186. */
  187. #define LAYOUT_65_ansi_blocker_split_space( \
  188. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
  189. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
  190. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
  191. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  192. K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
  193. ) { \
  194. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  195. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  196. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
  197. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  198. { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  199. }
  200. /* LAYOUT_65_iso_blocker_split_space
  201. *
  202. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
  203. *
  204. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e
  205. *
  206. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2e
  207. *
  208. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e
  209. *
  210. * 40 41 42 44 46 48 4a 4b 4c 4d 4e
  211. *
  212. */
  213. #define LAYOUT_65_iso_blocker_split_space( \
  214. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
  215. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
  216. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
  217. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
  218. K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
  219. ) { \
  220. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
  221. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
  222. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
  223. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
  224. { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
  225. }