* updates to incorporate combined mouse key acceleration functionality * tab switching in chrome works, updated readme * updated keymap image * updated keymap image Co-authored-by: Nathan Vercaemert <nathan.vercaemert@gmail.com>
		
			
				
	
	
		
			435 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			435 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include QMK_KEYBOARD_H
 | 
						|
#include "version.h"
 | 
						|
#include "keymap_german.h"
 | 
						|
#include "keymap_nordic.h"
 | 
						|
#include "keymap_french.h"
 | 
						|
#include "keymap_spanish.h"
 | 
						|
#include "keymap_hungarian.h"
 | 
						|
#include "keymap_swedish.h"
 | 
						|
#include "keymap_br_abnt2.h"
 | 
						|
#include "keymap_canadian_multilingual.h"
 | 
						|
#include "keymap_german_ch.h"
 | 
						|
#include "keymap_jp.h"
 | 
						|
#include "keymap_bepo.h"
 | 
						|
 | 
						|
#define KC_MAC_UNDO LGUI(KC_Z)
 | 
						|
#define KC_MAC_CUT LGUI(KC_X)
 | 
						|
#define KC_MAC_COPY LGUI(KC_C)
 | 
						|
#define KC_MAC_PASTE LGUI(KC_V)
 | 
						|
#define KC_PC_UNDO LCTL(KC_Z)
 | 
						|
#define KC_PC_CUT LCTL(KC_X)
 | 
						|
#define KC_PC_COPY LCTL(KC_C)
 | 
						|
#define KC_PC_PASTE LCTL(KC_V)
 | 
						|
#define ES_LESS_MAC KC_GRAVE
 | 
						|
#define ES_GRTR_MAC LSFT(KC_GRAVE)
 | 
						|
#define ES_BSLS_MAC ALGR(KC_6)
 | 
						|
#define NO_PIPE_ALT KC_GRAVE
 | 
						|
#define NO_BSLS_ALT KC_EQUAL
 | 
						|
 | 
						|
enum custom_keycodes {
 | 
						|
  RGB_SLD = EZ_SAFE_RANGE,
 | 
						|
  MS_WH_UP,
 | 
						|
  MS_WH_DOWN,
 | 
						|
  MS_WH_RIGHT,
 | 
						|
  MS_WH_LEFT,
 | 
						|
};
 | 
						|
 | 
						|
// tapdance keycodes
 | 
						|
enum td_keycodes {
 | 
						|
  CTRL_TO12,
 | 
						|
  SHIFT_TO13,
 | 
						|
  ALT_TO11,
 | 
						|
};
 | 
						|
 | 
						|
// define a type containing as many tapdance states as you need
 | 
						|
typedef enum {
 | 
						|
  SINGLE_TAP,
 | 
						|
  SINGLE_HOLD,
 | 
						|
} td_state_t;
 | 
						|
 | 
						|
// create a global instance of the tapdance state type
 | 
						|
static td_state_t td_state;
 | 
						|
 | 
						|
// declare your tapdance functions:
 | 
						|
 | 
						|
// function to determine the current tapdance state
 | 
						|
int cur_dance (qk_tap_dance_state_t *state);
 | 
						|
 | 
						|
// `finished` and `reset` functions for each tapdance keycode
 | 
						|
void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data);
 | 
						|
void ctrlto12_reset (qk_tap_dance_state_t *state, void *user_data);
 | 
						|
void altto11_finished (qk_tap_dance_state_t *state, void *user_data);
 | 
						|
void altto11_reset (qk_tap_dance_state_t *state, void *user_data);
 | 
						|
void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data);
 | 
						|
void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data);
 | 
						|
 | 
						|
 | 
						|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						|
  [0] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                                          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
 | 
						|
    KC_INSERT,      KC_Q,           LGUI_T(KC_W),   MT(MOD_HYPR, KC_E),LT(5,KC_R),  KC_T,           KC_NO,                                          KC_NO,          KC_Y,           LT(6,KC_U),     MT(MOD_HYPR, KC_I),RGUI_T(KC_O), KC_P,          KC_PSCREEN,
 | 
						|
    KC_ESCAPE,      LSFT_T(KC_A),   LCTL_T(KC_S),   LALT_T(KC_D),   LT(1,KC_F),     KC_G,                                                                           KC_H,           LT(2,KC_J),     RALT_T(KC_K),   RCTL_T(KC_L),   RSFT_T(KC_SCOLON),KC_CAPSLOCK,
 | 
						|
    KC_HOME,        LT(9,KC_Z),     MT(MOD_LGUI | MOD_LCTL,KC_X), LT(7,KC_C), LT(3,KC_V), KC_B,     KC_NO,                                          KC_NO,          KC_N,           LT(4,KC_M),     LT(8,KC_COMMA), MT(MOD_RGUI | MOD_RCTL, KC_DOT), KC_QUOTE, KC_END,
 | 
						|
    KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_DELETE,                                                                                                      KC_TAB,         KC_NO,          KC_NO,          KC_NO,          KC_NO,
 | 
						|
                                                                                                    KC_NO,          KC_NO,          KC_NO,          KC_NO,
 | 
						|
                                                                                                                    KC_NO,          KC_NO,
 | 
						|
                                                                                    TO(10),         KC_BSPACE,      KC_NO,          KC_NO,          KC_ENTER,       KC_SPACE
 | 
						|
  ),
 | 
						|
  [1] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_HYPR,        KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_7,           KC_8,           KC_9,           KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LSHIFT,      KC_LCTRL,       KC_LALT,        KC_TRANSPARENT, KC_NO,                                                                          KC_NO,          KC_4,           KC_5,           KC_6,           KC_0,           KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  KC_NO, KC_NO,   KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_1,           KC_2,           KC_3,           KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [2] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_HYPR,        KC_RGUI,        KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LPRN,        KC_RPRN,        KC_ASTR,        KC_SLASH,       KC_NO,                                                                          KC_NO,          KC_TRANSPARENT, KC_RALT,        KC_RCTRL,       KC_RSHIFT,      KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          MT(MOD_RGUI | MOD_RCTL, KC_NO), KC_NO, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [3] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_HYPR,        KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_F9,          KC_F10,         KC_F11,         KC_F12,         KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LSHIFT,      KC_LCTRL,       KC_LALT,        KC_NO,          KC_NO,                                                                          KC_NO,          KC_F5,          KC_F6,          KC_F7,          KC_F8,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  KC_NO,          KC_TRANSPARENT, KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [4] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_HYPR,        KC_RGUI,        KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LBRACKET,    KC_RBRACKET,    KC_QUES,        KC_EXLM,        KC_NO,                                                                          KC_NO,          KC_NO,          KC_RALT,        KC_RCTRL,       KC_RSHIFT,      KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_TRANSPARENT, KC_NO,          MT(MOD_RGUI | MOD_RCTL, KC_NO), KC_NO, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [5] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_HYPR,        KC_TRANSPARENT, KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LSHIFT,      KC_LCTRL,       KC_LALT,        KC_NO,          KC_NO,                                                                          KC_NO,          KC_HASH,        KC_BSLASH,      KC_GRAVE,       KC_TILD,        KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  KC_NO, KC_NO,   KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [6] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_TRANSPARENT, KC_HYPR,        KC_RGUI,        KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_UNDS,        KC_EQUAL,       KC_MINUS,       KC_PLUS,        KC_NO,                                                                          KC_NO,          KC_NO,          KC_RALT,        KC_RCTRL,       KC_RSHIFT,      KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          MT(MOD_RGUI | MOD_RCTL, KC_NO), KC_NO, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [7] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                                                                          KC_NO,          KC_AT,          KC_DLR,         KC_PERC,        KC_CIRC,        KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_TRANSPARENT, KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [8] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LCBR,        KC_RCBR,        KC_AMPR,        KC_PIPE,        KC_NO,                                                                          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_TRANSPARENT, KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [9] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_AUDIO_VOL_UP,KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                                                                          KC_NO,          KC_MEDIA_PREV_TRACK,KC_AUDIO_VOL_DOWN,KC_MEDIA_NEXT_TRACK,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
  [10] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_MS_BTN2,     KC_ACL2,        KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_MS_UP,       KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, TD(SHIFT_TO13), TD(CTRL_TO12),  TD(ALT_TO11),   KC_MS_BTN1,     KC_NO,                                                                          KC_NO,          KC_MS_LEFT,     KC_MS_DOWN,     KC_MS_RIGHT,    KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  KC_ACL0, KC_NO, KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
 | 
						|
  ),
 | 
						|
  [11] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_HYPR,        KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_UP,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LSHIFT,      KC_LCTRL,       KC_LALT,        KC_NO,          KC_NO,                                                                          KC_NO,          KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  KC_NO, KC_NO,   KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
 | 
						|
  ),
 | 
						|
  [12] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_HYPR,        KC_ACL2,        KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_MS_WH_UP,    KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LSHIFT,      KC_LCTRL,       KC_LALT,        KC_NO,          KC_NO,                                                                          KC_NO,          KC_MS_WH_LEFT,  KC_MS_WH_DOWN,  KC_MS_WH_RIGHT, KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  MO(14), KC_NO,  KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
 | 
						|
  ),
 | 
						|
  [13] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_LGUI,        KC_HYPR,        KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_PGUP,        KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_LSHIFT,      KC_LCTRL,       KC_LALT,        KC_NO,          KC_NO,                                                                          KC_NO,          KC_NO,          KC_PGDOWN,      KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          MT(MOD_LGUI | MOD_LCTL,KC_NO),  KC_NO, KC_NO,   KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
 | 
						|
  ),
 | 
						|
  [14] = LAYOUT_ergodox_pretty(
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          MS_WH_UP,   KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                                                                          KC_NO,          MS_WH_LEFT,     MS_WH_DOWN, MS_WH_RIGHT,    KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_NO,          KC_NO,          KC_TRANSPARENT, KC_NO,          KC_NO,          KC_TRANSPARENT,                                 KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,      KC_NO,          KC_NO,          KC_TRANSPARENT,
 | 
						|
    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,                                                                                                 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                                                    KC_TRANSPARENT, KC_TRANSPARENT,
 | 
						|
                                                                                    KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
 | 
						|
  ),
 | 
						|
};
 | 
						|
 | 
						|
