@ -8,13 +8,14 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define NUMP 2  // numpad
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define INTL 3  // international symbols
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define _______ KC_TRNS  // Make the layouts easier to read
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Fillers to make layering more clear
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define _______ KC_TRNS 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define XXXXXXX KC_NO 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					enum  custom_keycodes  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  PLACEHOLDER  =  SAFE_RANGE ,  // can always be here
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  EPRM , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  VRSN , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  RGB_SLD 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Tap Dance Codes
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					enum  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    SLASH , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    WHACK , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					const  uint16_t  PROGMEM  keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ]  =  { 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -23,51 +24,51 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/* layer 0 : default
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 * 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .            , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  ESC      |    1   |    2   |    3   |    4   |    5   |    6   |            |   7    |    8   |    9   |    0   |    -   |    =   |  BCKSPC  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  `        |    1   |    2   |    3   |    4   |    5   |    6   |            |   7    |    8   |    9   |    0   |    -   |    =   |  BCKSPC  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - |            | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  TAB     |    Q   |    W   |    E   |    R   |    T   |  HOME  |            |  PGUP  |    Y   |    U   |    I   |    O   |    P   |  DELETE  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |       |            |       | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  INSERT  |    A   |    S   |    D   |    F   |    G   | - - - - - - |            | - - - - - - |    H   |    J   |    K   |    L   |    ;   |   ENTER  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  NOOP    |    A   |    S   |    D   |    F   |    G   | - - - - - - |            | - - - - - - |    H   |    J   |    K   |    L   |    ;   |   ENTER  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |   END  |            |  PGDN  | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  ( / LSFT  |    Z   |    X   |    C   |    V   |    B   |       |            |       |    N   |    M   |    ,   |    .   |    /    |  ) / RSFT  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  ( / LSFT  |    Z   |    X   |    C   |    V   |    B   |       |            |       |    N   |    M   |    ,   |    .   |   UP    |  ) / RSFT  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  ` - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - '            ` - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - ' 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  LCTRL   |  LGUI  |       |    '   | PRTSCR  |                                        |    [   |    ]   |    \   |  RGUI  |   RCTRL   | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  LCTRL   |  LGUI  |  MENU  |    '   |  NOOP  |                                        |    [   |    ]   |  LEFT  |  DOWN  |   RIGHT   | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '                                        ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                         , - - - - - - - - - - - - - .        , - - - - - - - - - - - - - . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                         |  VOL -  |  VOL +  |        |  BRT -  |  BRT  +  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                         | PRTSCR |  ESC   |        |  VOL -  |  VOL +  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  , - - - - - - | - - - - - - | - - - - - - |        | - - - - - - + - - - - - - + - - - - - - . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |  ALT /  |       |  MUTE |        |  NUMLK  |       |  ALT /  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |  SPC   |  LAY1  | - - - - - - |        | - - - - - - |  LAY1   |  SPC   | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |  ALT /  |       |  NUMLK|        |  MUTE   |       |  ALT /  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |  SPC   |  SLASH | - - - - - - |        | - - - - - - | WHACK   |  SPC   | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |       |       |  LAY3  |        |  LAY2  |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  ` - - - - - - - - - - - - - - - - - - - - '        ` - - - - - - - - - - - - - - - - - - - - ' 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					[ BASE ]  =  KEYMAP ( 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // left hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_ ESC ,      KC_1 ,        KC_2 ,        KC_3 ,        KC_4 ,        KC_5 ,        KC_6 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_ GRV ,      KC_1 ,        KC_2 ,        KC_3 ,        KC_4 ,        KC_5 ,        KC_6 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_TAB ,      KC_Q ,        KC_W ,        KC_E ,        KC_R ,        KC_T ,        KC_HOME , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_INS,       KC_A ,        KC_S ,        KC_D ,        KC_F ,        KC_G , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        XXXXXXX,      KC_A ,        KC_S ,        KC_D ,        KC_F ,        KC_G , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_LSPO ,     KC_Z ,        KC_X ,        KC_C ,        KC_V ,        KC_B ,        KC_END , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_LCTL ,     KC_LGUI ,     _______,     KC_QUOT ,     KC_PSCR  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                    KC_ VOLD,     KC_VOLU  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                                KC_ MUTE , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                    ALT_T ( KC_SPC ) ,   MO( ARRW ) ,     TG ( INTL ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_LCTL ,     KC_LGUI ,     KC_MENU,     KC_QUOT ,     XXXXXXX  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                    KC_ INS,      KC_ESC  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                                KC_ NLCK , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                    ALT_T ( KC_SPC ) ,   TD( SLASH ) ,    TG ( INTL ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // right hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_7 ,        KC_8 ,        KC_9 ,        KC_0 ,        KC_MINS ,     KC_EQL ,      KC_BSPC , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_PGUP ,     KC_Y ,        KC_U ,        KC_I ,        KC_O ,        KC_P ,        KC_DEL , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        KC_H ,        KC_J ,        KC_K ,        KC_L ,        KC_SCLN ,     KC_ENTER , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_PGDN ,     KC_N ,        KC_M ,        KC_COMM ,     KC_DOT ,      KC_ SLSH,      KC_RSPC , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    KC_LBRC ,     KC_RBRC ,     KC_ BSLS,     KC_RGUI ,     KC_RCTL  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_PGDN ,     KC_N ,        KC_M ,        KC_COMM ,     KC_DOT ,      KC_ UP,        KC_RSPC , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    KC_LBRC ,     KC_RBRC ,     KC_ LEFT,     KC_DOWN ,     KC_RGHT  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_VOLD ,     KC_VOLU , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_ NLCK , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TG ( NUMP ) ,    MO( ARRW  ) ,    ALT_T ( KC_SPC ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_ MUTE , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TG ( NUMP ) ,    TD( WHACK  ) ,    ALT_T ( KC_SPC ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/* layer 1 : functions and arrows
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 * 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .            , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |  SYSREQ   |   F1   |   F2   |   F3   |   F4   |   F5   |   F6   |            |   F7   |   F8   |   F9   |  F10   |  F11   |  F12   |   PAUSE   | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |          |   F1   |   F2   |   F3   |   F4   |   F5   |   F6   |            |   F7   |   F8   |   F9   |  F10   |  F11   |  F12   |          | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - |            | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |         |       |       |   UP   |       |       |       |            |       |       |       |       |       |       |          | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |         |       |       |   UP   |       |       |       |            |       |       |       |       |       |       |  INSERT   | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |       |            |       | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |         |       |  LEFT  |  DOWN  | RIGHT  |       | - - - - - - |            | - - - - - - |  LEFT  |  DOWN  |   UP   |  RIGHT |       |         | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |       |            |       | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - | 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -76,26 +77,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  |         |       |       |       |       |                                        |       |       |  LEFT  |  DOWN  |   RIGHT  | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '                                        ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                         , - - - - - - - - - - - - - .        , - - - - - - - - - - - - - . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                         |       |        |        |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                         | SYSREQ |  PAUSE |        |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  , - - - - - - | - - - - - - | - - - - - - |        | - - - - - - + - - - - - - + - - - - - - . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |       |       |        |        |       |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |       |       |  SCRLK |        |       |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |       |       | - - - - - - |        | - - - - - - |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  |       |       |       |        |       |       |       | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *                                  ` - - - - - - - - - - - - - - - - - - - - '        ` - - - - - - - - - - - - - - - - - - - - ' 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					[ ARRW ]  =  KEYMAP ( 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // left hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        KC_SYSREQ,    KC_F1 ,       KC_F2 ,       KC_F3 ,       KC_F4 ,       KC_F5 ,       KC_F6 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        _______,      KC_F1 ,       KC_F2 ,       KC_F3 ,       KC_F4 ,       KC_F5 ,       KC_F6 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        _______ ,     _______ ,     _______ ,     KC_UP ,       _______ ,     _______ ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        _______ ,     _______ ,     KC_LEFT ,     KC_DOWN ,     KC_RGHT ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        _______ ,     _______ ,     _______ ,     _______ ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                    _______,     _______  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                                _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                    KC_SYSREQ,   KC_PAUSE  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                                KC_SLCK , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                    _______ ,         _______ ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // right hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_F7 ,       KC_F8 ,       KC_F9 ,       KC_F10 ,      KC_F11 ,      KC_F12 ,      KC_PAUSE , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            KC_F7 ,       KC_F8 ,       KC_F9 ,       KC_F10 ,      KC_F11 ,      KC_F12 ,      _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     KC_INS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        KC_LEFT ,     KC_DOWN ,     KC_UP ,       KC_RGHT ,     _______ ,     _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            _______ ,     _______ ,     _______ ,     _______ ,     _______ ,     KC_UP ,       _______ , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    _______ ,     _______ ,     KC_LEFT ,     KC_DOWN ,     KC_RGHT , 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -189,6 +190,87 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// See https://github.com/algernon/ergodox-layout/blob/master/keymap.c
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// When holding the SLASH or WHACK key, the ARRW layer activates while the key is held.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Tapping the key produces the / or \ key. Double-tapping it toggles the ARRW layer
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// on until a third tap.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					typedef  struct  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  layer_toggle ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  sticky ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  td_ta_state_t ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  ang_tap_dance_s_finished  ( qk_tap_dance_state_t  * state ,  void  * user_data )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    td_ta_state_t  * td_ta  =  ( td_ta_state_t  * )  user_data ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( td_ta - > sticky )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > sticky  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > layer_toggle  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        layer_off  ( ARRW ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( state - > count  = =  1  & &  ! state - > pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        register_code  ( KC_SLSH ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > sticky  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > layer_toggle  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  else  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > layer_toggle  =  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        layer_on  ( ARRW ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > sticky  =  ( state - > count  = =  2 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  ang_tap_dance_s_reset  ( qk_tap_dance_state_t  * state ,  void  * user_data )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    td_ta_state_t  * td_ta  =  ( td_ta_state_t  * )  user_data ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! td_ta - > layer_toggle ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        unregister_code  ( KC_SLSH ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! td_ta - > sticky ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        layer_off  ( ARRW ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  ang_tap_dance_w_finished  ( qk_tap_dance_state_t  * state ,  void  * user_data )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    td_ta_state_t  * td_ta  =  ( td_ta_state_t  * )  user_data ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( td_ta - > sticky )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > sticky  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > layer_toggle  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        layer_off  ( ARRW ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( state - > count  = =  1  & &  ! state - > pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        register_code  ( KC_BSLS ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > sticky  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > layer_toggle  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  else  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > layer_toggle  =  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        layer_on  ( ARRW ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        td_ta - > sticky  =  ( state - > count  = =  2 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  ang_tap_dance_w_reset  ( qk_tap_dance_state_t  * state ,  void  * user_data )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    td_ta_state_t  * td_ta  =  ( td_ta_state_t  * )  user_data ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! td_ta - > layer_toggle ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        unregister_code  ( KC_BSLS ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! td_ta - > sticky ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        layer_off  ( ARRW ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					qk_tap_dance_action_t  tap_dance_actions [ ]  =  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    [ SLASH ]  =  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        . fn  =  {  NULL ,  ang_tap_dance_s_finished ,  ang_tap_dance_s_reset  } , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        . user_data  =  ( void  * ) & ( ( td_ta_state_t )  {  false ,  false  } ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    [ WHACK ]  =  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        . fn  =  {  NULL ,  ang_tap_dance_w_finished ,  ang_tap_dance_w_reset  } , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        . user_data  =  ( void  * ) & ( ( td_ta_state_t )  {  false ,  false  } ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Runs just one time when the keyboard initializes.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  matrix_init_user ( void )  {