keymap.c 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. #include "lets_split.h"
  2. #include "action_layer.h"
  3. #include "eeconfig.h"
  4. extern keymap_config_t keymap_config;
  5. #define _COLEMAK 0
  6. #define _KAMELOC 1
  7. #define _IKAPILA 2
  8. #define _IKASHFT 3
  9. #define _ARROWKY 4
  10. #define _FNCTION 5
  11. #define _NINEKEY 6
  12. #define _NAVIGAT 7
  13. #define _QWERTY 8
  14. #define _MLAYER 9
  15. #define _GRVTABL 15
  16. enum custom_keycodes {
  17. COLEMAK = SAFE_RANGE,
  18. KAMELOC,
  19. IKAPILA,
  20. IKASHFT,
  21. ARROWKY,
  22. FNCTION,
  23. NINEKEY,
  24. NAVIGAT,
  25. QWERTY,
  26. MLAYER,
  27. GRVTABL,
  28. };
  29. //TD Declarations
  30. enum {
  31. VOM = 0,
  32. PRN,
  33. EGT,
  34. HRD,
  35. XRD,
  36. DSH,
  37. ESC,
  38. EQE,
  39. PGN,
  40. HND,
  41. COD,
  42. UND,
  43. F11,
  44. F12,
  45. F13,
  46. F14,
  47. F15,
  48. F16,
  49. F17,
  50. F18,
  51. F19,
  52. F20,
  53. //unicode_inputctl
  54. LINUX,
  55. WIN,
  56. WINSH,
  57. OSX,
  58. };
  59. #define _______ KC_TRNS
  60. #define XXXXXXX KC_NO
  61. // action-TAP for key/mod behavior LT(layer, KC)
  62. #define XK_TAB LT(_FNCTION, KC_TAB)
  63. #define XK_BSP LT(_KAMELOC, KC_BSPC)
  64. #define XK_APO LT(_KAMELOC, KC_QUOT)
  65. #define XK_SPC LT(_IKAPILA, KC_SPC)
  66. #define XK_ENT LT(_IKAPILA, KC_ENT)
  67. #define XK_PGDN LT(_IKASHFT, KC_PGDN)
  68. #define XK_PGUP LT(_IKASHFT, KC_PGUP)
  69. #define PIPBOY LT(_FNCTION, KC_BSLS)
  70. #define XK_DEL LT(_IKASHFT, KC_DEL)
  71. #define XK_GRV LT(_GRVTABL, KC_GRV)
  72. // mod-TAP for mod/key behavior MT(modkey, KC)
  73. #define ALT_IT MT(MOD_RALT, KC_SCLN)
  74. #define CTL_IT MT(MOD_RCTL, KC_DOT)
  75. #define SFT_ENT MT(MOD_RSFT, KC_ENT)
  76. //sticky modifiers
  77. #define KYCTL OSM(MOD_LCTL)
  78. #define KYSFT OSM(MOD_LSFT)
  79. #define CAKY OSM(MOD_LCTL | MOD_LALT)
  80. //shortcuts
  81. #define CADEL LALT(LCTL(KC_DEL))
  82. #define CAINS LALT(LCTL(KC_INS))
  83. #define TGNKRO MAGIC_TOGGLE_NKRO
  84. #define NAVCH LCTL(KC_HOME)
  85. #define NAVCPD LCTL(KC_PGDN)
  86. #define NAVCPU LCTL(KC_PGUP)
  87. #define NAVCE LCTL(KC_END)
  88. #define NAVCU LCTL(KC_UP)
  89. #define NAVCD LCTL(KC_DOWN)
  90. #define NAVCL LCTL(KC_LEFT)
  91. #define NAVCR LCTL(KC_RGHT)
  92. #define NAVGU LGUI(KC_UP)
  93. #define NAVGD LGUI(KC_DOWN)
  94. #define NAVGL LGUI(KC_LEFT)
  95. #define NAVGR LGUI(KC_RGHT)
  96. #define KC_NDSH LCTL(KC_PMNS)
  97. #define KC_MDSH LALT(LCTL(KC_PMNS))
  98. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  99. /*
  100. TAP
  101. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  102. │TAB │ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │DEL │
  103. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  104. │BKSP│ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │
  105. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  106. │OSFT│ X │ C │ D │ V │ Z │ │ K │ H │ , │ │ . │ / │
  107. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  108. │OCTL│GUI │ESC │ALT │PGUP│SPC │ │ENT │PGDN│ () │ {} │ \ │ ` │
  109. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  110. HOLD
  111. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  112. │L FN│ │ │ │ │ │ │ │ │ │ │ALT │L!@#│
  113. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  114. │L OH│ │ │ │ │ │ │ │ │ │ │ │L OH│
  115. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  116. │SFT │ │ │ │ │ │ │ │ │ │ │CTL │SFT │
  117. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  118. │CTL │GUI │ESC │ALT │L!@#│L123│ │L123│L!@#│L M│ │L FN│LGRV│
  119. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  120. DOUBLETAP
  121. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  122. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  123. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  124. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  125. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  126. │OSML│ │ │ │ │ │ │ │ │ │ │ │ │
  127. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  128. │OSML│OSML│!F4 │ │ │ │ │ │ │ │ │ │ │
  129. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  130. Switch type
  131. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  132. │Br │mxC │Z │Z │Z │Z │ │Z │Z │Z │Z │Br │G │
  133. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  134. │G │Z │Z │Z │Z │Z │ │Z │Z │Z │Z │Z │Z │
  135. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  136. │Y │Z │Z │Z │Z │Z │ │Z │Z │Z │B │B │Y │
  137. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  138. │Y │Y │mxC │Z │BLK │BLK │ │BLK │BLK │Z │Z │B │G │
  139. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  140. with DCS keycaps
  141. Top Row R1 (reversed?)
  142. M Row1 R3 (with reversed pointer finger)
  143. M Row2 R4
  144. B Row R2 (reversed)
  145. */
  146. // Colemak PB&J (Mod-DH)
  147. [_COLEMAK] = KEYMAP( \
  148. XK_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, ALT_IT, XK_DEL, \
  149. XK_BSP, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, XK_APO, \
  150. KYSFT, KC_X, KC_C, KC_D, KC_V, KC_Z, KC_K, KC_H, TD(COD), KC_DOT, CTL_IT, SFT_T(KC_SLSH), \
  151. KYCTL, KC_LGUI, TD(ESC), KC_LALT, XK_PGUP, XK_SPC, XK_ENT, XK_PGDN, MO(_MLAYER), TT(_NAVIGAT), PIPBOY, XK_GRV \
  152. ),
  153. // useful for one-handed typing
  154. [_KAMELOC] = KEYMAP( \
  155. XK_DEL, KC_SCLN, KC_Y, KC_U, KC_L, KC_J, KC_B, KC_P, KC_F, KC_W, KC_Q, XK_TAB, \
  156. _______, KC_O, KC_I, KC_E, KC_N, KC_M, KC_G, KC_T, KC_S, KC_R, KC_A, _______, \
  157. KYSFT, KC_SLSH, KC_DOT, KC_COMM, KC_H, KC_K, TD(UND), KC_V, KC_D, KC_C, KC_X, KYSFT, \
  158. XK_GRV, PIPBOY, M(1), KC_BTN1, KC_HOME, KC_ENT, KC_ENT, KC_END, KC_LGUI, TD(ESC), KC_LALT, KYCTL \
  159. ),
  160. /*
  161. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  162. │ │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ │
  163. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  164. │ │ M │ V- │ V+ │NEXT│PLAY│ │ ← │ ↓ │ ↑ │ → │DASH│INS │
  165. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  166. │ │ - │ = │TGL │ │ │ │HOME│END │HOME│ │ \ │ ~ │
  167. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  168. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  169. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  170. */
  171. [_IKAPILA] = KEYMAP( \
  172. _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
  173. _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, TD(DSH), KC_INS, \
  174. _______, KC_MINS, KC_EQL, XXXXXXX, XXXXXXX, LCTL(KC_Z), KC_HOME, TD(HND), KC_HOME, XXXXXXX, KC_BSLS, KC_TILD, \
  175. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
  176. ),
  177. /*
  178. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  179. │ │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ( │ ) │BSPC│
  180. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  181. │DEL │ │ ← │ ↓ │ ↑ │ → │ │NEXT│PGUP│ V+ │ V- │DASH│PSCR│
  182. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  183. │ │ _ │ + │END │HOME│END │ │ │ │ │ [ │ ] │ │
  184. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  185. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  186. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  187. */
  188. [_IKASHFT] = KEYMAP( \
  189. _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
  190. KC_DEL, TD(PGN), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MNXT, KC_PGUP, KC_VOLU, TD(VOM), KC_MDSH, KC_PSCR, \
  191. _______, KC_UNDS, KC_PLUS, KC_END, KC_HOME, KC_END, M(1), M(0), M(2), KC_LBRC, KC_RBRC, _______, \
  192. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
  193. ),
  194. /*
  195. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  196. │ │ → │ ↑ │ ← │ ↓ │ → │ │ → │ ↓ │ ← │ ↑ │ ↑ │ │ just in case someone hacks my IP with a 10MeG pipe, you know?
  197. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  198. │ │ ← │ ↓ │ → │ ↑ │ ← │ │ ↑ │ ← │ ↓ │ → │ ← │ │ hacker_evasion layer
  199. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ >>init network SEQUENCE
  200. │ │ ↑ │ ← │ ↓ │ → │ ↑ │ │ ↓ │ ← │ ↑ │ → │ ← │ │ sleep 11; echo "DONE\n"
  201. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ throttle INPUT 11001001 OUTPUT 010011001 ? FULL )); \
  202. │ │ │ │ → │ ← │ ↓ │ │ → │ ↑ │ ← │ ↓ │ ↑ │ │ <<chKConfig cargoCode ==== "'1'"
  203. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘ up down left right KC_b KC_a GUI
  204. */
  205. [_ARROWKY] = KEYMAP( \
  206. _______, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_UP, _______, \
  207. _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, _______, \
  208. _______, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_LEFT, _______, \
  209. _______, _______, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, _______ \
  210. ),
  211. /*
  212. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  213. │ │ F1 │ F2 │ F3 │ F4 │ F5 │ │ F6 │ F7 │ F8 │ F9 │ F10│ │
  214. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  215. │ │ F21│ F22│ F23│ F24│PAUS│ │ │SCLK│BOOT│ │NKRO│CAPS│
  216. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  217. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  218. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  219. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  220. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  221. */
  222. [_FNCTION] = KEYMAP( \
  223. _______, TD(F11), TD(F12), TD(F13), TD(F14), TD(F15), TD(F16), TD(F17), TD(F18), TD(F19), TD(F20), _______, \
  224. _______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, KC_SLCK, XXXXXXX, XXXXXXX, TGNKRO, XXXXXXX, \
  225. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, \
  226. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
  227. ),
  228. /*
  229. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  230. │ │ → │ F7 │ F8 │ F9 │ ↑ │ │ P7 │ P8 │ P9 │NLCK│ P- │BDEL│
  231. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  232. │ │ ← │ F4 │ F5 │ F6 │ ↓ │ │ P4 │ P5 │ P6 │^INS│ P+ │ () │
  233. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  234. │ │CALT│ F1 │ F2 │ F3 │ │ │ P1 │ P2 │ P3 │ │ P* │ = │
  235. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  236. │ │ │ F0?│ │ │ │ │ P0 │ 0 │ P. │TGL │ P/ │ │
  237. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  238. */
  239. [_NINEKEY] = KEYMAP( \
  240. _______, KC_RGHT, KC_F7, KC_F8, KC_F9, KC_UP, KC_P7, KC_P8, KC_P9, KC_NLCK,KC_PMNS, KC_DEL, \
  241. _______, KC_LEFT, KC_F4, KC_F5, KC_F6, KC_DOWN, KC_P4, KC_P5, KC_P6, CAINS,KC_PPLS, M(0), \
  242. _______, CAKY, KC_F1, KC_F2, KC_F3, XXXXXXX, KC_P1, KC_P2, KC_P3, XXXXXXX,KC_PAST, TD(EQE), \
  243. _______, _______, _______, KC_F11, _______, _______, KC_P0, KC_0, KC_PDOT, CAKY,KC_PSLS, _______ \
  244. ),
  245. /*
  246. ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
  247. │ESC │^HOM│^PGD│^UP │^PGU│^PGU│ │ │MW_L│ MU │MW_R│ AC2│ │
  248. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  249. │ │^END│^LFT│^DWN│^RGT│^PGD│ │ │ ML │ MD │ MR │ AC1│ │
  250. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  251. │ │ M5 │ M2 │ M4 │ M3 │ M1 │ │ │MW_D│MW_U│ │ AC0│ │
  252. ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
  253. │ │ │ │ │ │ │ │ │ │ │ │ │ │
  254. └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
  255. */
  256. [_NAVIGAT] = KEYMAP( \
  257. KC_ESC, NAVCH, NAVCPD, NAVCU, NAVCPU, NAVCPU, XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, KC_ACL2, _______, \
  258. _______, NAVCE, NAVCL, NAVCD, NAVCR, NAVCPD, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1, _______, \
  259. _______, KC_BTN5, KC_BTN2, KC_BTN4, KC_BTN3, KC_BTN1, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, KC_ACL0, _______, \
  260. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
  261. ),
  262. //ew. jk
  263. [_QWERTY] = KEYMAP( \
  264. _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
  265. _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
  266. _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \
  267. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
  268. ),
  269. [_MLAYER] = KEYMAP( \
  270. _______,UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502), _______, _______, _______, _______, _______, _______, \
  271. KC_QUOT,UC(0x251C),UC(0x253C),UC(0x2524), _______, _______, M(1), M(0), M(2), _______, _______, _______, \
  272. _______,UC(0x2514),UC(0x2534),UC(0x2518), _______, _______, _______, _______, _______, _______, _______, _______, \
  273. _______, WINSH, WIN, OSX, _______, _______, _______, _______, _______, _______, _______, _______ \
  274. ),
  275. [_GRVTABL] = KEYMAP( \
  276. TG(5),LALT(KC_PSCR), M(4), KC_PWR,KC_POWER, RESET, RESET, KC_R, KC_E, KC_I,LALT(KC_PSCR),TG(3), \
  277. TG(1), TG(6), TG(7), TG(9), TG(3), TG(2), TG(2), KC_S, KC_U, KC_B, TG(6), TG(1), \
  278. M(3), TG(8), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MYCM, KC_CALC, XXXXXXX, XXXXXXX, TG(8), M(3), \
  279. TT(15), TG(6), TG(7), TG(9), TG(3), TG(2), TG(2), TG(3), TG(9), TG(7), TG(6), _______ \
  280. )};
  281. qk_tap_dance_action_t tap_dance_actions[] = {
  282. [VOM] = ACTION_TAP_DANCE_DOUBLE(KC_VOLD, KC_MUTE),
  283. [PRN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
  284. [EGT] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR),
  285. [HRD] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
  286. [DSH] = ACTION_TAP_DANCE_DOUBLE(KC_NDSH, KC_MDSH),
  287. [ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, LALT(KC_F4)),
  288. [EQE] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_ENT),
  289. [UND] = ACTION_TAP_DANCE_DOUBLE(KC_Z, LCTL(KC_Z)),
  290. [PGN] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_PGUP),
  291. [HND] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
  292. [COD] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
  293. [F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F11),
  294. [F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F12),
  295. [F13] = ACTION_TAP_DANCE_DOUBLE(KC_F3, KC_F13),
  296. [F14] = ACTION_TAP_DANCE_DOUBLE(KC_F4, KC_F14),
  297. [F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5, KC_F15),
  298. [F16] = ACTION_TAP_DANCE_DOUBLE(KC_F6, KC_F16),
  299. [F17] = ACTION_TAP_DANCE_DOUBLE(KC_F7, KC_F17),
  300. [F18] = ACTION_TAP_DANCE_DOUBLE(KC_F8, KC_F18),
  301. [F19] = ACTION_TAP_DANCE_DOUBLE(KC_F9, KC_F19),
  302. [F20] = ACTION_TAP_DANCE_DOUBLE(KC_F10, KC_F20),
  303. };
  304. void matrix_init_user(){
  305. set_unicode_input_mode(UC_LNX);
  306. }
  307. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
  308. if (record->event.pressed) {
  309. switch(id) {
  310. case 0:
  311. return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END );
  312. case 1:
  313. return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END );
  314. case 2:
  315. return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
  316. case 3:
  317. clear_keyboard();
  318. case 4:
  319. return MACRO( D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), D(LSFT), T(LBRACKET), U(LSFT), D(LSFT), T(9), U(LSFT), D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(0), U(LSFT), D(LSFT), T(BSLASH), U(LSFT), D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(7), U(LSFT), D(LSFT), T(RBRACKET), U(LSFT), T(SCOLON), D(LSFT), T(SCOLON), U(LSFT), END );
  320. case WINSH:
  321. set_unicode_input_mode(UC_WIN);
  322. return false;
  323. break;
  324. case WIN:
  325. set_unicode_input_mode(UC_WINC);
  326. return false;
  327. break;
  328. case OSX:
  329. set_unicode_input_mode(UC_OSX);
  330. return false;
  331. break;
  332. }
  333. }
  334. return MACRO_NONE;
  335. };