You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

334 lines
19 KiB

  1. // pvinis ergodox ez
  2. // ,------------------------------------. ┌────┬────┬────┬────┬────┬────┬──────┐
  3. // | | | | | | | | │ │ │ │ │ │ │ │
  4. // |------+----+----+----+----+---------| ├────┼────┼────┼────┼────┼────┼──────┤
  5. // | | | | | | | | │ │ │ │ │ │ │ │
  6. // |------+----+----+----x----x----| | │ ├────╆━━━━╅────┼────┼────┼──────┤
  7. // | | | | | | |----| ├────┤ ┃ ┃ │ │ │ │
  8. // |------+----+----+----x----x----| | │ ├────╄━━━━╃────┼────┼────┼──────┤
  9. // | | | | | | | | │ │ │ │ │ │ │ │
  10. // `------+----+----+----+----+---------' └────┴────┼────┼────┼────┼────┼────┬─┘
  11. // | | | | | | │ │ │ │ │ │
  12. // `------------------------' └────┴────┴────┴────┴────┘
  13. // ,---------. ┌────┬────┐
  14. // | | | │ │ │
  15. // ,----+----+----| ├────┼────┼────┐
  16. // | | | | │ │ │ │
  17. // | | |----| ├────┤ │ │
  18. // | | | | │ │ │ │
  19. // `--------------' └────┴────┴────┘
  20. #include QMK_KEYBOARD_H
  21. #include "pvinis.h"
  22. #include "mousekey.h"
  23. // layers
  24. enum {
  25. MOUSE = 8,
  26. };
  27. // extra keys
  28. enum {
  29. NONE = 30,
  30. TD_LAYR, // SYSCTL and MOUSE layer switch
  31. };
  32. // application selection
  33. // this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
  34. #define AP_SLCK ALLM(KC_S)
  35. #define AP_XCOD ALLM(KC_X)
  36. #define AP_MSGR ALLM(KC_M)
  37. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  38. // ,------------------------------------. ,------------------------------------.
  39. // |4xFLSH| | | | | |Opt | | | | | | | | |
  40. // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
  41. // | Tab | | | | | | | | | | | | | | |
  42. // |------+----+----+----x----x----| | | |----x----x----+----+----+------|
  43. // |EscCtl| | | | | |----| |----| | | | | | Ent |
  44. // |------+----+----+----x----x----| | | |----x----x----+----+----+------|
  45. // |LShift| | | | | | | | | | | | | |RShift|
  46. // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
  47. // | | | |Cmd |LOWR| |RASE|RAlt| | | |
  48. // `------------------------' `------------------------'
  49. // ,---------. ,---------.
  50. // |QWER| | | | |
  51. // ,----+----+----| |----+----+----.
  52. // | Ba | L | | | | | |
  53. // | ck |Shi |----| |----| |Spc |
  54. // | spc| ft | | | | | |
  55. // `--------------' `--------------'
  56. [LR_BASE] = LAYOUT_ergodox_pretty_wrapper(
  57. // clang-format off
  58. TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______,
  59. KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  60. PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
  61. KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
  62. _______, _______, _______, KC_LGUI, SYMBOL , SYSCTL , KC_RALT, _______, _______, _______,
  63. QWERTY , CARPALX, _______, _______,
  64. _______, _______,
  65. KC_BSPC, _______, _______, _______, _______, KC_SPC
  66. // clang-format on
  67. ),
  68. // ,------------------------------------. ,------------------------------------.
  69. // | | NUMBERS_L | | | - | NUMBERS_R | = |
  70. // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
  71. // | | | [ | | ] | | |
  72. // |------+ | | | | +------|
  73. // | | QWERTY_L |----| |----| QWERTY_R | |
  74. // |------+ | ( | | ) | +------|
  75. // | | | | | | | |
  76. // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
  77. // | | ` | | | | | | | | ' | |
  78. // `------------------------' `------------------------'
  79. // ,---------. ,---------.
  80. // | | | | | |
  81. // ,----+----+----| |----+----+----.
  82. // | | | | | | | |
  83. // | | |----| |----| | |
  84. // | | | | | | | |
  85. // `--------------' `--------------'
  86. // See `users/pvinis/pvinis.h`
  87. [LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
  88. // clang-format off
  89. _______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL ,
  90. _______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______,
  91. _______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______,
  92. _______, _________________QWERTY_L3_________________, KC_LPRN, KC_RPRN, _________________QWERTY_R3_________________, _______,
  93. _______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_QUOT , _______,
  94. _______, _______, _______, _______,
  95. _______, _______,
  96. _______, _______, _______, _______, _______, _______
  97. // clang-format off
  98. ),
  99. // ,------------------------------------. ,------------------------------------.
  100. // | | NUMBERS_L | | | | NUMBERS_R | |
  101. // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
  102. // | | | | | | | |
  103. // |------+ | | | | +------|
  104. // | | CARPALX_L |----| |----| CARPALX_R | |
  105. // |------+ | | | | +------|
  106. // | | | | | | | |
  107. // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
  108. // | | | | | | | | | | | |
  109. // `------------------------' `------------------------'
  110. // ,---------. ,---------.
  111. // | | | | | |
  112. // ,----+----+----| |----+----+----.
  113. // | | | | | | | |
  114. // | | |----| |----| | |
  115. // | | | | | | | |
  116. // `--------------' `--------------'
  117. // See `users/pvinis/pvinis.h`
  118. [LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper(
  119. // clang-format off
  120. _______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______,
  121. _______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______,
  122. _______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
  123. _______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
  124. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  125. _______, _______, _______, _______,
  126. _______, _______,
  127. _______, _______, _______, _______, _______, _______
  128. // clang-format on
  129. ),
  130. // See `users/pvinis/pvinis.h`
  131. [LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper(
  132. // clang-format off
  133. _______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______,
  134. _______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______,
  135. _______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
  136. _______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
  137. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  138. _______, _______, _______, _______,
  139. _______, _______,
  140. _______, _______, _______, _______, _______, _______
  141. // clang-format off
  142. ),
  143. // See `users/pvinis/pvinis.h`
  144. [LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper(
  145. // clang-format off
  146. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  147. _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
  148. _______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
  149. _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______,
  150. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  151. _______, _______, _______, _______,
  152. _______, _______,
  153. _______, _______, _______, _______, _______, _______
  154. // clang-format on
  155. ),
  156. // See `users/pvinis/pvinis.h`
  157. [LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper(
  158. // clang-format off
  159. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  160. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX,
  161. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX,
  162. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
  163. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  164. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  165. XXXXXXX, XXXXXXX,
  166. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  167. // clang-format on
  168. ),
  169. /* MOUSE
  170. * a keymap to control my system.
  171. *
  172. * ,--------------------------------------------------. ,--------------------------------------------------.
  173. * | ^ | | | | | | | | | | | | | | |
  174. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  175. * | | | | | | | | | | | | MsUp | | | |
  176. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  177. * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
  178. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  179. * | | | | | | | | | | | | | | | |
  180. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  181. * | | | | | | | | | | | |
  182. * `----------------------------------' `----------------------------------'
  183. * ,-------------. ,-------------.
  184. * | | | | |MidClk|
  185. * ,------|------|------| |------+------+------.
  186. * | | | | | |Left |Right |
  187. * | | |------| |------| Click| Click|
  188. * | | | ^ | | | | |
  189. * `--------------------' `--------------------'
  190. */
  191. [MOUSE] = LAYOUT_ergodox_pretty(
  192. // clang-format off
  193. KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  194. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  195. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  196. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  197. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  198. ,KC_NO ,KC_NO
  199. ,KC_NO
  200. ,KC_NO ,KC_NO ,KC_TRNS
  201. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  202. ,KC_NO ,KC_NO ,KC_NO ,KC_MS_U ,KC_NO ,KC_NO ,KC_NO
  203. ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
  204. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  205. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  206. ,KC_NO ,KC_NO
  207. ,KC_NO
  208. ,KC_NO ,KC_NO ,KC_NO
  209. // clang-format on
  210. ),
  211. };
  212. // keyboard initialization
  213. void keyboard_post_init_user_keymap(void) {
  214. ergodox_led_all_on();
  215. for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
  216. ergodox_led_all_set(i);
  217. wait_ms(5);
  218. }
  219. wait_ms(1000);
  220. for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
  221. ergodox_led_all_set(i);
  222. wait_ms(10);
  223. }
  224. ergodox_led_all_off();
  225. // restore default brightness for future use
  226. ergodox_led_all_set(LED_BRIGHTNESS_HI);
  227. }
  228. // light up leds based on the layer
  229. layer_state_t layer_state_set_user_keymap(layer_state_t state) {
  230. ergodox_right_led_1_off();
  231. ergodox_right_led_2_off();
  232. ergodox_right_led_3_off();
  233. switch (get_highest_layer(state)) {
  234. case LR_SYSCTL:
  235. ergodox_right_led_3_on(); // blue
  236. break;
  237. case LR_KBCTL:
  238. ergodox_right_led_1_on(); // red
  239. break;
  240. case LR_SYMBOL:
  241. ergodox_right_led_2_on(); // green
  242. break;
  243. default:
  244. break;
  245. }
  246. return state;
  247. }
  248. // tap dances
  249. // flash keyboard on 4x tap, with leds
  250. // void flash_each_tap(tap_dance_state_t *state, void *user_data) {
  251. // switch (state->count) {
  252. // case 1:
  253. // ergodox_right_led_3_on();
  254. // break;
  255. // case 2:
  256. // ergodox_right_led_2_on();
  257. // break;
  258. // case 3:
  259. // ergodox_right_led_1_on();
  260. // break;
  261. // case 4:
  262. // ergodox_right_led_3_off();
  263. // wait_ms(50);
  264. // ergodox_right_led_2_off();
  265. // wait_ms(50);
  266. // ergodox_right_led_1_off();
  267. // break;
  268. // }
  269. // }
  270. // void flash_dance_finished(tap_dance_state_t *state, void *user_data) {
  271. // if (state->count >= 4) {
  272. // reset_keyboard();
  273. // reset_tap_dance(state);
  274. // }
  275. // }
  276. // void flash_dance_reset(tap_dance_state_t *state, void *user_data) {
  277. // ergodox_right_led_1_off();
  278. // wait_ms(50);
  279. // ergodox_right_led_2_off();
  280. // wait_ms(50);
  281. // ergodox_right_led_3_off();
  282. // }
  283. // SYSCTL on first tap, MOUSE ON second tap
  284. // void layers_dance_finished(tap_dance_state_t *state, void *user_data) {
  285. // uint8_t layer = get_highest_layer(layer_state);
  286. // switch(state->count) {
  287. // case 1:
  288. // switch(layer) {
  289. // case LR_SYSCTL:
  290. // layer_off(LR_SYSCTL);
  291. // break;
  292. // case MOUSE:
  293. // layer_off(MOUSE);
  294. // break;
  295. // default:
  296. // layer_on(LR_SYSCTL);
  297. // break;
  298. // }
  299. // break;
  300. // case 2:
  301. // layer_on(MOUSE);
  302. // break;
  303. // }
  304. // }
  305. // tap_dance_action_t tap_dance_actions[] = {
  306. // [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
  307. // [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
  308. // };