whitefox.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /*
  2. Copyright 2014 Jun Wako <wakojun@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. #define XXX KC_NO
  17. /*
  18. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  19. * │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │
  20. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
  21. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  22. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┼───┤
  23. * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │
  24. * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
  25. * │    │   │   │   │   │   │   │   │   │   │   │   │      │   │   │
  26. * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  27. * │    │    │    │                        │   │   │   │   │   │   │
  28. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  29. */
  30. #define LAYOUT_all( \
  31. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k14, k15, k16, \
  32. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k32, k33, \
  33. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k47, k48, k50, \
  34. k51, k52, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  35. k67, k68, k70, k71, k72, k73, k74, k75, k76, k77 \
  36. ) { \
  37. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  38. { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
  39. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  40. { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
  41. { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
  42. { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
  43. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  44. { k70, k71, k72, k73, k74, k75, k76, k77, XXX } \
  45. }
  46. /*
  47. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
  48. * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │   │
  49. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  50. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  51. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  52. * │      │   │   │   │   │   │   │   │   │   │   │   │        │   │
  53. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  54. * │        │   │   │   │   │   │   │   │   │   │   │      │   │   │
  55. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  56. * │    │    │    │                        │   │   │   │   │   │   │
  57. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  58. */
  59. #define LAYOUT_65_ansi( \
  60. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k15, k16, \
  61. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k32, k33, \
  62. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k48, k50, \
  63. k51, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  64. k67, k68, k70, k71, k72, k73, k74, k75, k76, k77 \
  65. ) { \
  66. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  67. { k10, k11, k12, k13, XXX, k15, k16, k17, k18 }, \
  68. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  69. { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
  70. { k40, k41, k42, k43, k44, k45, k46, XXX, k48 }, \
  71. { k50, k51, XXX, k53, k54, k55, k56, k57, k58 }, \
  72. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  73. { k70, k71, k72, k73, k74, k75, k76, k77, XXX } \
  74. }
  75. /*
  76. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
  77. * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │   │
  78. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  79. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  80. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  81. * │      │   │   │   │   │   │   │   │   │   │   │   │        │   │
  82. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  83. * │        │   │   │   │   │   │   │   │   │   │   │      │   │   │
  84. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
  85. * │    │    │    │                        │    │    │ │   │   │   │
  86. * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
  87. */
  88. #define LAYOUT_65_ansi_blocker( \
  89. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k15, k16, \
  90. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k32, k33, \
  91. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k48, k50, \
  92. k51, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  93. k67, k68, k70, k71, k72, k73, k75, k76, k77 \
  94. ) { \
  95. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  96. { k10, k11, k12, k13, XXX, k15, k16, k17, k18 }, \
  97. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  98. { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
  99. { k40, k41, k42, k43, k44, k45, k46, XXX, k48 }, \
  100. { k50, k51, XXX, k53, k54, k55, k56, k57, k58 }, \
  101. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  102. { k70, k71, k72, k73, XXX, k75, k76, k77, XXX } \
  103. }
  104. /*
  105. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  106. * │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │
  107. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
  108. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  109. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  110. * │      │   │   │   │   │   │   │   │   │   │   │   │        │   │
  111. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  112. * │        │   │   │   │   │   │   │   │   │   │   │      │   │   │
  113. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
  114. * │    │    │    │                        │    │    │ │   │   │   │
  115. * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
  116. */
  117. #define LAYOUT_65_ansi_blocker_split_bs( \
  118. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k14, k15, k16, \
  119. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k32, k33, \
  120. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k48, k50, \
  121. k51, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  122. k67, k68, k70, k71, k72, k73, k75, k76, k77 \
  123. ) { \
  124. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  125. { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
  126. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  127. { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
  128. { k40, k41, k42, k43, k44, k45, k46, XXX, k48 }, \
  129. { k50, k51, XXX, k53, k54, k55, k56, k57, k58 }, \
  130. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  131. { k70, k71, k72, k73, XXX, k75, k76, k77, XXX } \
  132. }
  133. /*
  134. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
  135. * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │   │
  136. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  137. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  138. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    ├───┤
  139. * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │
  140. * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
  141. * │    │   │   │   │   │   │   │   │   │   │   │   │      │   │   │
  142. * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  143. * │    │    │    │                        │   │   │   │   │   │   │
  144. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  145. */
  146. #define LAYOUT_65_iso( \
  147. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k15, k16, \
  148. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k33, \
  149. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k47, k48, k50, \
  150. k51, k52, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  151. k67, k68, k70, k71, k72, k73, k74, k75, k76, k77 \
  152. ) { \
  153. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  154. { k10, k11, k12, k13, XXX, k15, k16, k17, k18 }, \
  155. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  156. { k30, k31, XXX, k33, k34, k35, k36, k37, k38 }, \
  157. { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
  158. { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
  159. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  160. { k70, k71, k72, k73, k74, k75, k76, k77, XXX } \
  161. }
  162. /*
  163. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
  164. * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │   │
  165. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  166. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  167. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    ├───┤
  168. * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │
  169. * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
  170. * │    │   │   │   │   │   │   │   │   │   │   │   │      │   │   │
  171. * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
  172. * │    │    │    │                        │    │    │ │   │   │   │
  173. * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
  174. */
  175. #define LAYOUT_65_iso_blocker( \
  176. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k15, k16, \
  177. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k33, \
  178. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k47, k48, k50, \
  179. k51, k52, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  180. k67, k68, k70, k71, k72, k73, k75, k76, k77 \
  181. ) { \
  182. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  183. { k10, k11, k12, k13, XXX, k15, k16, k17, k18 }, \
  184. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  185. { k30, k31, XXX, k33, k34, k35, k36, k37, k38 }, \
  186. { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
  187. { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
  188. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  189. { k70, k71, k72, k73, XXX, k75, k76, k77, XXX } \
  190. }
  191. /*
  192. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  193. * │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │
  194. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
  195. * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
  196. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    ├───┤
  197. * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │
  198. * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
  199. * │    │   │   │   │   │   │   │   │   │   │   │   │      │   │   │
  200. * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
  201. * │    │    │    │                        │    │    │ │   │   │   │
  202. * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
  203. */
  204. #define LAYOUT_65_iso_blocker_split_bs( \
  205. k00, k01, k02, k03, k04, k05, k06, k07, k08, k10, k11, k12, k13, k14, k15, k16, \
  206. k17, k18, k20, k21, k22, k23, k24, k25, k26, k27, k28, k30, k31, k33, \
  207. k34, k35, k36, k37, k38, k40, k41, k42, k43, k44, k45, k46, k47, k48, k50, \
  208. k51, k52, k53, k54, k55, k56, k57, k58, k60, k61, k62, k63, k64, k65, k66, \
  209. k67, k68, k70, k71, k72, k73, k75, k76, k77 \
  210. ) { \
  211. { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
  212. { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
  213. { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
  214. { k30, k31, XXX, k33, k34, k35, k36, k37, k38 }, \
  215. { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
  216. { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
  217. { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
  218. { k70, k71, k72, k73, XXX, k75, k76, k77, XXX } \
  219. }
  220. #define LAYOUT LAYOUT_all
  221. #define LAYOUT_aria LAYOUT_65_ansi_blocker
  222. #define LAYOUT_iso LAYOUT_65_iso
  223. #define LAYOUT_truefox LAYOUT_65_ansi_blocker_split_bs
  224. #define LAYOUT_vanilla LAYOUT_65_ansi