2
0

espectro.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /* Copyright 2018 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
  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. * Placement of every possible switch defined below.
  20. * x2 means the diode allows two possible positions for the switch
  21. *
  22. * Layout:
  23. * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  24. * │K00 │K01 │K02 │K03 │K04 │K60 │K61 │K62 │K63 │K05 │K06 │K07 │K08 │K72 │K09 │K0A │K0B │K0C │K7C │
  25. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
  26. * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
  27. * │K10 │K11 │K12 │K13 │K14 │K64 │K65 │K66 │K67 │K15 │K16 │K17 │K18 │K70 │K71 │K19 │K1A │K1B │K1C │
  28. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │x2 │ │ │ │ │
  29. * ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┼─────┼─────┼─────┤ ┌────────┐
  30. * │K20 │K21 │K22 │K23 │K24 │K68 │K69 │K6A │K6B │K25 │K26 │K27 │K28 │K73 │K29 │K2A │K2B │K2C │ │K38 │
  31. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
  32. * ├────────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴────────┼─────┼─────┼─────┼─────┤ ┌───┴─┐ │
  33. * │K30 │K31 │K32 │K33 │K34 │K6C │K75 │K76 │K77 │K35 │K36 │K37 │K38 │K39 │K3A │K3B │K3C │ │K73 │ │
  34. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
  35. * ├───────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──────┬─────┼─────┼─────┼─────┼─────┤ └─────┴──────┘
  36. * │K40x2 │K41 │K42 │K43 │K44 │K78 │K79 │K7A │K7B │K45 │K46 │K47 │K48 │K74 │K49 │K4A │K4B │K4C │
  37. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
  38. * ├───────┼─────┴─┬───┴───┬─┴─────┴─────┴─────┴─────┴─────┴───┬─┴───┬─┴───┬─┴───┬─────┼─────┼─────┼─────┼─────┼─────┤
  39. * │K50 │K51 │K52 │K59 │K55 │K56 │K57 │K58 │K53 │K54 │K5A │K5B │K5C │
  40. * │x2 │x2 │ │x3 │x3 │x2 │x2 │x2 │x2 │ │x2 │ │ │
  41. * └───────┴───────┴───────┴───────────────────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  42. *
  43. * Variants:
  44. * - 2u Backspace: Delete K70 Use K71
  45. * - 2u Num +: Delete K3C Use K2C
  46. * - 2u Num Enter: Delete K5C Use K4C
  47. * - ANSI Left Shift: Delete K41 Use K40
  48. *
  49. * ANSI Backslash and ISO Hash are the same position
  50. * ANSI Enter and ISO Enter are the same position
  51. * For two 1.5u modifiers on the right of the Spacebar, delete K56 and use K55 and K57
  52. *
  53. * Matrix:
  54. * { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
  55. * { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
  56. * { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
  57. * { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C }, \
  58. * { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
  59. * { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
  60. * { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
  61. * { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
  62. */
  63. /* LAYOUT_all (Identical to LAYOUT_split_shift_and_bs)
  64. * Every matrix position
  65. * ,---------------------------------------------------------------------------.
  66. * | 00| 01| 02| 03| 04| 60| 61| 62| 63| 05| 06| 07| 08| 72| 09| 0A| 0B| 0C| 7C|
  67. * |---------------------------------------------------------------------------|
  68. * | 10| 11| 12| 13| 14| 64| 65| 66| 67| 15| 16| 17| 18| 70| 71| 19| 1A| 1B| 1C|
  69. * |---------------------------------------------------------------------------|
  70. * | 20 | 21| 22| 23| 24| 68| 69| 6A| 6B| 25| 26| 27| 28| 73| 29| 2A| 2B| 2C|
  71. * |---------------------------------------------------------------------------|
  72. * | 30 | 31| 32| 33| 34| 6C| 75| 76| 77| 35| 36| 37| 38| 39| 3A| 3B| 3C|
  73. * |---------------------------------------------------------------------------|
  74. * | 40 | 41| 42| 43| 44| 78| 79| 7A| 7B| 45| 46| 47| 48| 74| 49| 4A| 4B| 4C|
  75. * |---------------------------------------------------------------------------|
  76. * | 50 | 51 | 52 | 59 | 55| 56| 57| 58| 53| 54| 5A| 5B| 5C|
  77. * `---------------------------------------------------------------------------'
  78. */
  79. //Arrow keys and 1.75u right shift
  80. #define LAYOUT_default( \
  81. K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
  82. K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K71, K19, K1A, K1B, K1C, \
  83. K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
  84. K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, \
  85. K40, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
  86. K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B \
  87. ) { \
  88. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
  89. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
  90. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
  91. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
  92. { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
  93. { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, KC_NO }, \
  94. { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
  95. { KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
  96. }
  97. // Split numpad (enter, 0), split shifts (right, left), split backspace
  98. // This layout contains every possible keycode placement
  99. #define LAYOUT_split_shift_and_bs( \
  100. K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
  101. K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K70, K71, K19, K1A, K1B, K1C, \
  102. K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
  103. K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
  104. K40, K41, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
  105. K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B, K5C \
  106. ) { \
  107. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
  108. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
  109. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
  110. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C }, \
  111. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
  112. { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
  113. { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
  114. { K71, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C }, \
  115. }
  116. // ISO Layout
  117. #define LAYOUT_iso( \
  118. K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
  119. K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K71, K19, K1A, K1B, K1C, \
  120. K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
  121. K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K73, K38, K39, K3A, K3B, \
  122. K40, K41, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
  123. K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B \
  124. ) { \
  125. { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
  126. { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
  127. { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
  128. { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
  129. { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
  130. { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, KC_NO }, \
  131. { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
  132. { KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
  133. }