keymap.c 23 KB

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