[Keymap] Adding user code & keymaps for dumbpad & hotdox (#12924)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
		
							parent
							
								
									4f880801ec
								
							
						
					
					
						commit
						ec78f8bca2
					
				
					 6 changed files with 528 additions and 0 deletions
				
			
		
							
								
								
									
										141
									
								
								users/imchipwood/imchipwood.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								users/imchipwood/imchipwood.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,141 @@
 | 
			
		|||
/* Copyright 2021 imchipwood
 | 
			
		||||
  *
 | 
			
		||||
  * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
  * it under the terms of the GNU General Public License as published by
 | 
			
		||||
  * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
  * (at your option) any later version.
 | 
			
		||||
  *
 | 
			
		||||
  * This program is distributed in the hope that it will be useful,
 | 
			
		||||
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
  * GNU General Public License for more details.
 | 
			
		||||
  *
 | 
			
		||||
  * You should have received a copy of the GNU General Public License
 | 
			
		||||
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
  */
 | 
			
		||||
#include "imchipwood.h"
 | 
			
		||||
 | 
			
		||||
static td_state_t td_state[3];
 | 
			
		||||
 | 
			
		||||
// determine the tapdance state to return
 | 
			
		||||
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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (state->count == 2) {
 | 
			
		||||
        return DOUBLE_TAP;
 | 
			
		||||
    } else {
 | 
			
		||||
        return 3;
 | 
			
		||||
    }  // any number higher than the maximum state value you return above
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void altf2_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    td_state[0] = cur_dance(state);
 | 
			
		||||
    switch (td_state[0]) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            register_code(KC_F2);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            tap_code(KC_F2);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void altf2_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch (td_state[0]) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            unregister_code(KC_F2);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            unregister_code(KC_F2);
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    td_state[1] = cur_dance(state);
 | 
			
		||||
    switch (td_state[1]) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            register_code(KC_F5);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LCTL));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LCTL));
 | 
			
		||||
            tap_code(KC_F5);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch (td_state[1]) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            unregister_code(KC_F5);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LCTL));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            unregister_code(KC_F5);
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LCTL));
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void altf7_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    td_state[2] = cur_dance(state);
 | 
			
		||||
    switch (td_state[2]) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            register_code(KC_F7);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            register_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            tap_code(KC_F7);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void altf7_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch (td_state[2]) {
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            unregister_code(KC_F7);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            unregister_code(KC_F7);
 | 
			
		||||
            unregister_mods(MOD_BIT(KC_LALT));
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
    [ALT_F2]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf2_finished, altf2_reset),
 | 
			
		||||
    [CTL_F5]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctlf5_finished, ctlf5_reset),
 | 
			
		||||
    [ALT_F7]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf7_finished, altf7_reset),
 | 
			
		||||
    [DEL_NLCK] = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_NLCK),
 | 
			
		||||
    // Double tap right -> END
 | 
			
		||||
    [TD_REND] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_END),
 | 
			
		||||
    // Double tap left -> HOME
 | 
			
		||||
    [TD_LOME] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
 | 
			
		||||
    // Double tap right shift -> CAPS LOCK
 | 
			
		||||
    [TD_RSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_RSFT, KC_CAPS),
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										51
									
								
								users/imchipwood/imchipwood.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								users/imchipwood/imchipwood.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
/* Copyright 2021 imchipwood
 | 
			
		||||
  *
 | 
			
		||||
  * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
  * it under the terms of the GNU General Public License as published by
 | 
			
		||||
  * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
  * (at your option) any later version.
 | 
			
		||||
  *
 | 
			
		||||
  * This program is distributed in the hope that it will be useful,
 | 
			
		||||
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
  * GNU General Public License for more details.
 | 
			
		||||
  *
 | 
			
		||||
  * You should have received a copy of the GNU General Public License
 | 
			
		||||
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
  */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
// change the tapping term to a little bit quicker
 | 
			
		||||
#ifdef TAPPING_TERM
 | 
			
		||||
  #undef TAPPING_TERM
 | 
			
		||||
#endif
 | 
			
		||||
#define TAPPING_TERM    175
 | 
			
		||||
 | 
			
		||||
#ifdef TAPPING_TOGGLE
 | 
			
		||||
  #undef TAPPING_TOGGLE
 | 
			
		||||
#endif
 | 
			
		||||
#define TAPPING_TOGGLE 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum td_keycodes {
 | 
			
		||||
    TD_REND = 0, // right when tapped, end when double tapped
 | 
			
		||||
    TD_LOME,     // left when tapped, home when double tapped
 | 
			
		||||
    TD_RSFT_CAPS,
 | 
			
		||||
    ALT_F2,    // F2 when tapped, LALT when held, LALT+F2 when double tapped
 | 
			
		||||
    CTL_F5,    // F5 when tapped, LCTL when held, LCTL+F5 when double tapped
 | 
			
		||||
    ALT_F7,    // F7 when tapped, LALT when held, LALT+F7 when double tapped
 | 
			
		||||
    DEL_NLCK,  // DEL when tapped, NUMLOCK when double tapped
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef enum { SINGLE_TAP, SINGLE_HOLD, DOUBLE_TAP } td_state_t;
 | 
			
		||||
int cur_dance(qk_tap_dance_state_t *state);
 | 
			
		||||
 | 
			
		||||
void altf2_finished(qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void altf2_reset(qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void altf7_finished(qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void altf7_reset(qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
							
								
								
									
										2
									
								
								users/imchipwood/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								users/imchipwood/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
SRC += imchipwood.c
 | 
			
		||||
TAP_DANCE_ENABLE=yes
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue