[Keymap] new userspace for ibnuda (#8221)
* to ease the maintenance for some boards ibnuda has. * followed ridingqwerty's suggestion on 8821. * folloing drashna's suggestion on qmk's 8221. * following drashn's suggestion on qmk's 8211
This commit is contained in:
		
							parent
							
								
									ad96e995af
								
							
						
					
					
						commit
						910d603c65
					
				
					 14 changed files with 433 additions and 256 deletions
				
			
		
							
								
								
									
										83
									
								
								users/ibnuda/tapdance.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								users/ibnuda/tapdance.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
#include "tapdance.h"
 | 
			
		||||
 | 
			
		||||
static td_state_t td_state;
 | 
			
		||||
 | 
			
		||||
void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    if (state->count == 1) {
 | 
			
		||||
        register_code16(KC_DELT);
 | 
			
		||||
    } else {
 | 
			
		||||
        register_code16(C(KC_DELT));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    if (state->count == 1) {
 | 
			
		||||
        unregister_code16(KC_DELT);
 | 
			
		||||
    } else {
 | 
			
		||||
        unregister_code16(C(KC_DELT));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    if (state->count == 1) {
 | 
			
		||||
        register_code(KC_LSFT);
 | 
			
		||||
    }
 | 
			
		||||
    register_code(KC_SCLN);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    if (state->count == 1) {
 | 
			
		||||
        unregister_code(KC_LSFT);
 | 
			
		||||
    }
 | 
			
		||||
    unregister_code(KC_SCLN);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int current_dance(qk_tap_dance_state_t *state) {
 | 
			
		||||
    if (state->count == 1) {
 | 
			
		||||
        if (state->interrupted || !state->pressed) {
 | 
			
		||||
            return SINGLE_TAP;
 | 
			
		||||
        } else {
 | 
			
		||||
            return SINGLE_HOLD;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (state->count == 2) {
 | 
			
		||||
        return DOUBLE_TAP;
 | 
			
		||||
    } else {
 | 
			
		||||
        return 3;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    td_state = current_dance(state);
 | 
			
		||||
    switch (td_state) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            register_code16(KC_ESC);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LSFT));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            register_code16(KC_DELT);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch (td_state) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            unregister_code16(KC_ESC);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LSFT));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            unregister_code16(KC_DELT);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
    [TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset),
 | 
			
		||||
    [TD_SCLN_CLN]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
 | 
			
		||||
    [TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset),
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue