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.

188 lines
16 KiB

  1. /* Copyright 2021 Ocean
  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. /*LAYOUT
  20. *
  21. * k00k01k02k03k04k05k06k07k08k09k0Ak0Bk0C k0D k0F
  22. *
  23. * k10 k11k12k13k14k15k16k17k18k19k1Ak1Bk1C k1D k1E
  24. *
  25. * k20 k21k22k23k24k25k26k27k28k29k2Ak2B k2D k2E
  26. *
  27. * k30 k32k33k34k35k36k37k38k39k3Ak3B k3C k3Dk3E
  28. *
  29. * k40 k41 k42 k44 k49 k4A k4Ck4Dk4E
  30. *
  31. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  32. */
  33. #define LAYOUT( \
  34. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
  35. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
  36. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
  37. k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
  38. k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
  39. ) { \
  40. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \
  41. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, XXX }, \
  42. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
  43. { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
  44. { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \
  45. }
  46. /*LAYOUT_iso
  47. *
  48. * k00k01k02k03k04k05k06k07k08k09k0Ak0Bk0Ck0Dk0Ek0F
  49. *
  50. * k10 k11k12k13k14k15k16k17k18k19k1Ak1Bk1C K2D k1E
  51. *
  52. * k20 k21k22k23k24k25k26k27k28k29k2Ak2Bk1D k2E
  53. *
  54. * k30 k32k33k34k35k36k37k38k39k3Ak3B k3C k3Dk3E
  55. *
  56. * k40 k41 k42 k44 k49 k4A k4Ck4Dk4E
  57. *
  58. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  59. */
  60. #define LAYOUT_iso( \
  61. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
  62. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
  63. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
  64. k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
  65. k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
  66. ) { \
  67. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
  68. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX }, \
  69. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
  70. { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
  71. { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \
  72. }
  73. /*LAYOUT_split_left_shift
  74. *
  75. * k00k01k02k03k04k05k06k07k08k09k0Ak0Bk0Ck0Dk0Ek0F
  76. *
  77. * k10 k11k12k13k14k15k16k17k18k19k1Ak1Bk1C K2D k1E
  78. *
  79. * k20 k21k22k23k24k25k26k27k28k29k2Ak2Bk1D k2E
  80. *
  81. * k30 k31k32k33k34k35k36k37k38k39k3Ak3B k3C k3Dk3E
  82. *
  83. * k40 k41 k42 k44 k49 k4A k4Ck4Dk4E
  84. *
  85. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  86. */
  87. #define LAYOUT_split_left_shift( \
  88. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
  89. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
  90. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
  91. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
  92. k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
  93. ) { \
  94. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
  95. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
  96. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
  97. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
  98. { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \
  99. }
  100. /*LAYOUT_7u_space
  101. *
  102. * k00k01k02k03k04k05k06k07k08k09k0Ak0Bk0Ck0Dk0Ek0F
  103. *
  104. * k10 k11k12k13k14k15k16k17k18k19k1Ak1Bk1C K2D k1E
  105. *
  106. * k20 k21k22k23k24k25k26k27k28k29k2Ak2Bk1D k2E
  107. *
  108. * k30 k31k32k33k34k35k36k37k38k39k3Ak3B k3C k3Dk3E
  109. *
  110. * k40 k41 k42 k44 k4A k4Ck4Dk4E
  111. *
  112. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  113. */
  114. #define LAYOUT_7u_space( \
  115. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
  116. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
  117. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
  118. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
  119. k40, k41, k42, k44, k4A, k4C, k4D, k4E \
  120. ) { \
  121. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
  122. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
  123. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
  124. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
  125. { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \
  126. }
  127. /*LAYOUT_split_space_1
  128. *
  129. * k00k01k02k03k04k05k06k07k08k09k0Ak0Bk0Ck0Dk0Ek0F
  130. *
  131. * k10 k11k12k13k14k15k16k17k18k19k1Ak1Bk1C K2D k1E
  132. *
  133. * k20 k21k22k23k24k25k26k27k28k29k2Ak2Bk1D k2E
  134. *
  135. * k30 k31k32k33k34k35k36k37k38k39k3Ak3B k3C k3Dk3E
  136. *
  137. * k40 k41 k42 k43 K44 K46 K49 k4A k4Ck4Dk4E
  138. *
  139. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  140. */
  141. #define LAYOUT_split_space_1( \
  142. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
  143. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
  144. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
  145. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
  146. k40, k41, k42, K43, k44, K46, K49, k4A, k4C, k4D, k4E \
  147. ) { \
  148. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
  149. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
  150. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
  151. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
  152. { k40, k41, k42, K43, k44, XXX, K46, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \
  153. }
  154. /*LAYOUT_split_space_2
  155. *
  156. * k00k01k02k03k04k05k06k07k08k09k0Ak0Bk0Ck0Dk0Ek0F
  157. *
  158. * k10 k11k12k13k14k15k16k17k18k19k1Ak1Bk1C K2D k1E
  159. *
  160. * k20 k21k22k23k24k25k26k27k28k29k2Ak2Bk1D k2E
  161. *
  162. * k30 k31k32k33k34k35k36k37k38k39k3Ak3B k3C k3Dk3E
  163. *
  164. * k40 k41 k42 k43 K44 K46 K49 k4A k4Ck4Dk4E
  165. *
  166. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  167. */
  168. #define LAYOUT_split_space_2( \
  169. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
  170. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
  171. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
  172. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
  173. k40, k41, k42, K43, k44, K46, K49, k4A, k4C, k4D, k4E \
  174. ) { \
  175. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
  176. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
  177. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
  178. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
  179. { k40, k41, k42, K43, k44, XXX, K46, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \
  180. }