[Keymap] ninjonas keymap updates (#8170)
* [keymap] ninjonas keymap updates * [refactor(kyria)] updating keymap for numpad layer to be transparent rather than ignores * [keymap(lily58)] added numpad layer * [keymap(crkbd)] added numpad layer activated through tapdance * [fix(8170)] fixing code review changes requested by noroadsleft * [fix(8170)] updating comments and .md files to use 'Cmd' instead of  and ⌘
This commit is contained in:
		
							parent
							
								
									5e79da9f32
								
							
						
					
					
						commit
						79e6b78669
					
				
					 20 changed files with 378 additions and 80 deletions
				
			
		| 
						 | 
				
			
			@ -17,17 +17,17 @@ See: https://docs.qmk.fm/#/feature_userspace
 | 
			
		|||
- [Kyria](../../keyboards/kyria/keymaps/ninjonas)
 | 
			
		||||
 | 
			
		||||
## Features
 | 
			
		||||
### [Keys](ninjonas.h#L37)
 | 
			
		||||
### [Keys](ninjonas.h)
 | 
			
		||||
|Code | Description |
 | 
			
		||||
|---|---|
 | 
			
		||||
|K_LOCK | MacOS shortcut to execute lock command  + CTRL + Q |
 | 
			
		||||
|K_LOCK | MacOS shortcut to execute lock command Cmd + CTRL + Q |
 | 
			
		||||
|K_CSCN | MacOS shortcut to copy a portion of the screen to the clipboard |
 | 
			
		||||
|K_MDSH | MacOS shortcut to get em-dash `–` |
 | 
			
		||||
|K_RAPP | MacOS shortcut to switch apps to the right |
 | 
			
		||||
|K_LAPP | MacOS shortcut to switch apps to the left |
 | 
			
		||||
|K_CPRF |  + Shift + M. Used for switching Google Chrome profiles | 
 | 
			
		||||
|K_CPRF | Cmd + Shift + M. Used for switching Google Chrome profiles | 
 | 
			
		||||
 | 
			
		||||
### [Layers](ninjonas.h#L44)
 | 
			
		||||
### [Layers](ninjonas.h)
 | 
			
		||||
|Code | Description |
 | 
			
		||||
|---|---|
 | 
			
		||||
|LT_LOW | Tap for ENTER, hold for RAISE |
 | 
			
		||||
| 
						 | 
				
			
			@ -38,13 +38,13 @@ See: https://docs.qmk.fm/#/feature_userspace
 | 
			
		|||
|LG_LOW | Press to toggle LOWER layer |
 | 
			
		||||
|LG_RAI | Press to toggle RAISE layer |
 | 
			
		||||
 | 
			
		||||
### [Mod-Taps](ninjonas.h#L50)
 | 
			
		||||
### [Mod-Taps](ninjonas.h)
 | 
			
		||||
|Code | Description |
 | 
			
		||||
|---|---|
 | 
			
		||||
|MT_DEL | Tap for Delete, hold for  + ALT + SHIFT |
 | 
			
		||||
|MT_DEL | Tap for Delete, hold for Cmd + ALT + SHIFT |
 | 
			
		||||
|MT_EQL | Tap for =, hold for ALT + SHIFT |
 | 
			
		||||
 | 
			
		||||
### [Layout Blocks](ninjonas.h#L54)
 | 
			
		||||
### [Layout Blocks](ninjonas.h)
 | 
			
		||||
Predefined keyboard layout templates to speed up configuring split keyboards
 | 
			
		||||
 | 
			
		||||
|Code | Description |
 | 
			
		||||
| 
						 | 
				
			
			@ -59,6 +59,7 @@ Predefined keyboard layout templates to speed up configuring split keyboards
 | 
			
		|||
|MOUSE | Mouse Cluster |
 | 
			
		||||
|MEDIA | Media Cluster |
 | 
			
		||||
|MOD | Modifier Cluster |
 | 
			
		||||
|NUMPAD | Numpad Cluster |
 | 
			
		||||
 | 
			
		||||
### [Macros](process_records.c)
 | 
			
		||||
|Code | Description |
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +69,7 @@ Predefined keyboard layout templates to speed up configuring split keyboards
 | 
			
		|||
|M_MALL | Macro to send QMK make command to all [ninjonas](#Supported%20Keyboards) keyboards |
 | 
			
		||||
|M_FLSH | Macro to send QMK make command to compile keyboard with the correct bootloader |
 | 
			
		||||
|M_VRSN | Macro to send QMK version |
 | 
			
		||||
|M_SHFT | Sends  + alt + shift to a keycode to activate [ShiftIt](https://github.com/fikovnik/ShiftIt) |
 | 
			
		||||
|M_SHFT | Sends Cmd + alt + shift to a keycode to activate [ShiftIt](https://github.com/fikovnik/ShiftIt) |
 | 
			
		||||
|M_CODE | Opens [Visual Studio Code](https://code.visualstudio.com/) on current directory |
 | 
			
		||||
|M_TERM | Launches Spotlight and calls Terminal |
 | 
			
		||||
|M_COPA | Single key copy/paste |
 | 
			
		||||
| 
						 | 
				
			
			@ -81,10 +82,12 @@ Predefined keyboard layout templates to speed up configuring split keyboards
 | 
			
		|||
|T_LBRC | Tap once for [, double for back browser |
 | 
			
		||||
|T_RBRC | Tap once for ], double for forward browser |
 | 
			
		||||
|T_TAB | Tap once for TAB, double for CTRL + TAB |
 | 
			
		||||
|T_GRV | Tap once for GRV, double for  + GRV |
 | 
			
		||||
|T_GUI | Tap once for , double to open spotlight |
 | 
			
		||||
|T_W | Tap for W, double tap for  + W |
 | 
			
		||||
|T_Q | Tap for Q, double tap for  + Q |
 | 
			
		||||
|T_GRV | Tap once for GRV, double for Cmd + GRV |
 | 
			
		||||
|T_GUI | Tap once for Cmd, double to open spotlight |
 | 
			
		||||
|T_W | Tap for W, double tap for Cmd + W |
 | 
			
		||||
|T_Q | Tap for Q, double tap for Cmd + Q |
 | 
			
		||||
|T_CPNU | Tap for Cmd + V, hold for Cmd + C, double tap for NUMPAD layer |
 | 
			
		||||
|T_Y | Tap for Y, double tap for NUMPAD layer |
 | 
			
		||||
 | 
			
		||||
### Secrets
 | 
			
		||||
There'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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#ifdef TAPPING_TERM
 | 
			
		||||
    #undef TAPPING_TERM
 | 
			
		||||
    #define TAPPING_TERM 200
 | 
			
		||||
    #define TAPPING_TERM 300
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Mouse Settings: Smoothing out mouse movement on keypress
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,20 +33,22 @@
 | 
			
		|||
#define _LOWER 3
 | 
			
		||||
#define _RAISE 4
 | 
			
		||||
#define _ADJUST 5
 | 
			
		||||
#define _NUMPAD 6
 | 
			
		||||
 | 
			
		||||
// Shortcut Keys
 | 
			
		||||
#define K_LOCK LGUI(LCTL(KC_Q)) // Locks screen on MacOS
 | 
			
		||||
#define K_CSCN LGUI(LCTL(LSFT(KC_4))) // Copy a portion of the screen to the clipboard
 | 
			
		||||
#define K_CPRF LGUI(LSFT(KC_M)) //   + Shift + M. Used for switching Google Chrome profiles
 | 
			
		||||
#define K_CPRF LGUI(LSFT(KC_M)) //  Cmd + Shift + M. Used for switching Google Chrome profiles
 | 
			
		||||
#define K_MDSH LSFT(LALT(KC_MINS))
 | 
			
		||||
#define K_LAPP SGUI(KC_TAB) //  + Shift + Tab
 | 
			
		||||
#define K_RAPP LGUI(KC_TAB) //  + Tab
 | 
			
		||||
#define K_LAPP SGUI(KC_TAB) // Cmd + Shift + Tab
 | 
			
		||||
#define K_RAPP LGUI(KC_TAB) // Cmd + Tab
 | 
			
		||||
 | 
			
		||||
// Layer Keys
 | 
			
		||||
#define LM_LOW MO(_LOWER)
 | 
			
		||||
#define LM_RAI MO(_RAISE)
 | 
			
		||||
#define LG_LOW TG(_LOWER)
 | 
			
		||||
#define LG_RAI TG(_RAISE)
 | 
			
		||||
#define LG_NUM TG(_NUMPAD)
 | 
			
		||||
#define LT_LOW LT(_LOWER, KC_ENT)
 | 
			
		||||
#define LT_RAI LT(_RAISE, KC_SPC)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +61,7 @@
 | 
			
		|||
#define _____________________QWERTY_L2______________________ T_ESC, KC_A, KC_S, KC_D, KC_F, KC_G
 | 
			
		||||
#define _____________________QWERTY_L3______________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
 | 
			
		||||
 | 
			
		||||
#define _____________________QWERTY_R1______________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
 | 
			
		||||
#define _____________________QWERTY_R1______________________ T_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
 | 
			
		||||
#define _____________________QWERTY_R2______________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
 | 
			
		||||
#define _____________________QWERTY_R3______________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT_EQL
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -115,6 +117,10 @@
 | 
			
		|||
#endif
 | 
			
		||||
#define _____________________ADJUST_R2______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
 | 
			
		||||
 | 
			
		||||
#define _____________________NUMPAD_1_______________________ T_Y, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST
 | 
			
		||||
#define _____________________NUMPAD_2_______________________ XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS
 | 
			
		||||
#define _____________________NUMPAD_3_______________________ KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_COLN
 | 
			
		||||
 | 
			
		||||
#define _______________NAV_1______________ KC_PGUP, KC_HOME, KC_UP, KC_END
 | 
			
		||||
#define _______________NAV_2______________ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +130,7 @@
 | 
			
		|||
#define __________________________________ _______, _______, _______, _______
 | 
			
		||||
 | 
			
		||||
#define _____________MOD_LEFT_____________ KC_LALT, T_GUI, KC_LCTL, LT_RAI
 | 
			
		||||
#define _____________MOD_RIGHT____________ LT_LOW, KC_BSPC, MT_DEL, LM_LOW
 | 
			
		||||
#define _____________MOD_RIGHT____________ LT_LOW, KC_BSPC, MT_DEL, T_CPNU
 | 
			
		||||
 | 
			
		||||
#define _________MEDIA_1_________ KC_BRIU, KC_MPLY, KC_MUTE
 | 
			
		||||
#define _________MEDIA_2_________ KC_BRID, KC_MFFD, KC__VOLUP
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +141,7 @@
 | 
			
		|||
  #define ________MOD_RIGHT________ LT_LOW, KC_BSPC, MT_DEL
 | 
			
		||||
#else
 | 
			
		||||
  #define ________MOD_LEFT_________ KC_LALT, T_GUI, KC_LCTL
 | 
			
		||||
  #define ________MOD_RIGHT________ KC_BSPC, MT_DEL, LM_LOW
 | 
			
		||||
  #define ________MOD_RIGHT________ KC_BSPC, MT_DEL, T_CPNU
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Layout wrappers
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,13 +47,16 @@ void render_layer_state(void) {
 | 
			
		|||
  bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
 | 
			
		||||
  bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
 | 
			
		||||
  bool adjust = layer_state_is(_ADJUST);
 | 
			
		||||
  bool numpad = layer_state_is(_NUMPAD);
 | 
			
		||||
 | 
			
		||||
  if(lower){ 
 | 
			
		||||
    oled_write_P(PSTR(" Lower "), true); 
 | 
			
		||||
  } else if(raise){ 
 | 
			
		||||
    oled_write_P(PSTR(" Raise "), true); 
 | 
			
		||||
  } else if(adjust){ 
 | 
			
		||||
    oled_write_P(PSTR(" Adjust "), true); 
 | 
			
		||||
      oled_write_P(PSTR(" Adjust "), true); 
 | 
			
		||||
  } else if(numpad) {
 | 
			
		||||
      oled_write_P(PSTR(" Numpad "), true); 
 | 
			
		||||
  } else { 
 | 
			
		||||
    oled_write_P(PSTR(" Default"), false); 
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    // Sends  + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt
 | 
			
		||||
    // Sends Cmd + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt
 | 
			
		||||
    case M_SHFT:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        register_code(KC_LGUI);
 | 
			
		||||
| 
						 | 
				
			
			@ -98,9 +98,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
          copy_paste_timer = timer_read();
 | 
			
		||||
      } else {
 | 
			
		||||
          if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {  
 | 
			
		||||
              tap_code16(LGUI(KC_C)); // Hold  + C
 | 
			
		||||
              tap_code16(LGUI(KC_C)); // Hold Cmd + C
 | 
			
		||||
          } else {  
 | 
			
		||||
              tap_code16(LGUI(KC_V)); // Tap  + V
 | 
			
		||||
              tap_code16(LGUI(KC_V)); // Tap Cmd + V
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,87 @@
 | 
			
		|||
#include "ninjonas.h"
 | 
			
		||||
 | 
			
		||||
//// BEGIN: Advanced Tap Dances
 | 
			
		||||
int cur_dance (qk_tap_dance_state_t *state) {
 | 
			
		||||
  if (state->count == 1) {
 | 
			
		||||
    if (!state->pressed) {
 | 
			
		||||
      return SINGLE_TAP;
 | 
			
		||||
    } else {
 | 
			
		||||
      return SINGLE_HOLD;
 | 
			
		||||
    }
 | 
			
		||||
  } else if (state->count == 2) {
 | 
			
		||||
    return DOUBLE_TAP;
 | 
			
		||||
  }
 | 
			
		||||
  else return 8;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BEGIN: Copy, Paste, NUMPAD
 | 
			
		||||
// https://beta.docs.qmk.fm/features/feature_tap_dance#example-6-using-tap-dance-for-momentary-layer-switch-and-layer-toggle-keys
 | 
			
		||||
static tap copy_paste_numpad_tap_state = {
 | 
			
		||||
  .is_press_action = true,
 | 
			
		||||
  .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void copy_paste_numpad_finished (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
  copy_paste_numpad_tap_state.state = cur_dance(state);
 | 
			
		||||
  switch (copy_paste_numpad_tap_state.state) {
 | 
			
		||||
    case SINGLE_TAP: 
 | 
			
		||||
      tap_code16(LGUI(KC_V)); // Tap Cmd + V
 | 
			
		||||
      break;
 | 
			
		||||
    case SINGLE_HOLD: 
 | 
			
		||||
      tap_code16(LGUI(KC_C)); // Hold Cmd + C
 | 
			
		||||
      break;
 | 
			
		||||
    case DOUBLE_TAP: 
 | 
			
		||||
      if (layer_state_is(_NUMPAD)) {
 | 
			
		||||
        layer_off(_NUMPAD);
 | 
			
		||||
      } else { 
 | 
			
		||||
        layer_on(_NUMPAD);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void copy_paste_numpad_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
  copy_paste_numpad_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
// END: Copy, Paste, NUMPAD
 | 
			
		||||
 | 
			
		||||
// BEGIN: Y, NUMPAD
 | 
			
		||||
static tap y_numpad_tap_state = {
 | 
			
		||||
  .is_press_action = true,
 | 
			
		||||
  .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void y_numpad_finished (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
  y_numpad_tap_state.state = cur_dance(state);
 | 
			
		||||
  switch (y_numpad_tap_state.state) {
 | 
			
		||||
    case SINGLE_TAP: 
 | 
			
		||||
      tap_code(KC_Y); 
 | 
			
		||||
      break;
 | 
			
		||||
    case SINGLE_HOLD: 
 | 
			
		||||
      register_code16(KC_Y);
 | 
			
		||||
      break;
 | 
			
		||||
    case DOUBLE_TAP: 
 | 
			
		||||
      if (layer_state_is(_NUMPAD)) {
 | 
			
		||||
        layer_off(_NUMPAD);
 | 
			
		||||
      } else { 
 | 
			
		||||
        layer_on(_NUMPAD);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void y_numpad_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
  switch (y_numpad_tap_state.state) {
 | 
			
		||||
    case SINGLE_HOLD:
 | 
			
		||||
      unregister_code16(KC_Y); 
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  y_numpad_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
// END: Y, NUMPAD
 | 
			
		||||
 | 
			
		||||
//// END: Advanced Tap Dances
 | 
			
		||||
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
  [TD_ESC_CAPS]     = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
 | 
			
		||||
  [TD_LBRC_BACK]    = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, LGUI(KC_LBRC)),
 | 
			
		||||
| 
						 | 
				
			
			@ -9,4 +91,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		|||
  [TD_GUI_GUISPC]   = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)),
 | 
			
		||||
  [TD_W_CTRLW]      = ACTION_TAP_DANCE_DOUBLE(KC_W, LGUI(KC_W)),
 | 
			
		||||
  [TD_Q_GUIQ]       = ACTION_TAP_DANCE_DOUBLE(KC_Q, LGUI(KC_Q)),
 | 
			
		||||
 | 
			
		||||
  // Advanced Tap Dances
 | 
			
		||||
  [TD_COPY_PASTE_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, copy_paste_numpad_finished, copy_paste_numpad_reset),
 | 
			
		||||
  [TD_Y_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, y_numpad_finished, y_numpad_reset),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,17 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
#include "ninjonas.h"
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  bool is_press_action;
 | 
			
		||||
  int state;
 | 
			
		||||
} tap;
 | 
			
		||||
 | 
			
		||||
enum tapdance_types{
 | 
			
		||||
  SINGLE_TAP = 1,
 | 
			
		||||
  SINGLE_HOLD = 2,
 | 
			
		||||
  DOUBLE_TAP = 3
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum custom_tapdances{
 | 
			
		||||
  TD_ESC_CAPS = 0,
 | 
			
		||||
  TD_LBRC_BACK,
 | 
			
		||||
| 
						 | 
				
			
			@ -10,13 +21,17 @@ enum custom_tapdances{
 | 
			
		|||
  TD_GUI_GUISPC,
 | 
			
		||||
  TD_W_CTRLW,
 | 
			
		||||
  TD_Q_GUIQ,
 | 
			
		||||
  TD_COPY_PASTE_NUMPAD,
 | 
			
		||||
  TD_Y_NUMPAD,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define T_ESC  TD(TD_ESC_CAPS)    // Tap for ESC, double tap for CAPSLOCK
 | 
			
		||||
#define T_LBRC TD(TD_LBRC_BACK)   // Tap for [, double tap for back browser
 | 
			
		||||
#define T_RBRC TD(TD_RBRC_FWD)    // Tap for ], double tap for forward browser
 | 
			
		||||
#define T_TAB  TD(TD_TAB_CTRLTAB) // Tap for TAB, double tap for CTRL + TAB
 | 
			
		||||
#define T_GRV  TD(TD_GRV_CTRLGRV) // Tap for GRV, double tap for  + GRV
 | 
			
		||||
#define T_GUI  TD(TD_GUI_GUISPC)  // Tap for , double tap for  + Space
 | 
			
		||||
#define T_W    TD(TD_W_CTRLW)     // Tap for W, double tap for  + W
 | 
			
		||||
#define T_Q    TD(TD_Q_GUIQ)      // Tap for Q, double tap for  + Q
 | 
			
		||||
#define T_GRV  TD(TD_GRV_CTRLGRV) // Tap for GRV, double tap for Cmd + GRV
 | 
			
		||||
#define T_GUI  TD(TD_GUI_GUISPC)  // Tap for Cmd, double tap for Cmd + Space
 | 
			
		||||
#define T_W    TD(TD_W_CTRLW)     // Tap for W, double tap for Cmd + W
 | 
			
		||||
#define T_Q    TD(TD_Q_GUIQ)      // Tap for Q, double tap for Cmd + Q
 | 
			
		||||
#define T_CPNU TD(TD_COPY_PASTE_NUMPAD)  // Tap for paste, hold for copy, double tap for NUMPAD
 | 
			
		||||
#define T_Y    TD(TD_Y_NUMPAD)     // Tap for Y, double tap for NUMPAD
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue