You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					150 lines
				
				3.9 KiB
			
		
		
			
		
	
	
					150 lines
				
				3.9 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								#include "replicaJunction.h"
							 | 
						||
| 
								 | 
							
								#include "version.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef TAP_DANCE_ENABLE
							 | 
						||
| 
								 | 
							
								void dance_layer(qk_tap_dance_state_t *state, void *user_data)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t layer = biton32(layer_state);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (state->count >= 5)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // 5 or more taps resets the keyboard
							 | 
						||
| 
								 | 
							
								        reset_keyboard();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    #ifdef L_QWERTY
							 | 
						||
| 
								 | 
							
								    else if (state->count == 3)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Triple tap changes to QWERTY layer
							 | 
						||
| 
								 | 
							
								        if (layer == L_QWERTY)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            layer_off(L_QWERTY);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        else
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            layer_on(L_QWERTY);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    #endif
							 | 
						||
| 
								 | 
							
								    #ifdef L_NUM
							 | 
						||
| 
								 | 
							
								    else if (state->count == 2)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Double tap toggles Number layer
							 | 
						||
| 
								 | 
							
								        if (layer == L_NUM)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            layer_off(L_NUM);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        else
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            layer_on(L_NUM);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    #endif
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Single tap sends Escape, and also turns off layers
							 | 
						||
| 
								 | 
							
								        // That's mostly in case I get stuck and forget where I am
							 | 
						||
| 
								 | 
							
								        #ifdef L_NUM
							 | 
						||
| 
								 | 
							
								        layer_off(L_NUM);
							 | 
						||
| 
								 | 
							
								        #endif
							 | 
						||
| 
								 | 
							
								        #ifdef L_EXTEND
							 | 
						||
| 
								 | 
							
								        layer_off(L_EXTEND);
							 | 
						||
| 
								 | 
							
								        #endif
							 | 
						||
| 
								 | 
							
								        #ifdef L_SYMBOL
							 | 
						||
| 
								 | 
							
								        layer_off(L_SYMBOL);
							 | 
						||
| 
								 | 
							
								        #endif
							 | 
						||
| 
								 | 
							
								        #ifdef L_QWERTY
							 | 
						||
| 
								 | 
							
								        layer_off(L_QWERTY);
							 | 
						||
| 
								 | 
							
								        #endif
							 | 
						||
| 
								 | 
							
								        register_code(KC_ESC);
							 | 
						||
| 
								 | 
							
								        unregister_code(KC_ESC);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Tap Dance Definitions
							 | 
						||
| 
								 | 
							
								// Note - this needs to come AFTER the function is declared
							 | 
						||
| 
								 | 
							
								qk_tap_dance_action_t tap_dance_actions[] = {
							 | 
						||
| 
								 | 
							
								        [TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN(dance_layer)
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // TAP_DANCE_ENABLE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// These functions can be overridden in individual keymap files.
							 | 
						||
| 
								 | 
							
								// This allows a user function to be shared for all my keyboards, while each
							 | 
						||
| 
								 | 
							
								// keyboard can also have a keyboard-specific section.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Note that keymaps don't need to override these if there's nothing to
							 | 
						||
| 
								 | 
							
								// override them with.
							 | 
						||
| 
								 | 
							
								__attribute__ ((weak))
							 | 
						||
| 
								 | 
							
								void matrix_init_keymap(void) {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__attribute__ ((weak))
							 | 
						||
| 
								 | 
							
								void matrix_scan_keymap(void) {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__attribute__ ((weak))
							 | 
						||
| 
								 | 
							
								bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Runs just one time when the keyboard initializes.
							 | 
						||
| 
								 | 
							
								void matrix_init_user(void) {
							 | 
						||
| 
								 | 
							
								    #ifdef UNICODEMAP_ENABLE
							 | 
						||
| 
								 | 
							
								    // Set Unicode input to use WinCompose
							 | 
						||
| 
								 | 
							
								    // https://github.com/samhocevar/wincompose
							 | 
						||
| 
								 | 
							
								    set_unicode_input_mode(UC_WINC);
							 | 
						||
| 
								 | 
							
								    #endif // UNICODEMAP_ENABLE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    matrix_init_keymap();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Runs constantly in the background, in a loop.
							 | 
						||
| 
								 | 
							
								void matrix_scan_user(void) {
							 | 
						||
| 
								 | 
							
								    matrix_scan_keymap();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bool process_record_user(uint16_t keycode, keyrecord_t *record) {
							 | 
						||
| 
								 | 
							
								    if (record->event.pressed)
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    switch(keycode)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        case RJ_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
							 | 
						||
| 
								 | 
							
								            SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
							 | 
						||
| 
								 | 
							
								            #if  (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
							 | 
						||
| 
								 | 
							
								                                    ":dfu"
							 | 
						||
| 
								 | 
							
								            #elif defined(BOOTLOADER_HALFKAY)
							 | 
						||
| 
								 | 
							
								                                    ":teensy"
							 | 
						||
| 
								 | 
							
								            #elif defined(BOOTLOADER_CATERINA)
							 | 
						||
| 
								 | 
							
								                                    ":avrdude"
							 | 
						||
| 
								 | 
							
								            #endif // bootloader options
							 | 
						||
| 
								 | 
							
								                                    //SS_TAP(X_ENTER)
							 | 
						||
| 
								 | 
							
								                                    );
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_QMKV:
							 | 
						||
| 
								 | 
							
								            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_EQ:
							 | 
						||
| 
								 | 
							
								            SEND_STRING("==");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_NEQ:
							 | 
						||
| 
								 | 
							
								            SEND_STRING("!=");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_GEQ:
							 | 
						||
| 
								 | 
							
								            SEND_STRING(">=");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_LEQ:
							 | 
						||
| 
								 | 
							
								            SEND_STRING("<=");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_GEQR:
							 | 
						||
| 
								 | 
							
								            SEND_STRING("=>");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_DUND:
							 | 
						||
| 
								 | 
							
								            SEND_STRING("$_");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        case RJ_SELS:
							 | 
						||
| 
								 | 
							
								            SEND_STRING("select *");
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return process_record_keymap(keycode, record);
							 | 
						||
| 
								 | 
							
								};
							 |