@ -14,7 +14,22 @@ enum custom_keycodes {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  EPRM , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  VRSN , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  RGB_SLD , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  // shell nav macros
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_LS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_LSLTR , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_CDPRE , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_LESS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_PLESS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_PGREP , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_TAILF ,   
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_PWD , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_H3 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_AMMCOLO , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_SCREENRD , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_SCREEN_NEW , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_SCREEN_LIST , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  SHELL_MKE , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -22,8 +37,9 @@ enum custom_keycodes {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define KEYNAV       1  // arrow navigation (right hand)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define KEYSEL       2  // arrow navigation + shift (allow text selection)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SHELL_NAV    3  // bash shortcuts
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define MOUSE     4  // mouse layer (can be locked with lock key)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define COMBINED  5  // combined numbers and symbols layer
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SHELL_SCREEN 4  // linux screen shortcuts
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define MOUSE        5  // mouse layer (can be locked with lock key)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define COMBINED     6  // combined numbers and symbols layer
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// macros
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define MOUSE_TOGGLE 1 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -34,8 +50,28 @@ enum custom_keycodes {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SWITCH_NDS 7 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_COPY_MODE 8 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_PASTE 9 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_RENAME 10 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_NUMBER 11 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_0 12 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_1 13 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_2 14 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_3 15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_4 16 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_5 17 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_6 18 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_7 19 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_8 20 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_9 21 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SCREEN_DETACH 22 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 30 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define MACRO_SCREEN_NUM(MACRO_NAME,NUM) \ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  MACRO_NAME : \
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					             if  ( record - > event . pressed )  { \
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  MACRO (  D ( LCTL ) ,  T ( A ) ,  U ( LCTL ) ,  T ( NUM ) ,  END ) ; \
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            } \
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break ; \
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					const  uint16_t  PROGMEM  keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ]  =  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -43,8 +79,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  // left hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  KC_ESC ,             KC_F1 ,          KC_F2 ,       KC_F3 ,         KC_F4 ,    KC_F5 ,    KC_F6 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  KC_TAB ,             KC_QUOTE ,       KC_COMMA ,    KC_DOT ,        KC_P ,     KC_Y ,     MEH ( KC_2 ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  M O( SHELL_NAV ) ,   KC_A ,           KC_O ,        KC_E ,          KC_U ,     KC_I , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  MEH( KC_0 ) ,        KC_SCOLON ,      KC_Q ,        KC_J ,          KC_K ,     KC_X ,     MEH ( KC_3 ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						   OSL ( SHELL_NAV ) ,      KC_A ,           KC_O ,        KC_E ,          KC_U ,     KC_I , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  OSL( SHELL_SCREEN ) ,   KC_SCOLON ,      KC_Q ,        KC_J ,          KC_K ,     KC_X ,     MEH ( KC_3 ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  MEH ( KC_1 ) ,          OSM ( MOD_LSFT ) ,  OSM ( MOD_LCTL ) ,  M ( MOUSE_TOGGLE ) ,  MO ( KEYSEL ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  // left thumb cluster
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -114,23 +150,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  // shell navigation layer
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  [ SHELL_NAV ]  =  KEYMAP ( 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       // left hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS, KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS ,             KC_TRNS ,          KC_TRNS ,            KC_TRNS ,       KC_TRNS ,      KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS ,            SHELL_PGREP ,     SHELL_PLESS ,       SHELL_LESS ,   SHELL_MKE ,   SHELL_H3  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , LCTL ( KC_A ) ,         SHELL_CDPRE ,     SHELL_LSLTR ,       SHELL_LS ,     SHELL_PWD , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , SHELL_SCREEN_LIST,  SHELL_SCREENRD ,  SHELL_SCREEN_NEW ,  SHELL_TAILF ,  KC_TRNS ,     SHELL_AMMCOLO  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					               // bottom row
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					               KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                       // thumb cluster
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                       KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                               LALT ( KC_D ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                               KC_TRNS , RCTL ( KC_W ) , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                               KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                               KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       // right hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,     KC_TRNS ,     KC_TRNS ,              KC_TRNS ,          KC_TRNS ,     KC_TRNS ,     M ( SWITCH_NDS ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       RCTL ( KC_L ) ,  RCTL ( KC_W ) ,       KC_HOME ,              KC_UP ,            KC_END ,           LALT ( KC_D ) ,       RCTL ( KC_R ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       RCTL ( KC_L ) ,  KC_TRNS ,      KC_HOME ,              KC_UP ,            KC_END ,      KC_TRNS ,      RCTL ( KC_R ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                   LALT ( KC_B ) ,  KC_LEFT ,              KC_DOWN ,          KC_RIGHT ,    LALT ( KC_F ) ,  LALT ( KC_DOT ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       RCTL ( KC_C ) ,  RCTL ( KC_U ) ,       M ( SCREEN_COPY_MODE ) ,  M ( SCREEN_PASTE ) ,  MEH ( KC_V ) ,        RCTL ( KC_K ) ,       M ( SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                // bottom row 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                 M ( SCREEN_TAB_LEFT ) ,  M ( SCREEN_TAB_RIGHT ) ,  M ( SCREEN_NEW_TAB ) ,   KC_TRNS ,     KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       RCTL ( KC_C ) ,  KC_TRNS ,      M ( SCREEN_COPY_MODE ) ,  M ( SCREEN_PASTE ) ,  MEH ( KC_V ) ,   RCTL ( KC_K ) ,  M ( SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    // bottom row  (match functionality of base layer) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                   KC_TRNS ,     RCTL ( KC_W ) ,           KC_TRNS ,          LALT ( KC_D ) ,  RCTL ( KC_U )  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       // thumb cluster
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,  KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -138,16 +174,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // linux screen layer
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  [ SHELL_SCREEN ]  =  KEYMAP ( 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       // left hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS ,     KC_TRNS ,      KC_TRNS ,      KC_TRNS ,      KC_TRNS ,    KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS ,     KC_TRNS ,      KC_TRNS ,      KC_TRNS ,      KC_TRNS ,    KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS ,     KC_TRNS ,      KC_TRNS ,      KC_TRNS ,      KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , KC_TRNS ,     KC_TRNS ,      KC_TRNS ,      KC_TRNS ,      KC_TRNS ,    KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					               // bottom row
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					               KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                       // thumb cluster
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                       KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                               KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                               KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       // right hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,  KC_TRNS ,             KC_TRNS ,      KC_TRNS ,      KC_TRNS ,      KC_TRNS ,              KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,  M ( SCREEN_NEW_TAB ) ,   M ( SCREEN_7 ) ,  M ( SCREEN_8 ) ,  M ( SCREEN_9 ) ,  M ( SCREEN_RENAME ) ,     KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                M ( SCREEN_TAB_LEFT ) ,  M ( SCREEN_4 ) ,  M ( SCREEN_5 ) ,  M ( SCREEN_6 ) ,  M ( SCREEN_TAB_RIGHT ) ,  KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,  KC_TRNS ,             M ( SCREEN_1 ) ,  M ( SCREEN_2 ) ,  M ( SCREEN_3 ) ,  M ( SCREEN_NUMBER ) ,     KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    // bottom row
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    M ( SCREEN_0 ) ,  KC_TRNS ,      KC_TRNS ,      KC_TRNS ,              M ( SCREEN_DETACH ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       // thumb cluster
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,  KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       KC_TRNS ,  KC_TRNS ,  KC_TRNS 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  [ COMBINED ]  =  KEYMAP ( 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						// left hand
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_NO ,   KC_TRNS ,  KC_TRNS ,     KC_TRNS ,      KC_TRNS ,      KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_ESC ,   KC_LABK ,     KC_RABK ,      KC_DQUO ,      KC_GRAVE , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_E XLM,  KC_AT ,       KC_HASH ,      KC_DLR ,       KC_PERC  , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_LPRN ,  KC_RPRN ,     KC_LBRACKET ,  KC_RBRACKET ,  KC_UNDS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_LCBR ,  KC_RCBR ,     KC_BSLS ,      KC_PIPE ,      KC_TILD , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_ COLN,  KC_DQUO ,     KC_LCBR ,      KC_RCBR ,      KC_TRNS  , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						// bottom row
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_ PIPE,  KC_BSLS ,     KC_CIRC ,      KC_AMPR  , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						// thumb cluster
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -157,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						         KC_MINS ,      KC_4 ,     KC_5 ,     KC_6 ,     KC_SLSH ,      MEH ( KC_N ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS ,  KC_EQUAL ,     KC_1 ,     KC_2 ,     KC_3 ,     KC_QUES ,      MEH ( KC_O ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						// bottom row 
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						                      KC_0 ,   KC_DOT ,   KC_TRNS ,  KC_TRNS ,      MEH ( KC_P ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						                      KC_0 ,     KC_DOT ,   KC_TILD ,  KC_GRAVE  ,      MEH ( KC_P ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						// thumb cluster
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -230,6 +292,41 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  MACRO (  D ( LCTL ) ,  T ( A ) ,  U ( LCTL ) ,  T ( C ) ,  END ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }                                 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  SCREEN_DETACH : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					             if  ( record - > event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  MACRO (  D ( LCTL ) ,  T ( A ) ,  U ( LCTL ) ,  T ( D ) ,  END ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }                                 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  SCREEN_RENAME : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					             if  ( record - > event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  MACRO (  D ( LCTL ) ,  T ( A ) ,  U ( LCTL ) ,  D ( LSFT ) ,  T ( A ) ,  U ( LSFT ) ,  END ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }                                 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  SCREEN_NUMBER : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					             if  ( record - > event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  MACRO (  D ( LCTL ) ,  T ( A ) ,  U ( LCTL ) ,  D ( LSFT ) ,  T ( SCOLON ) ,  U ( LSFT ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									              T ( N ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
												  T ( U ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
												  T ( M ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
												  T ( B ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
												  T ( E ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
												  T ( R ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
												  T ( SPC ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                         	END ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }                                 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_0 , 0 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_1 , 1 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_2 , 2 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_3 , 3 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_4 , 4 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_5 , 5 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_6 , 6 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_7 , 7 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_8 , 8 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							MACRO_SCREEN_NUM ( SCREEN_9 , 9 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  SCREEN_COPY_MODE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( record - > event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  MACRO (  D ( LCTL ) ,  T ( A ) ,  U ( LCTL ) ,  T ( ESC ) ,  END ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -282,8 +379,70 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      return  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  // shell macros
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  if ( record - > event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						switch  ( keycode )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_LS : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " ls \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_LSLTR : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " ls -ltr \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_CDPRE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " cd .. \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_LESS : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " less  " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_PLESS : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( "  | less " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_PGREP : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( "  | grep  " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_TAILF : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " tail -f  " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_PWD : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " echo `pwd`/ " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_H3 : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " h3 \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_AMMCOLO : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " ammcolo \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_SCREENRD : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " screen -r -d  " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_SCREEN_NEW : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " screen -S  " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_SCREEN_LIST : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " screen -list \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_MKE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								SEND_STRING ( " mke \n " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -306,6 +465,8 @@ void matrix_scan_user(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  COMBINED : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							    ergodox_right_led_2_on ( ) ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    case  SHELL_NAV : 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  SHELL_SCREEN : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    case  KEYNAV : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  KEYSEL : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							    ergodox_right_led_3_on ( ) ;