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.

214 lines
18 KiB

  1. /*
  2. Copyright 2021 Alexander Lee <chlx.bsmt@gmail.com>
  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. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #pragma once
  15. #include "quantum.h"
  16. // Corresponding changes to the layout names and/or definitions must also be made to info.json
  17. #define XXX KC_NO
  18. /* //////////////////// LAYOUT_all ////////////////////
  19. *
  20. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e
  21. *
  22. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
  23. *
  24. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d
  25. *
  26. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d
  27. *
  28. * 40 41 42 45 (6.25u) 4a 4b 4c 4d
  29. *
  30. */
  31. #define LAYOUT_all( \
  32. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
  33. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
  34. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
  35. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
  36. k40, k41, k42, k45, k4a, k4b, k4c, k4d \
  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, XXX }, \
  40. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  41. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  42. { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \
  43. }
  44. /* //////////////////// LAYOUT_60_ansi ////////////////////
  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
  49. *
  50. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2d
  51. *
  52. * 31 32 33 34 35 36 37 38 39 3a 3b 3c
  53. *
  54. * 40 41 42 45 4a 4b 4c 4d
  55. *
  56. */
  57. #define LAYOUT_60_ansi( \
  58. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  59. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
  60. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
  61. k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
  62. k40, k41, k42, k45, k4a, k4b, k4c, k4d \
  63. ) { \
  64. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
  65. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
  66. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
  67. { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, XXX }, \
  68. { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \
  69. }
  70. /* //////////////////// LAYOUT_60_ansi_split_bs_rshift ////////////////////
  71. *
  72. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e
  73. *
  74. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
  75. *
  76. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2d
  77. *
  78. * 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d
  79. *
  80. * 40 41 42 45 4a 4b 4d 4e
  81. *
  82. */
  83. #define LAYOUT_60_ansi_split_bs_rshift( \
  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, k1d, \
  86. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
  87. k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
  88. k40, k41, k42, k45, k4a, k4b, k4c, k4d \
  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, XXX }, \
  92. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
  93. { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  94. { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \
  95. }
  96. /* //////////////////// LAYOUT_60_hhkb ////////////////////
  97. *
  98. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e
  99. *
  100. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
  101. *
  102. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2d
  103. *
  104. * 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d
  105. *
  106. * 41 42 45 (7u) 4b 4c
  107. *
  108. */
  109. #define LAYOUT_60_hhkb( \
  110. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
  111. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
  112. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
  113. k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
  114. k41, k42, k45, k4b, k4c \
  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, XXX }, \
  118. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
  119. { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  120. { XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, XXX, XXX } \
  121. }
  122. /* //////////////////// LAYOUT_60_iso ////////////////////
  123. *
  124. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
  125. *
  126. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c
  127. * 2d
  128. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c
  129. *
  130. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c
  131. *
  132. * 40 41 42 45 4a 4b 4c 4d
  133. *
  134. */
  135. #define LAYOUT_60_iso( \
  136. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
  137. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
  138. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
  139. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
  140. k40, k41, k42, k45, k4a, k4b, k4c, k4d \
  141. ) { \
  142. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
  143. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
  144. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  145. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, XXX }, \
  146. { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \
  147. }
  148. /* //////////////////// LAYOUT_60_iso_split_bs_rshift ////////////////////
  149. *
  150. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e
  151. *
  152. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c
  153. * 2d
  154. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c
  155. *
  156. * 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d
  157. *
  158. * 40 41 42 45 4a 4b 4c 4d
  159. *
  160. */
  161. #define LAYOUT_60_iso_split_bs_rshift( \
  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, \
  164. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
  165. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
  166. k40, k41, k42, k45, k4a, k4b, k4c, k4d \
  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, XXX, XXX }, \
  170. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  171. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  172. { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \
  173. }
  174. /* //////////////////// LAYOUT_60_tsangan_hhkb ////////////////////
  175. *
  176. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e
  177. *
  178. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
  179. *
  180. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2d
  181. *
  182. * 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d
  183. *
  184. * 40 41 42 45 (7u) 4b 4c 4d
  185. *
  186. */
  187. #define LAYOUT_60_tsangan_hhkb( \
  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, \
  190. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
  191. k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
  192. k40, k41, k42, k45, k4b, k4c, k4d \
  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, XXX }, \
  196. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
  197. { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  198. { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, k4d, XXX } \
  199. }