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.

195 lines
14 KiB

  1. /*
  2. Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
  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. #define ___ KC_NO
  17. /*
  18. *
  19. * 00 01 02 03 04 06 07 08 09 0A 0B 0C 0D 0F
  20. *
  21. *
  22. * 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 1D 2u Backspace
  23. *
  24. * 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2E 2F
  25. * 3E ISO Enter
  26. * 30 31 32 33 34 35 36 37 38 39 3A 3B 3E 3F 3D
  27. *
  28. * 40 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4E 4F
  29. *
  30. * 50 51 52 66 6A 6B 6D 6E 6F
  31. *
  32. *
  33. * 50 51 52 66 6B Tsangan
  34. *
  35. */
  36. #define LAYOUT_all( \
  37. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  38. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
  39. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
  40. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
  41. K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  42. K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
  43. ) { \
  44. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  45. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
  46. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
  47. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
  48. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  49. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  50. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
  51. }
  52. #define LAYOUT_ansi( \
  53. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  54. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
  55. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
  56. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
  57. K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  58. K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
  59. ) { \
  60. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  61. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
  62. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
  63. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
  64. { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  65. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  66. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
  67. }
  68. #define LAYOUT_ansi_split_bs( \
  69. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  70. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
  71. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
  72. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
  73. K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  74. K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
  75. ) { \
  76. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  77. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
  78. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
  79. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
  80. { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  81. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  82. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
  83. }
  84. #define LAYOUT_ansi_tsangan( \
  85. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  86. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
  87. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
  88. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
  89. K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  90. K50, K51, K52, K66, K6B, K6D, K6E, K6F \
  91. ) { \
  92. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  93. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
  94. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
  95. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
  96. { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  97. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  98. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
  99. }
  100. #define LAYOUT_ansi_tsangan_split_bs( \
  101. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  102. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
  103. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
  104. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
  105. K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  106. K50, K51, K52, K66, K6B, K6D, K6E, K6F \
  107. ) { \
  108. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  109. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
  110. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
  111. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
  112. { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  113. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  114. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
  115. }
  116. #define LAYOUT_iso( \
  117. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  118. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
  119. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
  120. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
  121. K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  122. K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
  123. ) { \
  124. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  125. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
  126. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
  127. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
  128. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  129. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  130. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
  131. }
  132. #define LAYOUT_iso_split_bs( \
  133. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  134. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
  135. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
  136. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
  137. K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  138. K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
  139. ) { \
  140. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  141. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
  142. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
  143. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
  144. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  145. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  146. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
  147. }
  148. #define LAYOUT_iso_tsangan( \
  149. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  150. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
  151. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
  152. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
  153. K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  154. K50, K51, K52, K66, K6B, K6D, K6E, K6F \
  155. ) { \
  156. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  157. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
  158. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
  159. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
  160. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  161. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  162. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
  163. }
  164. #define LAYOUT_iso_tsangan_split_bs( \
  165. K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  166. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
  167. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
  168. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
  169. K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
  170. K50, K51, K52, K66, K6B, K6D, K6E, K6F \
  171. ) { \
  172. { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
  173. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
  174. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
  175. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
  176. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
  177. { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  178. { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
  179. }