uint32_t layer_state_set_user(uint32_t state) {
 | 
						|
  uint8_t layer = biton32(state);
 | 
						|
  ergodox_board_led_off();
 | 
						|
  ergodox_right_led_1_off();
 | 
						|
  ergodox_right_led_2_off();
 | 
						|
  ergodox_right_led_3_off();
 | 
						|
  switch (layer) {
 | 
						|
    case 1:
 | 
						|
      ergodox_right_led_1_on();
 | 
						|
      break;
 | 
						|
    case 2:
 | 
						|
      ergodox_right_led_2_on();
 | 
						|
      break;
 | 
						|
    case 3:
 | 
						|
      ergodox_right_led_3_on();
 | 
						|
      break;
 | 
						|
    case 4:
 | 
						|
      ergodox_right_led_1_on();
 | 
						|
      ergodox_right_led_2_on();
 | 
						|
      break;
 | 
						|
    case 5:
 | 
						|
      ergodox_right_led_1_on();
 | 
						|
      ergodox_right_led_3_on();
 | 
						|
      break;
 | 
						|
    case 6:
 | 
						|
      ergodox_right_led_2_on();
 | 
						|
      ergodox_right_led_3_on();
 | 
						|
      break;
 | 
						|
    case 7:
 | 
						|
      ergodox_right_led_1_on();
 | 
						|
      ergodox_right_led_2_on();
 | 
						|
      ergodox_right_led_3_on();
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      break;
 | 
						|
  }
 | 
						|
  return state;
 | 
						|
};
 | 
						|
 | 
						|
// determine the tapdance state to return
 | 
						|
int cur_dance (qk_tap_dance_state_t *state) {
 | 
						|
  if (state->count == 1) {
 | 
						|
    if (state->interrupted && state->pressed && state->interrupting_keycode == KC_MS_BTN1) {return SINGLE_HOLD;}
 | 
						|
    if (state->interrupted && state->pressed && state->interrupting_keycode == 22273) {return SINGLE_HOLD;}
 | 
						|
    if (state->interrupted && state->pressed && state->interrupting_keycode == 22272) {return SINGLE_HOLD;}
 | 
						|
    if (state->interrupted && state->pressed && state->interrupting_keycode == KC_TAB) {return SINGLE_HOLD;}
 | 
						|
    else if (state->interrupted || !state->pressed) {
 | 
						|
        // if (state->interrupted) {
 | 
						|
        //     print("interrupted\n");
 | 
						|
        //     uprintf("Shift: %u\n", KC_LSHIFT);
 | 
						|
        //     uprintf("Control: %u\n", KC_LCTRL);
 | 
						|
        //     uprintf("%u\n",state->interrupting_keycode);
 | 
						|
        // }
 | 
						|
        return SINGLE_TAP;
 | 
						|
    }
 | 
						|
    else { return SINGLE_HOLD; }
 | 
						|
  }
 | 
						|
  else { return 2; } // any number higher than the maximum state value you return above
 | 
						|
}
 | 
						|
// /* Backup in case previous code is hard to piece together. */
 | 
						|
// int cur_dance (qk_tap_dance_state_t *state) {
 | 
						|
//   if (state->count == 1) {
 | 
						|
//     if (state->interrupted || !state->pressed) { return SINGLE_TAP; }
 | 
						|
//     else { return SINGLE_HOLD; }
 | 
						|
//   }
 | 
						|
//   else { return 2; } // any number higher than the maximum state value you return above
 | 
						|
// }
 | 
						|
 | 
						|
