mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	macros
This commit is contained in:
		
							parent
							
								
									9514ee8df7
								
							
						
					
					
						commit
						4454ded0af
					
				@ -33,15 +33,19 @@ action_t action_for_key(uint8_t layer, keypos_t key)
 | 
				
			|||||||
	// 16bit keycodes - important
 | 
						// 16bit keycodes - important
 | 
				
			||||||
    uint16_t keycode = keymap_key_to_keycode(layer, key);
 | 
					    uint16_t keycode = keymap_key_to_keycode(layer, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (keycode > 0x00FF && keycode < 0x2000) {
 | 
					    if (keycode >= 0x0100 && keycode < 0x2000) {
 | 
				
			||||||
    	// Has a modifier
 | 
					    	// Has a modifier
 | 
				
			||||||
    	action_t action;
 | 
					    	action_t action;
 | 
				
			||||||
    	// Split it up
 | 
					    	// Split it up
 | 
				
			||||||
    	action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF);
 | 
					    	action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF);
 | 
				
			||||||
    	return action;
 | 
					    	return action;
 | 
				
			||||||
	} else if (keycode > 0x1FFF && keycode < 0x3000) {
 | 
						} else if (keycode >= 0x2000 && keycode < 0x3000) {
 | 
				
			||||||
		// Is a shortcut for function layer, pull last 12bits
 | 
							// Is a shortcut for function layer, pull last 12bits
 | 
				
			||||||
        return keymap_func_to_action(keycode & 0xFFF);
 | 
					        return keymap_func_to_action(keycode & 0xFFF);
 | 
				
			||||||
 | 
						} else if (keycode >= 0x3000 && keycode < 0x4000) {
 | 
				
			||||||
 | 
					    	action_t action;
 | 
				
			||||||
 | 
					    	action.code = ACTION_MACRO(keycode & 0xFF);
 | 
				
			||||||
 | 
					    	return action;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (keycode) {
 | 
					    switch (keycode) {
 | 
				
			||||||
@ -173,7 +177,6 @@ action_t keymap_fn_to_action(uint16_t keycode)
 | 
				
			|||||||
    return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
 | 
					    return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* translates Fn keycode to action */
 | 
					 | 
				
			||||||
action_t keymap_func_to_action(uint16_t keycode)
 | 
					action_t keymap_func_to_action(uint16_t keycode)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// For FUNC without 8bit limit
 | 
						// For FUNC without 8bit limit
 | 
				
			||||||
 | 
				
			|||||||
@ -111,5 +111,42 @@ extern const uint16_t fn_actions[];
 | 
				
			|||||||
#define CM_DOT  KC_DOT
 | 
					#define CM_DOT  KC_DOT
 | 
				
			||||||
#define CM_SLSH KC_SLSH
 | 
					#define CM_SLSH KC_SLSH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Make it easy to support these in macros
 | 
				
			||||||
 | 
					#define KC_CM_Q    CM_Q    
 | 
				
			||||||
 | 
					#define KC_CM_W    CM_W    
 | 
				
			||||||
 | 
					#define KC_CM_F    CM_F    
 | 
				
			||||||
 | 
					#define KC_CM_P    CM_P    
 | 
				
			||||||
 | 
					#define KC_CM_G    CM_G    
 | 
				
			||||||
 | 
					#define KC_CM_J    CM_J    
 | 
				
			||||||
 | 
					#define KC_CM_L    CM_L    
 | 
				
			||||||
 | 
					#define KC_CM_U    CM_U    
 | 
				
			||||||
 | 
					#define KC_CM_Y    CM_Y    
 | 
				
			||||||
 | 
					#define KC_CM_SCLN CM_SCLN 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define KC_CM_A    CM_A    
 | 
				
			||||||
 | 
					#define KC_CM_R    CM_R    
 | 
				
			||||||
 | 
					#define KC_CM_S    CM_S    
 | 
				
			||||||
 | 
					#define KC_CM_T    CM_T    
 | 
				
			||||||
 | 
					#define KC_CM_D    CM_D    
 | 
				
			||||||
 | 
					#define KC_CM_H    CM_H    
 | 
				
			||||||
 | 
					#define KC_CM_N    CM_N    
 | 
				
			||||||
 | 
					#define KC_CM_E    CM_E    
 | 
				
			||||||
 | 
					#define KC_CM_I    CM_I    
 | 
				
			||||||
 | 
					#define KC_CM_O    CM_O    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define KC_CM_Z    CM_Z    
 | 
				
			||||||
 | 
					#define KC_CM_X    CM_X    
 | 
				
			||||||
 | 
					#define KC_CM_C    CM_C    
 | 
				
			||||||
 | 
					#define KC_CM_V    CM_V    
 | 
				
			||||||
 | 
					#define KC_CM_B    CM_B    
 | 
				
			||||||
 | 
					#define KC_CM_K    CM_K    
 | 
				
			||||||
 | 
					#define KC_CM_M    CM_M    
 | 
				
			||||||
 | 
					#define KC_CM_COMM CM_COMM 
 | 
				
			||||||
 | 
					#define KC_CM_DOT  CM_DOT  
 | 
				
			||||||
 | 
					#define KC_CM_SLSH CM_SLSH 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define M(kc) kc | 0x3000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			|||||||
  {KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_BSPC},
 | 
					  {KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_BSPC},
 | 
				
			||||||
  {KC_ESC,  CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,     KC_QUOT},
 | 
					  {KC_ESC,  CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,     KC_QUOT},
 | 
				
			||||||
  {KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_ENT},
 | 
					  {KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_ENT},
 | 
				
			||||||
  {KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_NO,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
 | 
					  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_NO,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
 | 
				
			||||||
},
 | 
					},
 | 
				
			||||||
[1] = { /* Jack hard-coded colemak */
 | 
					[1] = { /* Jack hard-coded colemak */
 | 
				
			||||||
  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
 | 
					  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
 | 
				
			||||||
@ -36,3 +36,14 @@ const uint16_t PROGMEM fn_actions[] = {
 | 
				
			|||||||
    [4] = ACTION_DEFAULT_LAYER_SET(1),
 | 
					    [4] = ACTION_DEFAULT_LAYER_SET(1),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  // MACRODOWN only works in this function
 | 
				
			||||||
 | 
					    switch(id) {
 | 
				
			||||||
 | 
					      case 0:
 | 
				
			||||||
 | 
					        return MACRODOWN(T(CM_T), END);
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    } 
 | 
				
			||||||
 | 
					    return MACRO_NONE;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user