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.

204 lines
19 KiB

  1. /* Copyright 2021 gkeyboard
  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. /* This is a shortcut to help you visually see your layout.
  20. *
  21. * The first section contains all of the arguments representing the physical
  22. * layout of the board and position of the keys.
  23. *
  24. * The second converts the arguments into a two-dimensional array which
  25. * represents the switch matrix.
  26. */
  27. /* LAYOUT_ansi
  28. *
  29. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0e |68 |69 |6a |6b |
  30. *
  31. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d |58 |59 |5a |5b |
  32. * |
  33. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2d |5c |5d |5e | |
  34. *
  35. * 30 32 33 34 35 36 37 38 39 3a 3b 3d | |48 |49 |4a |4b |
  36. * |
  37. * 40 41 42 43 44 45 46 47 |4c |4d | |
  38. *
  39. */
  40. #define LAYOUT_ansi( \
  41. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k68, k69, k6a, k6b, \
  42. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \
  43. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k5c, k5d, k5e, \
  44. k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k48, k49, k4a, k4b, \
  45. k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \
  46. ) { \
  47. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
  48. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
  49. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
  50. { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
  51. { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \
  52. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
  53. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \
  54. }
  55. /* LAYOUT_tsangan
  56. *
  57. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0e |68 |69 |6a |6b |
  58. *
  59. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d |58 |59 |5a |5b |
  60. * |
  61. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2d |5c |5d |5e | |
  62. *
  63. * 30 32 33 34 35 36 37 38 39 3a 3b 3c |3d |48 |49 |4a |4b |
  64. * |
  65. * 40 41 42 43 (7u) 45 46 47 |4c |4d | |
  66. *
  67. */
  68. #define LAYOUT_tsangan( \
  69. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k68, k69, k6a, k6b, \
  70. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \
  71. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k5c, k5d, k5e, \
  72. k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \
  73. k40, k41, k42, k43, k45, k46, k47, k4c, k4d \
  74. ) { \
  75. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
  76. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
  77. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
  78. { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  79. { k40, k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \
  80. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
  81. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \
  82. }
  83. /* LAYOUT_all_ansi
  84. *
  85. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e |68 |69 |6a |6b |
  86. *
  87. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d |58 |59 |5a |5b
  88. * |
  89. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c |2d |5c |5d |5e | |
  90. *
  91. * 30 |31 32 33 34 35 36 37 38 39 3a 3b 3c |3d |48 |49 |4a |4b |
  92. * |
  93. * 40 41 42 43 44 45 46 47 |4c |4d | |
  94. *
  95. */
  96. #define LAYOUT_all_ansi( \
  97. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \
  98. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \
  99. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \
  100. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \
  101. k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \
  102. ) { \
  103. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
  104. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
  105. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  106. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  107. { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \
  108. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
  109. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \
  110. }
  111. /* LAYOUT_all_tsangan
  112. *
  113. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d |0e |68 |69 |6a |6b |
  114. *
  115. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d |58 |59 |5a |5b |
  116. * |
  117. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c |2d |5c |5d |5e | |
  118. *
  119. * 30 |31 32 33 34 35 36 37 38 39 3a 3b 3c |3d |48 |49 |4a |4b |
  120. * |
  121. * 40 41 42 43 (7u) 45 46 47 |4c |4d | |
  122. *
  123. */
  124. #define LAYOUT_all_tsangan( \
  125. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \
  126. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \
  127. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \
  128. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \
  129. k40, k41, k42, k43, k45, k46, k47, k4c, k4d \
  130. ) { \
  131. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
  132. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
  133. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  134. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  135. { k40, k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \
  136. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
  137. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \
  138. }
  139. /* LAYOUT_all__iso_6_25
  140. *
  141. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e |68 |69 |6a |6b |
  142. *
  143. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 2d |58 |59 |5a |5b |
  144. * | |
  145. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c | |5c |5d |5e | |
  146. *
  147. * 30 |31 32 33 34 35 36 37 38 39 3a 3b 3c |3d |48 |49 |4a |4b |
  148. * |
  149. * 40 41 42 43 44 45 46 47 |4c |4d | |
  150. *
  151. */
  152. #define LAYOUT_all_iso_6_25( \
  153. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \
  154. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, k58, k59, k5a, k5b, \
  155. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k5c, k5d, k5e, \
  156. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \
  157. k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \
  158. ) { \
  159. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
  160. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
  161. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  162. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  163. { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \
  164. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
  165. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \
  166. }
  167. /* LAYOUT_all__iso_7
  168. *
  169. * 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d |0e |68 |69 |6a |6b |
  170. *
  171. * 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 2d |58 |59 |5a |5b |
  172. * | |
  173. * 20 21 22 23 24 25 26 27 28 29 2a 2b 2c | |5c |5d |5e | |
  174. *
  175. * 30 |31 32 33 34 35 36 37 38 39 3a 3b 3c |3d |48 |49 |4a |4b |
  176. * |
  177. * 40 41 42 43 (7u) 45 46 47 |4c |4d | |
  178. *
  179. */
  180. #define LAYOUT_all_iso_7( \
  181. k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \
  182. k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, k58, k59, k5a, k5b, \
  183. k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k5c, k5d, k5e, \
  184. k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \
  185. k40, k41, k42, k43, k45, k46, k47, k4c, k4d \
  186. ) { \
  187. { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
  188. { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
  189. { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
  190. { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \
  191. { k40, k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \
  192. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
  193. { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \
  194. }