void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data) {
 | 
						|
  td_state = cur_dance(state);
 | 
						|
  switch (td_state) {
 | 
						|
    case SINGLE_TAP:
 | 
						|
      layer_on(12);
 | 
						|
      break;
 | 
						|
    case SINGLE_HOLD:
 | 
						|
      if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43)) {
 | 
						|
        register_mods(MOD_BIT(KC_LCTRL));
 | 
						|
        break;
 | 
						|
      }
 | 
						|
      register_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
 | 
						|
      if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
 | 
						|
        register_code16(LCTL(KC_MS_BTN1));
 | 
						|
      }
 | 
						|
      break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void ctrlto12_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
						|
  switch (td_state) {
 | 
						|
    case SINGLE_TAP:
 | 
						|
      break;
 | 
						|
    case SINGLE_HOLD:
 | 
						|
      if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43) ) {
 | 
						|
        unregister_mods(MOD_BIT(KC_LCTRL));
 | 
						|
        break;
 | 
						|
      }
 | 
						|
      unregister_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
 | 
						|
      if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
 | 
						|
        unregister_code16(LCTL(KC_MS_BTN1));
 | 
						|
      }
 | 
						|
      break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data) {
 | 
						|
  td_state = cur_dance(state);
 | 
						|
  switch (td_state) {
 | 
						|
    case SINGLE_TAP:
 | 
						|
      layer_on(13);
 | 
						|
      break;
 | 
						|
    case SINGLE_HOLD:
 | 
						|
      if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
 | 
						|
        register_mods(MOD_BIT(KC_LSHIFT));
 | 
						|
        break;
 | 
						|
      }
 | 
						|
      register_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
 | 
						|
      if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
 | 
						|
        register_code16(LSFT(KC_MS_BTN1));
 | 
						|
      }
 | 
						|
      break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
						|
  switch (td_state) {
 | 
						|
    case SINGLE_TAP:
 | 
						|
      break;
 | 
						|
    case SINGLE_HOLD:
 | 
						|
      if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
 | 
						|
        unregister_mods(MOD_BIT(KC_LSHIFT));
 | 
						|
        break;
 | 
						|
      }
 | 
						|
      unregister_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
 | 
						|
      if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
 | 
						|
        unregister_code16(LSFT(KC_MS_BTN1));
 | 
						|
      }
 | 
						|
      break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void altto11_finished (qk_tap_dance_state_t *state, void *user_data) {
 | 
						|
  td_state = cur_dance(state);
 | 
						|
  switch (td_state) {
 | 
						|
    case SINGLE_TAP:
 | 
						|
      layer_on(11);
 | 
						|
      break;
 | 
						|
    case SINGLE_HOLD:
 | 
						|
      register_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
 | 
						|
      if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
 | 
						|
        register_code16(LALT(KC_MS_BTN1));
 | 
						|
      }
 | 
						|
      break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void altto11_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
						|
  switch (td_state) {
 | 
						|
    case SINGLE_TAP:
 | 
						|
      break;
 | 
						|
    case SINGLE_HOLD:
 | 
						|
      unregister_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
 | 
						|
      if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
 | 
						|
        unregister_code16(LALT(KC_MS_BTN1));
 | 
						|
      }
 | 
						|
      break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions
 | 
						|
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
						|
  [CTRL_TO12] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlto12_finished, ctrlto12_reset),
 | 
						|
  [SHIFT_TO13] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftto13_finished, shiftto13_reset),
 | 
						|
  [ALT_TO11] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altto11_finished, altto11_reset),
 | 
						|
};
 | 
						|
 | 
						|
/* Debugging functions */
 | 
						|
 | 
						|
void keyboard_post_init_user(void) {
 | 
						|
  // Customise these values to desired behaviour
 | 
						|
//   debug_enable=true;
 | 
						|
//   debug_matrix=true;
 | 
						|
//   debug_keyboard=true;
 | 
						|
//   debug_mouse=true;
 | 
						|
}
 | 
						|
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
						|
    // If console is enabled, it will print the matrix position and status of each key pressed
 | 
						|
    // #ifdef CONSOLE_ENABLE
 | 
						|
    //     uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
 | 
						|
    // #endif
 | 
						|
    switch (keycode) {
 | 
						|
    case MS_WH_DOWN:
 | 
						|
        if (record->event.pressed) {
 | 
						|
            SEND_STRING(SS_TAP(X_MS_WH_DOWN));
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    case MS_WH_UP:
 | 
						|
        if (record->event.pressed) {
 | 
						|
            SEND_STRING(SS_TAP(X_MS_WH_UP));
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    case MS_WH_LEFT:
 | 
						|
        if (record->event.pressed) {
 | 
						|
            SEND_STRING(SS_TAP(X_MS_WH_LEFT));
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    case MS_WH_RIGHT:
 | 
						|
        if (record->event.pressed) {
 | 
						|
            SEND_STRING(SS_TAP(X_MS_WH_RIGHT));
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    }
 | 
						|
    return true;
 | 
						|
}
 | 
						|
 |