fms.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /* Copyright 2022 Gondolindrim
  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. #define ___ KC_NO
  18. #include "quantum.h"
  19. /*
  20. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
  21. * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │5D │ │0E │ 2u Backspace
  22. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
  23. * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
  24. * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter
  25. * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │
  26. * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤
  27. * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
  28. * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘
  29. * │40 │41 │42 │56 │59 │5A │5B │5C │ Standard
  30. * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
  31. * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
  32. * │40 │41 │42 │56 │59 │5B │5C │ Tsangan/WKL/HHKB
  33. * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
  34. * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
  35. * │40 │ │42 │56 │59 │ │5C │ WKL
  36. * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
  37. * ┌───┬─────┬───────────────────────────┬─────┬───┐
  38. * │41 │42 │56 │59 │5B │ ˂──── HHKB
  39. * └───┴─────┴───────────────────────────┴─────┴───┘
  40. * ┌─────┬───┬───────────────────────────────────────┬───┬─────┐
  41. * │40 │41 │56 │5B │5C │ Tsangan 10u Space
  42. * └─────┴───┴───────────────────────────────────────┴───┴─────┘
  43. * ┌─────┬───┬───────────────────────────────────────┬───┬─────┐
  44. * │40 │ │56 │ │5C │ WKL 10u Space
  45. * └─────┘ └───────────────────────────────────────┘ └─────┘
  46. * ┌───┬───────────────────────────────────────┬───┐
  47. * │41 │56 │5B │ ˂──── HHKB 10u Space
  48. * └───┴───────────────────────────────────────┴───┘
  49. */
  50. #define LAYOUT_all( \
  51. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  52. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  53. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  54. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  55. K40, K41, K42, K56, K59, K5A, K5B, K5C \
  56. )\
  57. {\
  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, K2C, K2D }, \
  61. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  62. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  63. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D } \
  64. }
  65. #define LAYOUT_60_ansi( \
  66. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
  67. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  68. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  69. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  70. K40, K41, K42, K56, K59, K5A, K5B, K5C \
  71. )\
  72. {\
  73. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  74. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  75. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  76. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
  77. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  78. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, ___ } \
  79. }
  80. #define LAYOUT_60_ansi_split_bs_rshift( \
  81. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  82. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  83. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  84. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  85. K40, K41, K42, K56, K59, K5A, K5B, K5C \
  86. )\
  87. {\
  88. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  89. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  90. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  91. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  92. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  93. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D } \
  94. }
  95. #define LAYOUT_60_ansi_tsangan( \
  96. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
  97. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  98. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  99. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  100. K40, K41, K42, K56, K59, K5B, K5C \
  101. )\
  102. {\
  103. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  104. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  105. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  106. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
  107. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  108. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, ___ } \
  109. }
  110. #define LAYOUT_60_tsangan_hhkb( \
  111. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  112. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  113. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  114. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  115. K40, K41, K42, K56, K59, K5B, K5C \
  116. )\
  117. {\
  118. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  119. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  120. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  121. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  122. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  123. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D } \
  124. }
  125. #define LAYOUT_60_ansi_wkl( \
  126. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
  127. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  128. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  129. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  130. K40, K42, K56, K59, K5C \
  131. )\
  132. {\
  133. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  134. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  135. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  136. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
  137. { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  138. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, ___ } \
  139. }
  140. #define LAYOUT_60_ansi_wkl_split_bs_rshift( \
  141. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  142. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  143. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  144. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  145. K40, K42, K56, K59, K5C \
  146. )\
  147. {\
  148. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  149. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  150. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  151. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  152. { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  153. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, K5D } \
  154. }
  155. #define LAYOUT_60_hhkb( \
  156. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  157. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  158. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  159. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  160. K41, K42, K56, K59, K5B \
  161. )\
  162. {\
  163. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  164. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  165. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  166. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  167. { ___, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  168. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, ___, K5D } \
  169. }
  170. #define LAYOUT_60_tsangan_hhkb_10u_space( \
  171. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  172. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  173. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  174. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  175. K40, K41, K56, K5B, K5C \
  176. )\
  177. {\
  178. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  179. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  180. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  181. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  182. { K40, K41, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  183. { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D } \
  184. }
  185. #define LAYOUT_60_hhkb_10u_space( \
  186. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  187. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  188. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  189. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  190. K41, K56, K5B \
  191. )\
  192. {\
  193. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  194. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  195. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  196. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  197. { ___, K41, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  198. { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, ___, K5B, ___, K5D } \
  199. }
  200. #define LAYOUT_60_ansi_wkl_split_bs_rshift_10u_space( \
  201. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  202. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  203. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  204. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  205. K40, K56, K5C \
  206. )\
  207. {\
  208. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  209. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
  210. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
  211. { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  212. { K40, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  213. { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, ___, ___, K5C, K5D } \
  214. }
  215. #define LAYOUT_60_iso( \
  216. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
  217. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  218. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  219. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  220. K40, K41, K42, K56, K59, K5A, K5B, K5C \
  221. )\
  222. {\
  223. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  224. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___ }, \
  225. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
  226. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
  227. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  228. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, ___ } \
  229. }
  230. #define LAYOUT_60_iso_split_bs_rshift( \
  231. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  232. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  233. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  234. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  235. K40, K41, K42, K56, K59, K5A, K5B, K5C \
  236. )\
  237. {\
  238. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  239. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___ }, \
  240. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
  241. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  242. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  243. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D } \
  244. }
  245. #define LAYOUT_60_iso_tsangan( \
  246. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
  247. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  248. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  249. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  250. K40, K41, K42, K56, K59, K5B, K5C \
  251. )\
  252. {\
  253. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  254. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___ }, \
  255. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
  256. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
  257. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  258. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, ___ } \
  259. }
  260. #define LAYOUT_60_iso_tsangan_split_bs_rshift( \
  261. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  262. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  263. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  264. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  265. K40, K41, K42, K56, K59, K5B, K5C \
  266. )\
  267. {\
  268. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  269. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___ }, \
  270. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
  271. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  272. { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  273. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D } \
  274. }
  275. #define LAYOUT_60_iso_wkl( \
  276. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
  277. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  278. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  279. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  280. K40, K42, K56, K59, K5C \
  281. )\
  282. {\
  283. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  284. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___ }, \
  285. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
  286. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
  287. { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  288. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, ___ } \
  289. }
  290. #define LAYOUT_60_iso_wkl_split_bs_rshift( \
  291. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
  292. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  293. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  294. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
  295. K40, K42, K56, K59, K5C \
  296. )\
  297. {\
  298. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
  299. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___ }, \
  300. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
  301. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
  302. { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
  303. { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, K5D } \
  304. }