Facebook
From M, 3 Weeks ago, written in C.
Embed
Download Paste or View Raw
Hits: 157
  1. // CUSTOM KEY NAMES
  2.  
  3. #define BSPC_HPR    HYPR_T(KC_BSPC) // sends hyper on hold
  4. #define ENT_RAI     LT(_RAISE, KC_ENT)
  5.  
  6.  
  7. #define LTSY        OSL(_LTSYM)
  8. // Bottom row mods (BRM)
  9. #define BRM_Z       LSFT_T(KC_Z)
  10. #define BRM_X       LCTL_T(KC_X)
  11. #define BRM_C       LALT_T(KC_C)
  12. #define BRM_D       LGUI_T(KC_D)
  13. #define BRM_H       LGUI_T(KC_H)
  14. #define BRM_COMM    LALT_T(KC_COMM)
  15. #define BRM_DOT     LCTL_T(KC_DOT)
  16. #define BRM_SLSH    LSFT_T(KC_SLSH)
  17.  
  18. #define KC_N_NAV    LT(_NAV, KC_N)
  19. #define KC_O_LTS    LT(_LTSYM, KC_O)
  20. #define KC_T_RAI    LT(_RAISE, KC_T)
  21. #define ESC_MEH     MEH_T(KC_ESC)
  22. #define KC_S_MOU    LT(_MOUSE, KC_S)
  23.  
  24. #define BSP_HPR     HYPR_T(KC_BSPC) // sends backspace on hold
  25. #define RAISE_ENT   LT(_RAISE, KC_ENT)
  26. #define SPC_NAV     LT(_NAV, KC_SPC)
  27. #define O_SFT       OSM(MOD_LSFT)
  28. #define O_GUI       OSM(MOD_LGUI)
  29. #define O_ALT       OSM(MOD_LALT)
  30. #define O_CTL       OSM(MOD_LCTL)
  31. #define O_MEH       OSM(MOD_MEH)
  32. // #define SPC_NAV     HYPR_T(KC_SPC) // sends hyper on hold
  33.  
  34.  
  35.  
  36. #define DLF_ADMIN   HYPR(KC_F6)
  37. #define DLF_EXCL    HYPR(KC_F7)
  38. #define FWD         G(KC_RBRC)
  39. #define BACK        G(KC_LBRC)
  40. #define NXT_TAB     C(KC_TAB)
  41. #define PRV_TAB     RCS(KC_TAB)
  42. #define COPY        G(KC_C)
  43. #define CUT         G(KC_X)
  44. #define PASTE       G(KC_V)
  45. #define UNDO        G(KC_Z)
  46. #define REDO        SCMD(KC_Z)
  47.  
  48. // Hold buttons
  49. #define L_WORD      LT(_COLEMAK, KC_LEFT)
  50. #define R_WORD      LT(_COLEMAK, KC_RIGHT)
  51. #define U_WORD      LT(_COLEMAK, KC_UP)
  52. #define D_WORD      LT(_COLEMAK, KC_DOWN)
  53. #define BSPC_WRD    LT(_COLEMAK, KC_BSPC) // sends cmd+backspace on hold
  54. #define DEL_LINE    LT(_COLEMAK, KC_DEL) // sends ctrl+k on hold
  55. #define LT_QL       LT(_COLEMAK, KC_9)
  56.  
  57.  
  58.  
  59. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  60. //    ┌─────────┬───────┬───────┬────────────┬─────────┬─────────┐       ┌─────┬───────────┬──────────┬─────────┬──────────┬──────────┐
  61. //    │   tab   │   q   │   w   │     f      │    p    │    b    │       │  j  │     l     │    u     │    y    │    ;     │ BSPC_WRD │
  62. //    ├─────────┼───────┼───────┼────────────┼─────────┼─────────┤       ├─────┼───────────┼──────────┼─────────┼──────────┼──────────┤
  63. //    │ ESC_MEH │   a   │   r   │   s_MOU    │  t_RAI  │    g    │       │  m  │   n_NAV   │    e     │    i    │  o_LTS   │    '     │
  64. //    ├─────────┼───────┼───────┼────────────┼─────────┼─────────┤       ├─────┼───────────┼──────────┼─────────┼──────────┼──────────┤
  65. //    │  O_SFT  │ BRM_Z │ BRM_X │   BRM_C    │  BRM_D  │    v    │       │  k  │   BRM_H   │ BRM_COMM │ BRM_DOT │ BRM_SLSH │   ent    │
  66. //    └─────────┴───────┴───────┼────────────┼─────────┼─────────┤       ├─────┼───────────┼──────────┼─────────┴──────────┴──────────┘
  67. //                              │ MO(_LOWER) │ SPC_NAV │ BSP_HPR │       │ NAV │ RAISE_ENT │   LTSY   │
  68. //                              └────────────┴─────────┴─────────┘       └─────┴───────────┴──────────┘
  69. [_COLEMAK] = LAYOUT_split_3x6_3(
  70.   KC_TAB  , KC_Q  , KC_W  , KC_F       , KC_P     , KC_B    ,         KC_J     , KC_L      , KC_U     , KC_Y    , KC_SCLN  , BSPC_WRD,
  71.   ESC_MEH , KC_A  , KC_R  , KC_S_MOU   , KC_T_RAI , KC_G    ,         KC_M     , KC_N_NAV  , KC_E     , KC_I    , KC_O_LTS , KC_QUOT ,
  72.   O_SFT   , BRM_Z , BRM_X , BRM_C      , BRM_D    , KC_V    ,         KC_K     , BRM_H     , BRM_COMM , BRM_DOT , BRM_SLSH , KC_ENT  ,
  73.                             MO(_LOWER) , SPC_NAV  , BSP_HPR ,         MO(_NAV) , RAISE_ENT , LTSY
  74. ),
  75.  
  76. //    ┌──────┬───┬───┬─────┬─────┬─────┐       ┌─────┬─────┬─────┬───┬───┬──────┐
  77. //    │ tab  │ q │ w │  e  │  r  │  t  │       │  y  │  u  │  i  │ o │ p │ bspc │
  78. //    ├──────┼───┼───┼─────┼─────┼─────┤       ├─────┼─────┼─────┼───┼───┼──────┤
  79. //    │ lctl │ a │ s │  d  │  f  │  g  │       │  h  │  j  │  k  │ l │ ; │  '   │
  80. //    ├──────┼───┼───┼─────┼─────┼─────┤       ├─────┼─────┼─────┼───┼───┼──────┤
  81. //    │ lsft │ z │ x │  c  │  v  │  b  │       │  n  │  m  │  ,  │ . │ / │ esc  │
  82. //    └──────┴───┴───┼─────┼─────┼─────┤       ├─────┼─────┼─────┼───┴───┴──────┘
  83. //                   │     │     │     │       │     │     │     │
  84. //                   └─────┴─────┴─────┘       └─────┴─────┴─────┘
  85. [_QWERTY] = LAYOUT_split_3x6_3(
  86.   KC_TAB  , KC_Q , KC_W , KC_E    , KC_R    , KC_T    ,         KC_Y    , KC_U    , KC_I    , KC_O   , KC_P    , KC_BSPC,
  87.   KC_LCTL , KC_A , KC_S , KC_D    , KC_F    , KC_G    ,         KC_H    , KC_J    , KC_K    , KC_L   , KC_SCLN , KC_QUOT,
  88.   KC_LSFT , KC_Z , KC_X , KC_C    , KC_V    , KC_B    ,         KC_N    , KC_M    , KC_COMM , KC_DOT , KC_SLSH , KC_ESC ,
  89.                           _______ , _______ , _______ ,         _______ , _______ , _______
  90. ),
  91.  
  92. //    ┌─────────┬───────┬─────────┬───────┬───────┬─────┐       ┌─────┬─────┬─────┬───┬───┬─────┐
  93. //    │ DT_PRNT │ DT_UP │ DT_DOWN │       │       │  :  │       │  -  │  7  │  8  │ 9 │ , │     │
  94. //    ├─────────┼───────┼─────────┼───────┼───────┼─────┤       ├─────┼─────┼─────┼───┼───┼─────┤
  95. //    │  O_MEH  │       │         │       │       │  /  │       │  +  │  4  │  5  │ 6 │ 0 │     │
  96. //    ├─────────┼───────┼─────────┼───────┼───────┼─────┤       ├─────┼─────┼─────┼───┼───┼─────┤
  97. //    │         │ O_SFT │  O_CTL  │ O_ALT │ O_GUI │  *  │       │  =  │  1  │  2  │ 3 │ . │     │
  98. //    └─────────┴───────┴─────────┼───────┼───────┼─────┤       ├─────┼─────┼─────┼───┴───┴─────┘
  99. //                                │       │       │     │       │     │     │     │
  100. //                                └───────┴───────┴─────┘       └─────┴─────┴─────┘
  101. [_LOWER] = LAYOUT_split_3x6_3(
  102.   DT_PRNT , DT_UP   , DT_DOWN , _______ , _______ , KC_COLN ,         KC_PMNS , KC_P7   , KC_P8   , KC_P9 , KC_COMM , _______,
  103.   O_MEH   , _______ , _______ , _______ , _______ , KC_PSLS ,         KC_PPLS , KC_P4   , KC_P5   , KC_P6 , KC_P0   , _______,
  104.   _______ , O_SFT   , O_CTL   , O_ALT   , O_GUI   , KC_PAST ,         KC_PEQL , KC_P1   , KC_P2   , KC_P3 , KC_DOT  , _______,
  105.                                 _______ , _______ , _______ ,         _______ , _______ , _______
  106. ),
  107.  
  108. //    ┌─────┬──────┬───┬─────┬─────┬──────┐       ┌──────┬──────┬─────┬───┬──────┬─────┐
  109. //    │     │  `   │ < │  >  │  '  │  .   │       │   &  │   ^  │  [  │ ] │   %  │     │
  110. //    ├─────┼──────┼───┼─────┼─────┼──────┤       ├──────┼──────┼─────┼───┼──────┼─────┤
  111. //    │     │   !  │ - │  +  │  =  │   #  │       │  |   │  :   │  (  │ ) │  ?   │     │
  112. //    ├─────┼──────┼───┼─────┼─────┼──────┤       ├──────┼──────┼─────┼───┼──────┼─────┤
  113. //    │     │  _   │ / │  *  │    │   %  │       │  ~   │   $  │  {  │ } │   @  │     │
  114. //    └─────┴──────┴───┼─────┼─────┼──────┤       ├──────┼──────┼─────┼───┴──────┴─────┘
  115. //                     │     │     │      │       │      │      │     │
  116. //                     └─────┴─────┴──────┘       └──────┴──────┴─────┘
  117.  
  118. [_RAISE] = LAYOUT_split_3x6_3(
  119.   _______ , KC_GRV     , KC_LABK , KC_RABK , KC_QUOT , KC_DOT     ,         A(KC_AMPR) , A(KC_CIRC) , KC_LBRC , KC_RBRC , A(KC_PERC) , _______,
  120.   _______ , A(KC_EXLM) , KC_PMNS , KC_PPLS , KC_PEQL , A(KC_HASH) ,         KC_PIPE    , KC_COLN    , KC_LPRN , KC_RPRN , KC_QUES    , _______,
  121.   _______ , KC_UNDS    , KC_SLSH , KC_PAST , KC_BSLS , A(KC_PERC) ,         KC_TILD    , A(KC_DLR)  , KC_LCBR , KC_RCBR , A(KC_AT)   , _______,
  122.                                    _______ , _______ , _______    ,         _______    , _______    , _______
  123. ),
  124.  
  125. //    ┌─────┬──────────┬──────────┬─────────┬─────────┬─────┐       ┌─────┬──────┬──────┬──────┬──────┬─────┐
  126. //    │     │ DEL_LINE │ BSPC_WRD │   ent   │         │     │       │     │ mprv │ mnxt │      │      │     │
  127. //    ├─────┼──────────┼──────────┼─────────┼─────────┼─────┤       ├─────┼──────┼──────┼──────┼──────┼─────┤
  128. //    │     │  L_WORD  │  D_WORD  │ U_WORD  │ R_WORD  │     │       │     │ vold │ volu │ mply │ mstp │     │
  129. //    ├─────┼──────────┼──────────┼─────────┼─────────┼─────┤       ├─────┼──────┼──────┼──────┼──────┼─────┤
  130. //    │     │   BACK   │   FWD    │ PRV_TAB │ NXT_TAB │     │       │     │ bRID │ bRIU │      │      │     │
  131. //    └─────┴──────────┴──────────┼─────────┼─────────┼─────┤       ├─────┼──────┼──────┼──────┴──────┴─────┘
  132. //                                │         │         │     │       │     │      │      │
  133. //                                └─────────┴─────────┴─────┘       └─────┴──────┴──────┘
  134. [_NAV] = LAYOUT_split_3x6_3(
  135.   _______ , DEL_LINE , BSPC_WRD , KC_ENT  , _______ , _______ ,         _______ , KC_MPRV , KC_MNXT , _______ , _______ , _______,
  136.   _______ , L_WORD   , D_WORD   , U_WORD  , R_WORD  , _______ ,         _______ , KC_VOLD , KC_VOLU , KC_MPLY , KC_MSTP , _______,
  137.   _______ , BACK     , FWD      , PRV_TAB , NXT_TAB , _______ ,         _______ , KC_BRID , KC_BRIU , _______ , _______ , _______,
  138.                                   _______ , _______ , _______ ,         _______ , _______ , _______
  139. ),
  140.  
  141. //    ┌─────────┬────────┬────────────────┬─────┬─────┬─────┐       ┌─────┬─────┬─────┬────┬─────┬─────┐
  142. //    │ BOOT_ME │ EE_CLR │    QK_BOOT     │     │     │     │       │     │ f7  │ f8  │ f9 │     │     │
  143. //    ├─────────┼────────┼────────────────┼─────┼─────┼─────┤       ├─────┼─────┼─────┼────┼─────┼─────┤
  144. //    │ COLEMAK │ QWERTY │ COLEMAK_SIMPLE │     │     │     │       │     │ f4  │ f5  │ f6 │     │     │
  145. //    ├─────────┼────────┼────────────────┼─────┼─────┼─────┤       ├─────┼─────┼─────┼────┼─────┼─────┤
  146. //    │         │   f9   │      f10       │ f11 │ f12 │ f13 │       │     │ f1  │ f2  │ f3 │     │     │
  147. //    └─────────┴────────┴────────────────┼─────┼─────┼─────┤       ├─────┼─────┼─────┼────┴─────┴─────┘
  148. //                                        │     │     │     │       │     │     │     │
  149. //                                        └─────┴─────┴─────┘       └─────┴─────┴─────┘
  150. [_ADJUST] = LAYOUT_split_3x6_3(
  151.   BOOT_ME , EE_CLR , QK_BOOT        , _______ , _______ , _______ ,         _______ , KC_F7   , KC_F8   , KC_F9 , _______ , _______,
  152.   COLEMAK , QWERTY , COLEMAK_SIMPLE , _______ , _______ , _______ ,         _______ , KC_F4   , KC_F5   , KC_F6 , _______ , _______,
  153.   _______ , KC_F9  , KC_F10         , KC_F11  , KC_F12  , KC_F13  ,         _______ , KC_F1   , KC_F2   , KC_F3 , _______ , _______,
  154.                                       _______ , _______ , _______ ,         _______ , _______ , _______
  155. ),
  156.  
  157. //    ┌─────┬─────┬──────┬─────┬──────┬─────┐       ┌─────┬──────┬──────┬──────┬──────┬─────┐
  158. //    │     │     │      │     │      │     │       │     │      │ wh_d │ wh_u │      │     │
  159. //    ├─────┼─────┼──────┼─────┼──────┼─────┤       ├─────┼──────┼──────┼──────┼──────┼─────┤
  160. //    │     │     │ btn2 │     │ btn1 │     │       │     │ ms_l │ ms_d │ ms_u │ ms_r │     │
  161. //    ├─────┼─────┼──────┼─────┼──────┼─────┤       ├─────┼──────┼──────┼──────┼──────┼─────┤
  162. //    │     │     │      │     │      │     │       │     │      │      │      │      │     │
  163. //    └─────┴─────┴──────┼─────┼──────┼─────┤       ├─────┼──────┼──────┼──────┴──────┴─────┘
  164. //                       │     │      │     │       │     │      │      │
  165. //                       └─────┴──────┴─────┘       └─────┴──────┴──────┘
  166. [_MOUSE] = LAYOUT_split_3x6_3(
  167.   _______ , _______ , _______ , _______ , _______ , _______ ,         _______ , _______ , KC_WH_D , KC_WH_U , _______ , _______,
  168.   _______ , _______ , KC_BTN2 , _______ , KC_BTN1 , _______ ,         _______ , KC_MS_L , KC_MS_D , KC_MS_U , KC_MS_R , _______,
  169.   _______ , _______ , _______ , _______ , _______ , _______ ,         _______ , _______ , _______ , _______ , _______ , _______,
  170.                                 _______ , _______ , _______ ,         _______ , _______ , _______
  171. ),
  172.  
  173. //    ┌─────┬──────┬──────┬──────┬─────┬─────┐       ┌─────┬─────┬─────┬─────┬─────┬─────┐
  174. //    │     │ S(ą) │      │ S(š) │     │     │       │     │  ū  │  ų  │     │     │     │
  175. //    ├─────┼──────┼──────┼──────┼─────┼─────┤       ├─────┼─────┼─────┼─────┼─────┼─────┤
  176. //    │     │  ą   │ A(-) │  š   │     │     │       │     │  ė  │  ę  │  į  │     │     │
  177. //    ├─────┼──────┼──────┼──────┼─────┼─────┤       ├─────┼─────┼─────┼─────┼─────┼─────┤
  178. //    │     │  ž   │ S(ž) │  č   │     │     │       │     │     │     │     │     │     │
  179. //    └─────┴──────┴──────┼──────┼─────┼─────┤       ├─────┼─────┼─────┼─────┴─────┴─────┘
  180. //                        │      │     │     │       │     │     │     │
  181. //                        └──────┴─────┴─────┘       └─────┴─────┴─────┘
  182. [_LTSYM] = LAYOUT_split_3x6_3(
  183.   _______ , S(LT_AOGO) , _______    , S(LT_SCAR) , _______ , _______ ,         _______ , LT_UMAC , LT_UOGO , _______ , _______ , _______,
  184.   _______ , LT_AOGO    , A(KC_MINS) , LT_SCAR    , _______ , _______ ,         _______ , LT_EDOT , LT_EOGO , LT_IOGO , _______ , _______,
  185.   _______ , LT_ZCAR    , S(LT_ZCAR) , LT_CCAR    , _______ , _______ ,         _______ , _______ , _______ , _______ , _______ , _______,
  186.                                       _______    , _______ , _______ ,         _______ , _______ , _______
  187. ),
  188.  
  189. }
  190.  
  191.  
  192. // tap-hold  funkcija
  193. static inline bool base_layer_hold_key(uint16_t keycode, keyrecord_t *record) {
  194.   if (record->tap.count == 0) {  // Key is being held.
  195.     if (record->event.pressed) {
  196.       register_code16(keycode);
  197.     }
  198.     else {
  199.       unregister_code16(keycode);
  200.     }
  201.     return false;  // Skip default handling.
  202.   }
  203.   return true;  // Continue default handling.
  204. }
  205.  
  206.  
  207. //////////////////////
  208. ///// LEADER KEY /////
  209. //////////////////////
  210. void leader_start_user(void) {
  211.     // Do something when the leader key is pressed
  212. }
  213.  
  214. void leader_end_user(void) {
  215.  
  216.         // Paste as plain text => Leader > v
  217.       if (leader_sequence_one_key(KC_V)) {
  218.         SEND_STRING(SS_LSFT(SS_LGUI(SS_LALT("v"))));
  219.  
  220.         // Dot, space, one shot shift
  221.     } else if (leader_sequence_one_key(KC_DOT)) {
  222.         SEND_STRING(". ");
  223.         set_oneshot_mods(MOD_BIT(KC_LSFT));
  224.  
  225.         // Screenshot to clipboard => Leader > s
  226.     } else if (leader_sequence_one_key(KC_S)) {
  227.         SEND_STRING(SS_LSFT(SS_LGUI("2")));
  228.  
  229.         // Screenshot to file => Leader > s s
  230.     } else if (leader_sequence_two_keys(KC_S, KC_S)) {
  231.         SEND_STRING(SS_LSFT(SS_LGUI("4")));
  232.  
  233.         // Save mail attachments
  234.     } else if (leader_sequence_two_keys(KC_F, KC_F)) {
  235.         SEND_STRING(SS_LSFT(SS_LGUI(SS_LALT("s"))));
  236.  
  237.     ////// HYPER KEYS
  238.  
  239.         // Leader, s, d => HYPR(KC_F6) // Open SSD
  240.     } else if (leader_sequence_two_keys(KC_S, KC_D)) {
  241.         tap_code16(HYPR(KC_F6));
  242.  
  243.         // Leader, d => HYPR(KC_F7) // Open Desktop
  244.     } else if (leader_sequence_one_key(KC_D)) {
  245.         tap_code16(HYPR(KC_F7));
  246.  
  247.         // Leader, d, f => HYPR(KC_F8) // Open Downloads
  248.     } else if (leader_sequence_two_keys(KC_D, KC_F)) {
  249.         tap_code16(HYPR(KC_F8));
  250.  
  251.         // Leader, g => HYPR(KC_F9) // Google Search
  252.     } else if (leader_sequence_one_key(KC_G)) {
  253.         tap_code16(HYPR(KC_F9));
  254.  
  255.         // Leader, v, v => HYPR(KC_F13) // Open in Vim
  256.     } else if (leader_sequence_two_keys(KC_V, KC_V)) {
  257.         tap_code16(HYPR(KC_F13));
  258.  
  259.         // Leader, d, w => HYPR(KC_F13) // Open VS Code
  260.     } else if (leader_sequence_two_keys(KC_D, KC_W)) {
  261.         tap_code16(HYPR(KC_F16));
  262.  
  263.  
  264.     }
  265.  
  266.     // If leader key combination fails, do this
  267.     // Mapped HYPER-F14 to error sound on macOS
  268.     else {
  269.         tap_code16(HYPR(KC_F14));
  270.     }
  271.  
  272. }
  273.  
  274.