keymap_joe.c 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "keymap_common.h"
  2. const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  3. [0] = KEYMAP( /* Joe qwerty */
  4. ESC, Q, W, E, R, T, Y, U, I, O, P, MINS,
  5. BSPC, A, S, D, F, G, H, J, K, L, SCLN, ENTER,
  6. FN7, Z, X, C, V, B, N, M, COMM, DOT, SLSH, QUOT,
  7. LCTL, LGUI, LALT, LSFT, FN1, SPC, FN0, LEFT, UP, DOWN, RGHT),
  8. [1] = KEYMAP( /* Joe colemak */
  9. ESC, Q, W, F, P, G, J, L, U, Y, SCLN, MINS,
  10. BSPC, A, R, S, T, D, H, N, E, I, O, ENTER,
  11. FN7, Z, X, C, V, B, K, M, COMM, DOT, SLSH, QUOT,
  12. LCTL, LGUI, LALT, LSFT, FN1, SPC, FN0, LEFT, UP, DOWN, RGHT),
  13. [2] = KEYMAP( /* Joe UPPER */
  14. F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
  15. DEL, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  16. TRNS, TRNS, TRNS, TRNS, TRNS, MENU, CAPS, INS, PSCR, TRNS, FN5, FN6,
  17. TRNS, TRNS, TRNS, TRNS, FN2, TRNS, FN0, FN26, FN27, FN28, FN29),
  18. [3] = KEYMAP( /* Joe LOWER */
  19. GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN8, FN9, FN30,
  20. BSPC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, TRNS,
  21. BSLS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, RBRC, TRNS, EQL,
  22. TRNS, TRNS, TRNS, TRNS, FN1, TRNS, FN2, HOME, PGUP, PGDN, END),
  23. [4] = KEYMAP( /* Joe LOWER + UPPER */
  24. FN3, FN4, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, SLEP,
  25. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  26. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  27. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MUTE, VOLD, VOLU, MPLY),
  28. };
  29. enum macro_id {
  30. M_Q0,
  31. M_Q1,
  32. M_Q2
  33. };
  34. const uint16_t PROGMEM fn_actions[] = {
  35. [0] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay
  36. [1] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay
  37. [2] = ACTION_LAYER_MOMENTARY(4), // to Fn overlay
  38. [3] = ACTION_DEFAULT_LAYER_SET(0),
  39. [4] = ACTION_DEFAULT_LAYER_SET(1),
  40. [5] = ACTION_MODS_KEY(MOD_LCTL, KC_PGUP),
  41. [6] = ACTION_MODS_KEY(MOD_LCTL, KC_PGDN),
  42. /* tab on tap, shift on hold */
  43. [7] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB),
  44. [8] = ACTION_MACRO(M_Q0),
  45. [9] = ACTION_MACRO(M_Q1),
  46. [26] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT, KC_LEFT),
  47. [27] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT, KC_UP),
  48. [28] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT, KC_DOWN),
  49. [29] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT, KC_RGHT),
  50. [30] = ACTION_MACRO(M_Q2),
  51. };
  52. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  53. {
  54. keyevent_t event = record->event;
  55. switch (id) {
  56. case M_Q0:
  57. /* :( | ): */
  58. return event.pressed ?
  59. MACRO( D(LSFT), T(P), T(9), T(SPC), T(SPC), T(0), T(P), U(LSFT), T(LEFT), T(LEFT), T(LEFT), END ) :
  60. MACRO_NONE;
  61. case M_Q1:
  62. /* (: | :) */
  63. return event.pressed ?
  64. MACRO( D(LSFT), T(9), T(P), T(SPC), T(SPC), T(P), T(0), U(LSFT), T(LEFT), T(LEFT), T(LEFT), END ) :
  65. MACRO_NONE;
  66. case M_Q2:
  67. /* :) */
  68. return event.pressed ?
  69. MACRO( D(LSFT), T(P), T(0), U(LSFT), END ) :
  70. MACRO_NONE;
  71. }
  72. return MACRO_NONE;
  73. }