2
0

keymap.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. #include QMK_KEYBOARD_H
  2. #include "debug.h"
  3. #include "action_layer.h"
  4. #include "version.h"
  5. #include "process_keycode/process_tap_dance.h"
  6. #include "gordon.h"
  7. #include "keymap_german.h"
  8. #include "keymap_nordic.h"
  9. #define TLSLSH M(TIL_SLASH)
  10. #define F1_F13 TD(F1F13)
  11. #define F2_F14 TD(F2F14)
  12. #define F5_F15 TD(F5F15)
  13. #define F4_ALTF4 TD(ALTF4)
  14. #define END_ESC TD(ENDESC)
  15. #define SHF6_AF7 TD(F6F7)
  16. #define F12_RUN TD(F12ETAPS)
  17. #define COMMA_TD TD(COMMA)
  18. enum custom_keycodes {
  19. PLACEHOLDER = SAFE_RANGE, // can always be here
  20. EPRM,
  21. VRSN,
  22. RGB_SLD,
  23. };
  24. //Tap dance enums
  25. enum {
  26. F12TAP = 0,
  27. F12ETAPS,
  28. CALCCOMP,
  29. REFRESH, //send R, or Control+R if double tapped.
  30. ENDESC,
  31. XESC, //'quad function'. x, control, escape, alt
  32. ALY2, //'quad function': a, Hyper, ctrl+a, layer 2
  33. PRLOCK,
  34. F6F7, // Shift F6 or Alt F7
  35. TABCOMBO,
  36. FCTRL,
  37. F3D,
  38. ALTF4,
  39. COMMA,
  40. AT,
  41. HTAB,
  42. F1F13,
  43. F2F14,
  44. F5F15
  45. };
  46. // Custom tapping terms for each key.
  47. // Requires changes to action_taping.c
  48. /* uint16_t get_tapping_term(keyevent_t* event) {
  49. uint16_t keycode = keymap_key_to_keycode(layer_switch_get_layer(event->key), event->key);
  50. if (keycode == LT(3,KC_E) ) {
  51. return TAPPING_TERM + 50;
  52. }
  53. return TAPPING_TERM;
  54. } */
  55. // Tap Dance Definitions
  56. qk_tap_dance_action_t tap_dance_actions[] = {
  57. // simple tap dance
  58. [F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
  59. [REFRESH] = ACTION_TAP_DANCE_DOUBLE(KC_R,LCTL(KC_R)),
  60. [ENDESC] = ACTION_TAP_DANCE_DOUBLE(KC_END, KC_ESC),
  61. [CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
  62. [ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
  63. [F6F7] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_F6), LALT(KC_F7)),
  64. [F1F13] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F13),
  65. [F2F14] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F14),
  66. [F5F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5, KC_F15),
  67. [TABCOMBO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tab_finished, tab_reset),
  68. [F3D] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, bt_finished, bt_reset),
  69. [COMMA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, comma_finished, comma_reset),
  70. [HTAB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,h_finished, h_reset)
  71. };
  72. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  73. //**************************FIRST LAYER - LAYER ZERO **************************************
  74. [_QWERTY] = KEYMAP(
  75. SHF6_AF7, F1_F13, F2_F14, TD(F3D), F4_ALTF4, F5_F15, KC_F11,
  76. ________, KC_Q, CTR_SH_W, NAV_E, CTR_AL_R, KC_T, PRINTSCR,
  77. KC_TAB, KC_A, MEH_S, NUMPAD_D, CTRL_F, WIN_G,
  78. ALT_SHFT, CTRL_Z, HYPER_X, MOUSE_C, ALT_V, KC_B, TT(_MOUSE),
  79. KC_MINUS, KC_GRAVE, KC_DELETE, KC_LEFT, KC_RIGHT,
  80. KC_INSERT, KC_DELETE,
  81. ALT_HOME,
  82. KC_LSHIFT, SYMB_BSP, END_ESC,
  83. F12_RUN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, TD(CALCCOMP),
  84. ________, KC_Y, KC_U, KC_I, KC_O, KC_P, ________,
  85. WIN_H, CTRL_J, KC_K, MEH_L, COL_MOUS, ________,
  86. KC_LEAD, KC_N, ALT_M, COMMA_TD, HYPE_DOT, KC_SLASH, TD(TABCOMBO),
  87. KC_UP, KC_DOWN, KC_ESC, KC_TILD, KC_UNDS,
  88. KC_ESCAPE, KC_DELETE,
  89. ALT_T(KC_PGUP),
  90. RCTL_T(KC_PGDOWN), LT(_NAV,KC_ENTER), SPAC_SYM),
  91. //**************************SYMBOLS LAYER**************************
  92. [_SYMBOLS] = KEYMAP(
  93. ________, ________, ________, ________, ________, ________, ________,
  94. ________, TLSLSH, KC_AT, KC_LCBR, KC_RCBR, KC_CIRC, ________,
  95. ________, KC_EXLM, KC_PIPE, KC_LPRN, KC_RPRN, M(DEREF),
  96. ________,KC_DOLLAR, KC_PERC, LSQUIGLY, RSQUIGLY, ________, ________,
  97. ________, M(TICK3), ________, ________, ________,
  98. ________,________,
  99. ________,
  100. ________,________,________,
  101. ________, ________, ________, ________, ________, ________, NUMLOCK,
  102. ________, TLSLSH, KC_PIPE, KC_PLUS, KC_AMPR, ________, CAPLOCK,
  103. M(EQRIGHT), KC_DQUO, KC_EQUAL, KC_QUOTE,KC_SCOLON, ________,
  104. ________, KC_PIPE, BK_SLASH, ASTERSK, KC_DOT, KC_SLASH, ________,
  105. ________,________,________,M(TILD3),________,
  106. ________,________,
  107. ________,
  108. ________,________,________),
  109. //**************************MOUSE MOVEMENT LAYER**************************
  110. [_MOUSE] = KEYMAP(RESET,________,________,________,________,________,________,
  111. RESET,________,________,KC_MS_UP,________,KC_MS_WH_UP,CALTDEL,
  112. ________,________,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_MS_WH_DOWN,
  113. KC_SECRET_1,________,HYPR(KC_F13),________,HYPR(KC_F14),KC_SECRET_2,________,
  114. ________,________,HYPR(KC_F15),KC_MS_WH_LEFT,KC_MS_WH_RIGHT,
  115. ________,________,
  116. ________,
  117. KC_MS_BTN1,KC_MS_BTN2,________,
  118. ________,________,________,________,________,________,________,
  119. KC_MS_WH_UP,________,________,KC_UP,________,________,________,
  120. ________,KC_LEFT,KC_DOWN,KC_RIGHT,________,________,
  121. KC_MS_WH_DOWN,________,KC_PGUP,KC_PGDOWN,KC_MEDIA_NEXT_TRACK,________,________,
  122. KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_MEDIA_PLAY_PAUSE,________,
  123. ________,________,
  124. ________,
  125. ________,________,KC_WWW_BACK),
  126. //**************************WINDOWS NAVIGATION LAYER**************************
  127. [_NAV] = KEYMAP(________,________,________,________,________,________,________,
  128. ________,________,SNAPLEFT,________,SNAPRGHT,LALT(KC_LEFT),________,
  129. ________,LCTL(KC_W),PREVTAB,LGUI(KC_D),NEXTTAB,________,
  130. ________,________,WORKLEFT,________,WORKRIGHT,________,________,
  131. ________,________,________,________,________,
  132. ________,________,
  133. ________,
  134. ________,________,________,
  135. ________,________,________,________,________,________,________,
  136. ________,________,SNAPUP ,KC_UP ,SNAPDOWN,________,________,
  137. ________,KC_LEFT ,KC_DOWN ,KC_RIGHT,________,________,
  138. ________,________,________,________,________,________,________,
  139. ________,________,________,________,________,
  140. ________,________,
  141. ________,
  142. ________,________,________),
  143. //****************************NUMPAD LAYER****************************
  144. [_NUMPAD] = KEYMAP(________,________,________,________,________,________,________,
  145. ________,________,________,________,________,________,________,
  146. ________,________,________,________,________,________,
  147. ________,________,________,________,________,________,________,
  148. ________,________,________,________,________,
  149. ________,________,
  150. ________,
  151. ________,________,________,
  152. BL_TOGG ,BL_STEP ,________,________,________,________,________,
  153. ________,________,KC_7 ,KC_8 ,KC_9 ,________,________,
  154. ________,KC_4 ,KC_5 ,KC_6 ,________,________,
  155. ________,________,KC_1 ,KC_2 ,KC_3 ,________,________,
  156. KC_0 ,KC_0 , KC_DOT ,________,________,
  157. ________,________,
  158. ________,
  159. ________,________,KC_0),
  160. //****************************TEXT/INTELLIJ NAVIGATION LAYER****************************
  161. [_TEXTNAV] = KEYMAP(________,________,________,________,________,________,________,
  162. ________,MEH(KC_Q),LSFT(KC_ESCAPE),MEH(KC_D),MEH(KC_2),LALT(LSFT(KC_UP)),________,
  163. ________,LALT(KC_F7),LCTL(KC_LEFT),LCTL(KC_B),LCTL(KC_RIGHT),LALT(LSFT(KC_DOWN)),
  164. ________,________,________,LCTL(LSFT(KC_COMMA)),MEH(KC_DOT),LALT(KC_MS_WH_UP),________,________,________,________,________,________,________,________,________,________,LCTL(KC_DELETE),________,LALT(LSFT(KC_F9)),________,________,________,________,________,________,________,MEH(KC_5),LALT(LSFT(KC_Z)),________,LALT(KC_Z),________,________,________,LCTL(LSFT(KC_LEFT)),LALT(LCTL(KC_S)),LCTL(LSFT(KC_RIGHT)),LCTL(LSFT(KC_COMMA)),________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________)
  165. };
  166. const uint16_t PROGMEM fn_actions[] = {
  167. [1] = ACTION_LAYER_TAP_TOGGLE(1)
  168. };
  169. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  170. {
  171. switch(id) {
  172. case INFOQM: {
  173. if (record->event.pressed) {
  174. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  175. }
  176. break;
  177. }
  178. case TIL_SLASH: {
  179. if (record->event.pressed) {
  180. SEND_STRING ("~/.");
  181. }
  182. break;
  183. }
  184. case DEREF: {
  185. if (record->event.pressed) {
  186. SEND_STRING ("->");
  187. }
  188. break;
  189. }
  190. case EQRIGHT: {
  191. if (record->event.pressed) {
  192. SEND_STRING ("=>");
  193. }
  194. break;
  195. }
  196. case TICK3: {
  197. if (record->event.pressed) {
  198. SEND_STRING ("```");
  199. }
  200. break;
  201. }
  202. case TILD3: {
  203. if (record->event.pressed) {
  204. SEND_STRING ("~~~");
  205. }
  206. break;
  207. }
  208. case ALTTAB_START: {
  209. register_code(KC_LALT);
  210. layer_on(8);
  211. }
  212. case ALTTAB_END: {
  213. unregister_code(KC_LALT);
  214. layer_off(8);
  215. }
  216. }
  217. return MACRO_NONE;
  218. };
  219. void matrix_scan_user(void) {
  220. uint8_t layer = biton32(layer_state);
  221. ergodox_board_led_on();
  222. ergodox_led_all_on();
  223. ergodox_board_led_off();
  224. ergodox_right_led_1_off();
  225. ergodox_right_led_2_off();
  226. ergodox_right_led_3_off();
  227. switch (layer) {
  228. case _SYMBOLS:
  229. ergodox_right_led_1_on();
  230. break;
  231. case _MOUSE:
  232. ergodox_right_led_2_on();
  233. break;
  234. case _NUMPAD:
  235. ergodox_right_led_3_on();
  236. break;
  237. case _NAV:
  238. ergodox_right_led_1_on();
  239. ergodox_right_led_2_on();
  240. break;
  241. case 5:
  242. ergodox_right_led_1_on();
  243. ergodox_right_led_3_on();
  244. break;
  245. case 6:
  246. ergodox_right_led_2_on();
  247. ergodox_right_led_3_on();
  248. break;
  249. case 7:
  250. ergodox_right_led_1_on();
  251. ergodox_right_led_2_on();
  252. ergodox_right_led_3_on();
  253. break;
  254. default:
  255. break;
  256. }
  257. };