aboutsummaryrefslogtreecommitdiff
path: root/users/ninjonas
diff options
context:
space:
mode:
Diffstat (limited to 'users/ninjonas')
-rw-r--r--users/ninjonas/README.md27
-rw-r--r--users/ninjonas/config.h2
-rw-r--r--users/ninjonas/ninjonas.h18
-rw-r--r--users/ninjonas/oled.c5
-rw-r--r--users/ninjonas/process_records.c6
-rw-r--r--users/ninjonas/tap_dances.c86
-rw-r--r--users/ninjonas/tap_dances.h23
7 files changed, 140 insertions, 27 deletions
diff --git a/users/ninjonas/README.md b/users/ninjonas/README.md
index 39d92cff3..f537373bc 100644
--- a/users/ninjonas/README.md
+++ b/users/ninjonas/README.md
@@ -17,17 +17,17 @@ See: https://docs.qmk.fm/#/feature_userspace
17- [Kyria](../../keyboards/kyria/keymaps/ninjonas) 17- [Kyria](../../keyboards/kyria/keymaps/ninjonas)
18 18
19## Features 19## Features
20### [Keys](ninjonas.h#L37) 20### [Keys](ninjonas.h)
21|Code | Description | 21|Code | Description |
22|---|---| 22|---|---|
23|K_LOCK | MacOS shortcut to execute lock command + CTRL + Q | 23|K_LOCK | MacOS shortcut to execute lock command Cmd + CTRL + Q |
24|K_CSCN | MacOS shortcut to copy a portion of the screen to the clipboard | 24|K_CSCN | MacOS shortcut to copy a portion of the screen to the clipboard |
25|K_MDSH | MacOS shortcut to get em-dash `–` | 25|K_MDSH | MacOS shortcut to get em-dash `–` |
26|K_RAPP | MacOS shortcut to switch apps to the right | 26|K_RAPP | MacOS shortcut to switch apps to the right |
27|K_LAPP | MacOS shortcut to switch apps to the left | 27|K_LAPP | MacOS shortcut to switch apps to the left |
28|K_CPRF | + Shift + M. Used for switching Google Chrome profiles | 28|K_CPRF | Cmd + Shift + M. Used for switching Google Chrome profiles |
29 29
30### [Layers](ninjonas.h#L44) 30### [Layers](ninjonas.h)
31|Code | Description | 31|Code | Description |
32|---|---| 32|---|---|
33|LT_LOW | Tap for ENTER, hold for RAISE | 33|LT_LOW | Tap for ENTER, hold for RAISE |
@@ -38,13 +38,13 @@ See: https://docs.qmk.fm/#/feature_userspace
38|LG_LOW | Press to toggle LOWER layer | 38|LG_LOW | Press to toggle LOWER layer |
39|LG_RAI | Press to toggle RAISE layer | 39|LG_RAI | Press to toggle RAISE layer |
40 40
41### [Mod-Taps](ninjonas.h#L50) 41### [Mod-Taps](ninjonas.h)
42|Code | Description | 42|Code | Description |
43|---|---| 43|---|---|
44|MT_DEL | Tap for Delete, hold for + ALT + SHIFT | 44|MT_DEL | Tap for Delete, hold for Cmd + ALT + SHIFT |
45|MT_EQL | Tap for =, hold for ALT + SHIFT | 45|MT_EQL | Tap for =, hold for ALT + SHIFT |
46 46
47### [Layout Blocks](ninjonas.h#L54) 47### [Layout Blocks](ninjonas.h)
48Predefined keyboard layout templates to speed up configuring split keyboards 48Predefined keyboard layout templates to speed up configuring split keyboards
49 49
50|Code | Description | 50|Code | Description |
@@ -59,6 +59,7 @@ Predefined keyboard layout templates to speed up configuring split keyboards
59|MOUSE | Mouse Cluster | 59|MOUSE | Mouse Cluster |
60|MEDIA | Media Cluster | 60|MEDIA | Media Cluster |
61|MOD | Modifier Cluster | 61|MOD | Modifier Cluster |
62|NUMPAD | Numpad Cluster |
62 63
63### [Macros](process_records.c) 64### [Macros](process_records.c)
64|Code | Description | 65|Code | Description |
@@ -68,7 +69,7 @@ Predefined keyboard layout templates to speed up configuring split keyboards
68|M_MALL | Macro to send QMK make command to all [ninjonas](#Supported%20Keyboards) keyboards | 69|M_MALL | Macro to send QMK make command to all [ninjonas](#Supported%20Keyboards) keyboards |
69|M_FLSH | Macro to send QMK make command to compile keyboard with the correct bootloader | 70|M_FLSH | Macro to send QMK make command to compile keyboard with the correct bootloader |
70|M_VRSN | Macro to send QMK version | 71|M_VRSN | Macro to send QMK version |
71|M_SHFT | Sends + alt + shift to a keycode to activate [ShiftIt](https://github.com/fikovnik/ShiftIt) | 72|M_SHFT | Sends Cmd + alt + shift to a keycode to activate [ShiftIt](https://github.com/fikovnik/ShiftIt) |
72|M_CODE | Opens [Visual Studio Code](https://code.visualstudio.com/) on current directory | 73|M_CODE | Opens [Visual Studio Code](https://code.visualstudio.com/) on current directory |
73|M_TERM | Launches Spotlight and calls Terminal | 74|M_TERM | Launches Spotlight and calls Terminal |
74|M_COPA | Single key copy/paste | 75|M_COPA | Single key copy/paste |
@@ -81,10 +82,12 @@ Predefined keyboard layout templates to speed up configuring split keyboards
81|T_LBRC | Tap once for [, double for back browser | 82|T_LBRC | Tap once for [, double for back browser |
82|T_RBRC | Tap once for ], double for forward browser | 83|T_RBRC | Tap once for ], double for forward browser |
83|T_TAB | Tap once for TAB, double for CTRL + TAB | 84|T_TAB | Tap once for TAB, double for CTRL + TAB |
84|T_GRV | Tap once for GRV, double for  + GRV | 85|T_GRV | Tap once for GRV, double for Cmd + GRV |
85|T_GUI | Tap once for , double to open spotlight | 86|T_GUI | Tap once for Cmd, double to open spotlight |
86|T_W | Tap for W, double tap for  + W | 87|T_W | Tap for W, double tap for Cmd + W |
87|T_Q | Tap for Q, double tap for  + Q | 88|T_Q | Tap for Q, double tap for Cmd + Q |
89|T_CPNU | Tap for Cmd + V, hold for Cmd + C, double tap for NUMPAD layer |
90|T_Y | Tap for Y, double tap for NUMPAD layer |
88 91
89### Secrets 92### Secrets
90There's times where you have macros you don't want to share like emails, an address you need but you always forget, passwords 😱, & and private strings. Based off [drashna's secret macros](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme_secrets.md), it's now possible to do this. All you need to do is create a `secrets.c` file. Below is an example of how this is used. 93There's times where you have macros you don't want to share like emails, an address you need but you always forget, passwords 😱, & and private strings. Based off [drashna's secret macros](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme_secrets.md), it's now possible to do this. All you need to do is create a `secrets.c` file. Below is an example of how this is used.
diff --git a/users/ninjonas/config.h b/users/ninjonas/config.h
index 1166939c6..ae2370c5a 100644
--- a/users/ninjonas/config.h
+++ b/users/ninjonas/config.h
@@ -1,6 +1,6 @@
1#ifdef TAPPING_TERM 1#ifdef TAPPING_TERM
2 #undef TAPPING_TERM 2 #undef TAPPING_TERM
3 #define TAPPING_TERM 200 3 #define TAPPING_TERM 300
4#endif 4#endif
5 5
6// Mouse Settings: Smoothing out mouse movement on keypress 6// Mouse Settings: Smoothing out mouse movement on keypress
diff --git a/users/ninjonas/ninjonas.h b/users/ninjonas/ninjonas.h
index 6f79b262f..6772957e2 100644
--- a/users/ninjonas/ninjonas.h
+++ b/users/ninjonas/ninjonas.h
@@ -33,20 +33,22 @@
33#define _LOWER 3 33#define _LOWER 3
34#define _RAISE 4 34#define _RAISE 4
35#define _ADJUST 5 35#define _ADJUST 5
36#define _NUMPAD 6
36 37
37// Shortcut Keys 38// Shortcut Keys
38#define K_LOCK LGUI(LCTL(KC_Q)) // Locks screen on MacOS 39#define K_LOCK LGUI(LCTL(KC_Q)) // Locks screen on MacOS
39#define K_CSCN LGUI(LCTL(LSFT(KC_4))) // Copy a portion of the screen to the clipboard 40#define K_CSCN LGUI(LCTL(LSFT(KC_4))) // Copy a portion of the screen to the clipboard
40#define K_CPRF LGUI(LSFT(KC_M)) // + Shift + M. Used for switching Google Chrome profiles 41#define K_CPRF LGUI(LSFT(KC_M)) // Cmd + Shift + M. Used for switching Google Chrome profiles
41#define K_MDSH LSFT(LALT(KC_MINS)) 42#define K_MDSH LSFT(LALT(KC_MINS))
42#define K_LAPP SGUI(KC_TAB) // + Shift + Tab 43#define K_LAPP SGUI(KC_TAB) // Cmd + Shift + Tab
43#define K_RAPP LGUI(KC_TAB) // + Tab 44#define K_RAPP LGUI(KC_TAB) // Cmd + Tab
44 45
45// Layer Keys 46// Layer Keys
46#define LM_LOW MO(_LOWER) 47#define LM_LOW MO(_LOWER)
47#define LM_RAI MO(_RAISE) 48#define LM_RAI MO(_RAISE)
48#define LG_LOW TG(_LOWER) 49#define LG_LOW TG(_LOWER)
49#define LG_RAI TG(_RAISE) 50#define LG_RAI TG(_RAISE)
51#define LG_NUM TG(_NUMPAD)
50#define LT_LOW LT(_LOWER, KC_ENT) 52#define LT_LOW LT(_LOWER, KC_ENT)
51#define LT_RAI LT(_RAISE, KC_SPC) 53#define LT_RAI LT(_RAISE, KC_SPC)
52 54
@@ -59,7 +61,7 @@
59#define _____________________QWERTY_L2______________________ T_ESC, KC_A, KC_S, KC_D, KC_F, KC_G 61#define _____________________QWERTY_L2______________________ T_ESC, KC_A, KC_S, KC_D, KC_F, KC_G
60#define _____________________QWERTY_L3______________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B 62#define _____________________QWERTY_L3______________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
61 63
62#define _____________________QWERTY_R1______________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS 64#define _____________________QWERTY_R1______________________ T_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
63#define _____________________QWERTY_R2______________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT 65#define _____________________QWERTY_R2______________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
64#define _____________________QWERTY_R3______________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT_EQL 66#define _____________________QWERTY_R3______________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT_EQL
65 67
@@ -115,6 +117,10 @@
115#endif 117#endif
116#define _____________________ADJUST_R2______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX 118#define _____________________ADJUST_R2______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
117 119
120#define _____________________NUMPAD_1_______________________ T_Y, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST
121#define _____________________NUMPAD_2_______________________ XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS
122#define _____________________NUMPAD_3_______________________ KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_COLN
123
118#define _______________NAV_1______________ KC_PGUP, KC_HOME, KC_UP, KC_END 124#define _______________NAV_1______________ KC_PGUP, KC_HOME, KC_UP, KC_END
119#define _______________NAV_2______________ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT 125#define _______________NAV_2______________ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT
120 126
@@ -124,7 +130,7 @@
124#define __________________________________ _______, _______, _______, _______ 130#define __________________________________ _______, _______, _______, _______
125 131
126#define _____________MOD_LEFT_____________ KC_LALT, T_GUI, KC_LCTL, LT_RAI 132#define _____________MOD_LEFT_____________ KC_LALT, T_GUI, KC_LCTL, LT_RAI
127#define _____________MOD_RIGHT____________ LT_LOW, KC_BSPC, MT_DEL, LM_LOW 133#define _____________MOD_RIGHT____________ LT_LOW, KC_BSPC, MT_DEL, T_CPNU
128 134
129#define _________MEDIA_1_________ KC_BRIU, KC_MPLY, KC_MUTE 135#define _________MEDIA_1_________ KC_BRIU, KC_MPLY, KC_MUTE
130#define _________MEDIA_2_________ KC_BRID, KC_MFFD, KC__VOLUP 136#define _________MEDIA_2_________ KC_BRID, KC_MFFD, KC__VOLUP
@@ -135,7 +141,7 @@
135 #define ________MOD_RIGHT________ LT_LOW, KC_BSPC, MT_DEL 141 #define ________MOD_RIGHT________ LT_LOW, KC_BSPC, MT_DEL
136#else 142#else
137 #define ________MOD_LEFT_________ KC_LALT, T_GUI, KC_LCTL 143 #define ________MOD_LEFT_________ KC_LALT, T_GUI, KC_LCTL
138 #define ________MOD_RIGHT________ KC_BSPC, MT_DEL, LM_LOW 144 #define ________MOD_RIGHT________ KC_BSPC, MT_DEL, T_CPNU
139#endif 145#endif
140 146
141// Layout wrappers 147// Layout wrappers
diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c
index 285b0364e..ffb9eecbc 100644
--- a/users/ninjonas/oled.c
+++ b/users/ninjonas/oled.c
@@ -47,13 +47,16 @@ void render_layer_state(void) {
47 bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST); 47 bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
48 bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST); 48 bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
49 bool adjust = layer_state_is(_ADJUST); 49 bool adjust = layer_state_is(_ADJUST);
50 bool numpad = layer_state_is(_NUMPAD);
50 51
51 if(lower){ 52 if(lower){
52 oled_write_P(PSTR(" Lower "), true); 53 oled_write_P(PSTR(" Lower "), true);
53 } else if(raise){ 54 } else if(raise){
54 oled_write_P(PSTR(" Raise "), true); 55 oled_write_P(PSTR(" Raise "), true);
55 } else if(adjust){ 56 } else if(adjust){
56 oled_write_P(PSTR(" Adjust "), true); 57 oled_write_P(PSTR(" Adjust "), true);
58 } else if(numpad) {
59 oled_write_P(PSTR(" Numpad "), true);
57 } else { 60 } else {
58 oled_write_P(PSTR(" Default"), false); 61 oled_write_P(PSTR(" Default"), false);
59 } 62 }
diff --git a/users/ninjonas/process_records.c b/users/ninjonas/process_records.c
index 5c6d98ec8..b4a5e35d1 100644
--- a/users/ninjonas/process_records.c
+++ b/users/ninjonas/process_records.c
@@ -23,7 +23,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
23 } 23 }
24 break; 24 break;
25 25
26 // Sends + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt 26 // Sends Cmd + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt
27 case M_SHFT: 27 case M_SHFT:
28 if (record->event.pressed) { 28 if (record->event.pressed) {
29 register_code(KC_LGUI); 29 register_code(KC_LGUI);
@@ -98,9 +98,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
98 copy_paste_timer = timer_read(); 98 copy_paste_timer = timer_read();
99 } else { 99 } else {
100 if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { 100 if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {
101 tap_code16(LGUI(KC_C)); // Hold + C 101 tap_code16(LGUI(KC_C)); // Hold Cmd + C
102 } else { 102 } else {
103 tap_code16(LGUI(KC_V)); // Tap + V 103 tap_code16(LGUI(KC_V)); // Tap Cmd + V
104 } 104 }
105 } 105 }
106 106
diff --git a/users/ninjonas/tap_dances.c b/users/ninjonas/tap_dances.c
index 0665a1607..ece95887a 100644
--- a/users/ninjonas/tap_dances.c
+++ b/users/ninjonas/tap_dances.c
@@ -1,5 +1,87 @@
1#include "ninjonas.h" 1#include "ninjonas.h"
2 2
3//// BEGIN: Advanced Tap Dances
4int cur_dance (qk_tap_dance_state_t *state) {
5 if (state->count == 1) {
6 if (!state->pressed) {
7 return SINGLE_TAP;
8 } else {
9 return SINGLE_HOLD;
10 }
11 } else if (state->count == 2) {
12 return DOUBLE_TAP;
13 }
14 else return 8;
15}
16
17// BEGIN: Copy, Paste, NUMPAD
18// https://beta.docs.qmk.fm/features/feature_tap_dance#example-6-using-tap-dance-for-momentary-layer-switch-and-layer-toggle-keys
19static tap copy_paste_numpad_tap_state = {
20 .is_press_action = true,
21 .state = 0
22};
23
24void copy_paste_numpad_finished (qk_tap_dance_state_t *state, void *user_data) {
25 copy_paste_numpad_tap_state.state = cur_dance(state);
26 switch (copy_paste_numpad_tap_state.state) {
27 case SINGLE_TAP:
28 tap_code16(LGUI(KC_V)); // Tap Cmd + V
29 break;
30 case SINGLE_HOLD:
31 tap_code16(LGUI(KC_C)); // Hold Cmd + C
32 break;
33 case DOUBLE_TAP:
34 if (layer_state_is(_NUMPAD)) {
35 layer_off(_NUMPAD);
36 } else {
37 layer_on(_NUMPAD);
38 }
39 break;
40 }
41}
42
43void copy_paste_numpad_reset (qk_tap_dance_state_t *state, void *user_data) {
44 copy_paste_numpad_tap_state.state = 0;
45}
46// END: Copy, Paste, NUMPAD
47
48// BEGIN: Y, NUMPAD
49static tap y_numpad_tap_state = {
50 .is_press_action = true,
51 .state = 0
52};
53
54void y_numpad_finished (qk_tap_dance_state_t *state, void *user_data) {
55 y_numpad_tap_state.state = cur_dance(state);
56 switch (y_numpad_tap_state.state) {
57 case SINGLE_TAP:
58 tap_code(KC_Y);
59 break;
60 case SINGLE_HOLD:
61 register_code16(KC_Y);
62 break;
63 case DOUBLE_TAP:
64 if (layer_state_is(_NUMPAD)) {
65 layer_off(_NUMPAD);
66 } else {
67 layer_on(_NUMPAD);
68 }
69 break;
70 }
71}
72
73void y_numpad_reset (qk_tap_dance_state_t *state, void *user_data) {
74 switch (y_numpad_tap_state.state) {
75 case SINGLE_HOLD:
76 unregister_code16(KC_Y);
77 break;
78 }
79 y_numpad_tap_state.state = 0;
80}
81// END: Y, NUMPAD
82
83//// END: Advanced Tap Dances
84
3qk_tap_dance_action_t tap_dance_actions[] = { 85qk_tap_dance_action_t tap_dance_actions[] = {
4 [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), 86 [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
5 [TD_LBRC_BACK] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, LGUI(KC_LBRC)), 87 [TD_LBRC_BACK] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, LGUI(KC_LBRC)),
@@ -9,4 +91,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
9 [TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)), 91 [TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)),
10 [TD_W_CTRLW] = ACTION_TAP_DANCE_DOUBLE(KC_W, LGUI(KC_W)), 92 [TD_W_CTRLW] = ACTION_TAP_DANCE_DOUBLE(KC_W, LGUI(KC_W)),
11 [TD_Q_GUIQ] = ACTION_TAP_DANCE_DOUBLE(KC_Q, LGUI(KC_Q)), 93 [TD_Q_GUIQ] = ACTION_TAP_DANCE_DOUBLE(KC_Q, LGUI(KC_Q)),
94
95 // Advanced Tap Dances
96 [TD_COPY_PASTE_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, copy_paste_numpad_finished, copy_paste_numpad_reset),
97 [TD_Y_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, y_numpad_finished, y_numpad_reset),
12}; \ No newline at end of file 98}; \ No newline at end of file
diff --git a/users/ninjonas/tap_dances.h b/users/ninjonas/tap_dances.h
index 0a781ce4e..f2f39108d 100644
--- a/users/ninjonas/tap_dances.h
+++ b/users/ninjonas/tap_dances.h
@@ -1,6 +1,17 @@
1#pragma once 1#pragma once
2#include "ninjonas.h" 2#include "ninjonas.h"
3 3
4typedef struct {
5 bool is_press_action;
6 int state;
7} tap;
8
9enum tapdance_types{
10 SINGLE_TAP = 1,
11 SINGLE_HOLD = 2,
12 DOUBLE_TAP = 3
13};
14
4enum custom_tapdances{ 15enum custom_tapdances{
5 TD_ESC_CAPS = 0, 16 TD_ESC_CAPS = 0,
6 TD_LBRC_BACK, 17 TD_LBRC_BACK,
@@ -10,13 +21,17 @@ enum custom_tapdances{
10 TD_GUI_GUISPC, 21 TD_GUI_GUISPC,
11 TD_W_CTRLW, 22 TD_W_CTRLW,
12 TD_Q_GUIQ, 23 TD_Q_GUIQ,
24 TD_COPY_PASTE_NUMPAD,
25 TD_Y_NUMPAD,
13}; 26};
14 27
15#define T_ESC TD(TD_ESC_CAPS) // Tap for ESC, double tap for CAPSLOCK 28#define T_ESC TD(TD_ESC_CAPS) // Tap for ESC, double tap for CAPSLOCK
16#define T_LBRC TD(TD_LBRC_BACK) // Tap for [, double tap for back browser 29#define T_LBRC TD(TD_LBRC_BACK) // Tap for [, double tap for back browser
17#define T_RBRC TD(TD_RBRC_FWD) // Tap for ], double tap for forward browser 30#define T_RBRC TD(TD_RBRC_FWD) // Tap for ], double tap for forward browser
18#define T_TAB TD(TD_TAB_CTRLTAB) // Tap for TAB, double tap for CTRL + TAB 31#define T_TAB TD(TD_TAB_CTRLTAB) // Tap for TAB, double tap for CTRL + TAB
19#define T_GRV TD(TD_GRV_CTRLGRV) // Tap for GRV, double tap for  + GRV 32#define T_GRV TD(TD_GRV_CTRLGRV) // Tap for GRV, double tap for Cmd + GRV
20#define T_GUI TD(TD_GUI_GUISPC) // Tap for , double tap for  + Space 33#define T_GUI TD(TD_GUI_GUISPC) // Tap for Cmd, double tap for Cmd + Space
21#define T_W TD(TD_W_CTRLW) // Tap for W, double tap for  + W 34#define T_W TD(TD_W_CTRLW) // Tap for W, double tap for Cmd + W
22#define T_Q TD(TD_Q_GUIQ) // Tap for Q, double tap for  + Q \ No newline at end of file 35#define T_Q TD(TD_Q_GUIQ) // Tap for Q, double tap for Cmd + Q
36#define T_CPNU TD(TD_COPY_PASTE_NUMPAD) // Tap for paste, hold for copy, double tap for NUMPAD
37#define T_Y TD(TD_Y_NUMPAD) // Tap for Y, double tap for NUMPAD \ No newline at end of file