keymap.c 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. /* Copyright 2020 mtei
  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. #include QMK_KEYBOARD_H
  17. #include "util.h"
  18. #include "bootloader.h"
  19. #ifdef PROTOCOL_LUFA
  20. #include "lufa.h"
  21. #include "split_util.h"
  22. #endif
  23. #ifdef CONSOLE_ENABLE
  24. #include <print.h>
  25. #endif
  26. #include "layer_number.h"
  27. extern keymap_config_t keymap_config;
  28. extern uint8_t is_master;
  29. enum custom_keycodes {
  30. QWERTY = SAFE_RANGE,
  31. COLEMAK,
  32. DVORAK,
  33. EUCALYN,
  34. KEYPAD,
  35. xEISU,
  36. xKANA,
  37. ZERO2,
  38. RGBRST
  39. };
  40. #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
  41. //Macros
  42. #define KC_LOWER MO(_LOWER)
  43. #define XXXX XXXXXXX
  44. #define ____ _______
  45. #define KC_ADJ MO(_ADJUST)
  46. #define KC_LSMI LSFT(KC_MINS)
  47. #define KC_LSEQ LSFT(KC_EQL)
  48. #define KC_LSRB LSFT(KC_RBRC)
  49. #define KC_LSLB LSFT(KC_LBRC)
  50. #define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5
  51. #define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0
  52. #define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \
  53. KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC)
  54. #define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \
  55. LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER
  56. #if MATRIX_ROWS == 10 // HELIX_ROWS == 5
  57. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  58. /* Qwerty
  59. * ,-----------------------------------. ,-----------------------------------.
  60. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS |
  61. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  62. * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
  63. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  64. * | Ctrl| A | S | D | F | G | | H | J | K | L | ; |Ctrl |
  65. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  66. * |Shift| Z | X | C | V | B | ` | ' | N | M | , | . | / |Shift|
  67. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  68. * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower|
  69. * `-----------------------------------------------------------------------------------'
  70. */
  71. #define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T
  72. #define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P
  73. #define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G
  74. #define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN
  75. #define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B
  76. #define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
  77. [_QWERTY] = LAYOUT_wrapper( \
  78. KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \
  79. KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \
  80. KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \
  81. KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \
  82. L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \
  83. ),
  84. /* Colemak
  85. * ,-----------------------------------. ,-----------------------------------.
  86. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS |
  87. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  88. * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ |
  89. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  90. * | Ctrl| A | R | S | T | D | | H | N | E | I | O |Ctrl |
  91. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  92. * |Shift| Z | X | C | V | B | ` | ' | K | M | , | . | / |Shift|
  93. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  94. * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower|
  95. * `-----------------------------------------------------------------------------------'
  96. */
  97. #define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G
  98. #define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN
  99. #define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D
  100. #define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O
  101. #define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B
  102. #define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
  103. [_COLEMAK] = LAYOUT_wrapper( \
  104. KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \
  105. KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \
  106. KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \
  107. KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \
  108. L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \
  109. ),
  110. /* Dvorak
  111. * ,-----------------------------------. ,-----------------------------------.
  112. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS |
  113. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  114. * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ |
  115. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  116. * | Ctrl| A | O | E | U | I | | D | H | T | N | S |Ctrl |
  117. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  118. * |Shift| ; | Q | J | K | X | ` | / | B | M | W | V | Z |Shift|
  119. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  120. * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower|
  121. * `-----------------------------------------------------------------------------------'
  122. */
  123. #define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
  124. #define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L
  125. #define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I
  126. #define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S
  127. #define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X
  128. #define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z
  129. [_DVORAK] = LAYOUT_wrapper( \
  130. KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \
  131. KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \
  132. KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \
  133. KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \
  134. L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \
  135. ),
  136. /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout)
  137. * ,-----------------------------------. ,-----------------------------------.
  138. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS |
  139. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  140. * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ |
  141. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  142. * | Ctrl| A | O | E | I | U | | G | T | K | S | N |Ctrl |
  143. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  144. * |Shift| Z | X | C | V | F | ` | ' | B | H | J | L | / |Shift|
  145. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  146. * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower|
  147. * `-----------------------------------------------------------------------------------'
  148. */
  149. #define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN
  150. #define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P
  151. #define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U
  152. #define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N
  153. #define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F
  154. #define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH
  155. [_EUCALYN] = LAYOUT_wrapper( \
  156. KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \
  157. KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \
  158. KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \
  159. KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \
  160. L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \
  161. ),
  162. /* Keypad
  163. * ,-----------------------------------. ,-----------------------------------.
  164. * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * |
  165. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  166. * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 |
  167. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  168. * | 4 | 5 | 6 | - | F3 | F8 | | F3 | F8 | - | 4 | 5 | 6 |
  169. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  170. * | 1 | 2 | 3 | + | F4 | F9 | F11 | F11 | F4 | F9 | + | 1 | 2 | 3 |
  171. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  172. * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . |
  173. * `-----------------------------------------------------------------------------------'
  174. */
  175. #define KP_TOP KC_TAB, KC_PSLS, KC_PAST
  176. #define KP_789 KC_KP_7, KC_KP_8, KC_KP_9
  177. #define KP_456 KC_KP_4, KC_KP_5, KC_KP_6
  178. #define KP_123 KC_KP_1, KC_KP_2, KC_KP_3
  179. #define KP_BTM KC_KP_0, KC_COMM, KC_PDOT
  180. #define F_1_6 KC_F1, KC_F6
  181. #define F_2_7 KC_F2, KC_F7
  182. #define F_3_8 KC_F3, KC_F8
  183. #define F_4_9 KC_F4, KC_F9
  184. #define F_510 KC_F5, KC_F10
  185. #define FF12 LT(_PADFUNC,KC_F12)
  186. [_KEYPAD] = LAYOUT_wrapper( \
  187. KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \
  188. KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \
  189. KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \
  190. KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \
  191. KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \
  192. ),
  193. /* AUX modifier key layer
  194. * ,-----------------------------------. ,-----------------------------------.
  195. * | | | | | | | | | | | | | |
  196. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  197. * | | | | | | | | | | | | | |
  198. * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
  199. * | | | | | | | | | | | | | |
  200. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  201. * | | | | | | | | | | | | | | |
  202. * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
  203. * | | 00 | | | | | | | | | | | 00 | |
  204. * `-----------------------------------------------------------------------------------'
  205. */
  206. [_KAUX] = LAYOUT( \
  207. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  208. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  209. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  210. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  211. ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \
  212. ),
  213. /* Keypad function layer
  214. * ,-----------------------------------------. ,-----------------------------------------.
  215. * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | |
  216. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  217. * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | |
  218. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  219. * | |Delete|Insert| Left | Down | Right| | Left | Down | Right|Insert|Delete| |
  220. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  221. * | | | | End | | PgDn |Adjust|Adjust| PgDn | | End | | | |
  222. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  223. * | | | | | | | | | | | | | | |
  224. * `-------------------------------------------------------------------------------------------------'
  225. */
  226. #define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR
  227. #define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS
  228. #define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP
  229. #define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME
  230. #define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT
  231. #define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL
  232. #define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN
  233. [_PADFUNC] = LAYOUT_wrapper( \
  234. XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \
  235. XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \
  236. XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \
  237. XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \
  238. XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \
  239. ),
  240. /* Lower
  241. * ,-----------------------------------------. ,-----------------------------------------.
  242. * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
  243. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  244. * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 |
  245. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  246. * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | |
  247. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  248. * | | PgDn | Left | Down | Right| End |Adjust|Adjust| End | Left | Down | Right| PgDn | |
  249. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  250. * | | | PrtSc| | | | | | | | | PrtSc| | |
  251. * `-------------------------------------------------------------------------------------------------'
  252. */
  253. #define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
  254. #define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11
  255. #define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS
  256. #define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS
  257. #define _ADJ_ADJ KC_ADJ, KC_ADJ
  258. #define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP
  259. #define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP
  260. #define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN
  261. #define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END
  262. [_LOWER] = LAYOUT_wrapper( \
  263. XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \
  264. XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \
  265. ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \
  266. ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \
  267. ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \
  268. ),
  269. /* Raise
  270. * ,-----------------------------------------. ,-----------------------------------------.
  271. * | | | | | | | | | | | | | |
  272. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  273. * | | | | | _ | - | | = | + | | | | |
  274. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  275. * | | | | | { | [ | | ] | } | | | | |
  276. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  277. * | | | | | | EISU | EISU | KANA | KANA | Next | Vol- | Vol+ | Play | |
  278. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  279. * | | | | | | | | | | | | | | |
  280. * `-------------------------------------------------------------------------------------------------'
  281. */
  282. #define _LSMI_MINS KC_LSMI, KC_MINS
  283. #define _EQL_LSEQ KC_EQL, KC_LSEQ
  284. #define _LSLB_LBRC KC_LSLB, KC_LBRC
  285. #define _RBRC_LSRB KC_RBRC, KC_LSRB
  286. #define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
  287. [_RAISE] = LAYOUT_wrapper( \
  288. XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \
  289. XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \
  290. ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \
  291. ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \
  292. _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \
  293. ),
  294. /* Adjust (Lower + Raise)
  295. * ,-----------------------------------------. ,-----------------------------------------.
  296. * | |Keypad|Dvorak|Colemk|Euclyn|Qwerty| |Qwerty|Euclyn|Colemk|Dvorak|Keypad| |
  297. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  298. * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win |Aud on|RGB ON|RGBRST| | |
  299. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  300. * | HUE+ | SAT+ | VAL+ |RGB md|Audoff| Mac | | Mac |Audoff|RGB md| VAL+ | SAT+ | HUE+ |
  301. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  302. * | HUE- | SAT- | VAL- | | | | | | | | | VAL- | SAT- | HUE- |
  303. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  304. * | | | | | | | | | | | | | | |
  305. * `-------------------------------------------------------------------------------------------------'
  306. */
  307. [_ADJUST] = LAYOUT( \
  308. XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \
  309. XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \
  310. RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \
  311. RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \
  312. _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \
  313. ),
  314. /* AUX modifier key layer
  315. * ,-----------------------------------------. ,-----------------------------------------.
  316. * | | | | | | | | | | | | | |
  317. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  318. * | | | | | | | | | | | | | |
  319. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  320. * | | | | | | | | | | | | | |
  321. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  322. * | | | | | | | | | | | | | | |
  323. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  324. * | | | | | | BS | Enter| | | | | | | |
  325. * `-------------------------------------------------------------------------------------------------'
  326. */
  327. #define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT)
  328. [_AUX] = LAYOUT_wrapper( \
  329. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  330. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  331. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  332. ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
  333. ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \
  334. )
  335. };
  336. #else
  337. #error "undefined keymaps"
  338. #endif
  339. int current_default_layer;
  340. uint32_t default_layer_state_set_user(uint32_t state) {
  341. current_default_layer = biton32(state);
  342. return state;
  343. }
  344. void update_base_layer(int base)
  345. {
  346. if( current_default_layer != base ) {
  347. eeconfig_update_default_layer(1UL<<base);
  348. default_layer_set(1UL<<base);
  349. layer_off(_AUX);
  350. layer_off(_KAUX);
  351. } else {
  352. if( base < _KEYPAD )
  353. layer_invert(_AUX);
  354. else
  355. layer_invert(_KAUX);
  356. }
  357. }
  358. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  359. switch (keycode) {
  360. case QWERTY:
  361. if (record->event.pressed) {
  362. update_base_layer(_QWERTY);
  363. }
  364. return false;
  365. break;
  366. case COLEMAK:
  367. if (record->event.pressed) {
  368. update_base_layer(_COLEMAK);
  369. }
  370. return false;
  371. break;
  372. case DVORAK:
  373. if (record->event.pressed) {
  374. update_base_layer(_DVORAK);
  375. }
  376. return false;
  377. break;
  378. case EUCALYN:
  379. if (record->event.pressed) {
  380. update_base_layer(_EUCALYN);
  381. }
  382. return false;
  383. break;
  384. case KEYPAD:
  385. if (record->event.pressed) {
  386. update_base_layer(_KEYPAD);
  387. }
  388. return false;
  389. break;
  390. case ZERO2:
  391. if (record->event.pressed) {
  392. SEND_STRING("00");
  393. }
  394. return false;
  395. break;
  396. case xEISU:
  397. if (record->event.pressed) {
  398. if(keymap_config.swap_lalt_lgui==false){
  399. register_code(KC_LANG2);
  400. }else{
  401. SEND_STRING(SS_LALT("`"));
  402. }
  403. } else {
  404. unregister_code(KC_LANG2);
  405. }
  406. return false;
  407. break;
  408. case xKANA:
  409. if (record->event.pressed) {
  410. if(keymap_config.swap_lalt_lgui==false){
  411. register_code(KC_LANG1);
  412. }else{
  413. SEND_STRING(SS_LALT("`"));
  414. }
  415. } else {
  416. unregister_code(KC_LANG1);
  417. }
  418. return false;
  419. break;
  420. case RGBRST:
  421. #ifdef RGBLIGHT_ENABLE
  422. if (record->event.pressed) {
  423. eeconfig_update_rgblight_default();
  424. rgblight_enable();
  425. }
  426. #endif
  427. break;
  428. }
  429. return true;
  430. }
  431. void matrix_init_user(void) {
  432. INIT_HELIX_OLED(); /* define in layer_number.h */
  433. }