v1p3.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. /* Copyright 2020 noroadsleft
  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. /*
  19. * So... to be perfectly honest, I'm guessing at these based on a KBFirmware
  20. * JSON file and photos of the PCB from a user on QMK Discord.
  21. *
  22. * This board has the most unusual matrix wiring I've seen on any mechanical
  23. * keyboard PCB. The 2u Backspace doesn't share its matrix position with either
  24. * of the keys used in a split Backspace. Left GUI and Left Alt are on
  25. * different columns depending on how large the Left Ctrl key is (which could be
  26. * as wide as 1.75u). I don't have much idea what's going on in the bottom right
  27. * corner. Pretty much everything in the drawings below is basically a
  28. * semi-educated guess.
  29. *
  30. * Sorry if you're coming in here after the fact. I don't have the PCB on-hand.
  31. *
  32. * - noroadsleft
  33. *
  34. * ┌───────┐
  35. * 2u Backspace │0E │
  36. * └───────┘
  37. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ANSI Enter ISO Enter
  38. * ANSI LSft │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0F │ ┌─────┐ ┌─────┐
  39. * ┌────────┐ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ │1D │ │2D │
  40. * │30 │ ─┐ │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ ┌──┴─────┤ ┌──┴┐ │
  41. * └────────┘ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ │2D │ │2C │ │
  42. * ISO LSft │ │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ └────────┘ └───┴────┘
  43. * ┌────┬───┐ │ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ ┌──────────┐
  44. * │30 │31 │ ─┼> │LSft │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │3D │3F │ │3D │ ANSI RSft
  45. * └────┴───┘ │ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ └──────────┘
  46. * 2u LSft │ │40 │41 │43 │48 │4A │4B │4C │4E │4F │ ┌───┬───┬───┐
  47. * ┌───────┐ │ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ │3B │3D │3F │ 3x1u "RSft"
  48. * │30 │ ─┘ └───┴───┴───┘
  49. * └───────┘ ┌──────┬───┐
  50. * │3E │3F │ HHKB RSft
  51. * └──────┴───┘
  52. * ┌──────┬────┬────┬────┬───────────┬────┬────┬───┬───┬───┬───┐
  53. * │40 │42 │44 │45 │48 │49 │4A │4B │4C │4E │4F │ Minila
  54. * └──────┴────┴────┴────┴───────────┴────┴────┴───┴───┴───┴───┘
  55. * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐
  56. * │40 │41 │43 │48 │4A │4B │4D │4F │ Standard
  57. * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
  58. * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
  59. * │40 │41 │43 │48 │4B │4D │4F │ Tsangan/HHKB
  60. * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
  61. * ┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐
  62. * │40 │41 │43 │48 │4B │4C │4E │4F │
  63. * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
  64. * ┌─────┬───┬─────┬───────────────────────┬─────┬─────┬───┬───┐
  65. * │40 │41 │43 │48 │4A │4C │4E │4F │
  66. * └─────┴───┴─────┴───────────────────────┴─────┴─────┴───┴───┘
  67. */
  68. #define LAYOUT_all( \
  69. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
  70. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  71. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
  72. K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
  73. K40, K41, K42, K43, K44, K45, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F \
  74. ) { \
  75. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
  76. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  77. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO }, \
  78. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
  79. { K40, K41, K42, K43, K44, K45, KC_NO, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
  80. }
  81. #define LAYOUT_60_ansi( \
  82. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
  83. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  84. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  85. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
  86. K40, K41, K43, K48, K4A, K4B, K4D, K4F \
  87. ) { \
  88. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
  89. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  90. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
  91. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO }, \
  92. { K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, KC_NO, K4D, KC_NO, K4F }, \
  93. }
  94. #define LAYOUT_60_ansi_arrow( \
  95. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
  96. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  97. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  98. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3F, \
  99. K40, K41, K43, K48, K4A, K4B, K4C, K4E, K4F \
  100. ) { \
  101. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
  102. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  103. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
  104. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, KC_NO, K3F }, \
  105. { K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, K4C, KC_NO, K4E, K4F }, \
  106. }
  107. #define LAYOUT_60_ansi_arrow_split_bs( \
  108. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  109. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  110. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  111. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3F, \
  112. K40, K41, K43, K48, K4A, K4B, K4C, K4E, K4F \
  113. ) { \
  114. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
  115. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  116. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
  117. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, KC_NO, K3F }, \
  118. { K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, K4C, KC_NO, K4E, K4F }, \
  119. }
  120. #define LAYOUT_60_ansi_tsangan( \
  121. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
  122. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  123. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  124. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
  125. K40, K41, K43, K48, K4B, K4D, K4F \
  126. ) { \
  127. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
  128. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  129. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
  130. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO }, \
  131. { K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, KC_NO, K4B, KC_NO, K4D, KC_NO, K4F }, \
  132. }
  133. #define LAYOUT_60_hhkb( \
  134. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
  135. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  136. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  137. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
  138. K41, K43, K48, K4B, K4D \
  139. ) { \
  140. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
  141. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  142. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
  143. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, KC_NO, K3E, K3F }, \
  144. { KC_NO, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, KC_NO, K4B, KC_NO, K4D, KC_NO, KC_NO }, \
  145. }
  146. #define LAYOUT_64_ansi( \
  147. K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
  148. K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
  149. K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
  150. K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
  151. K40, K41, K43, K48, K4A, K4B, K4C, K4E, K4F \
  152. ) { \
  153. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
  154. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
  155. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
  156. { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F }, \
  157. { K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, K4C, KC_NO, K4E, K4F }, \
  158. }