* gordon.c defines many aliases for KC codes.
   * gordon.c defines many advanced tap dance functions.
   * This is a squashed commit of about 6 months of work on chimera and
     ergodox infinity changes.
   * Ignore the change-id below.
Change-Id: I83927139e8a80fe08992ae91ec7d62571498f7f7
		
	
			
		
			
				
	
	
		
			316 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			316 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include QMK_KEYBOARD_H
 | 
						|
#include "debug.h"
 | 
						|
#include "action_layer.h"
 | 
						|
#include "version.h"
 | 
						|
#include "process_keycode/process_tap_dance.h"
 | 
						|
#include "gordon.h"
 | 
						|
 | 
						|
#include "keymap_german.h"
 | 
						|
 | 
						|
#include "keymap_nordic.h"
 | 
						|
 | 
						|
 | 
						|
#define TLSLSH   M(TIL_SLASH)
 | 
						|
#define F1_F13   TD(F1F13)
 | 
						|
#define F2_F14   TD(F2F14)
 | 
						|
#define F5_F15   TD(F5F15)
 | 
						|
#define F4_ALTF4 TD(ALTF4)
 | 
						|
#define END_ESC  TD(ENDESC)
 | 
						|
#define SHF6_AF7 TD(F6F7)
 | 
						|
#define F12_RUN  TD(F12ETAPS)
 | 
						|
#define COMMA_TD TD(COMMA)
 | 
						|
 | 
						|
enum custom_keycodes {
 | 
						|
  PLACEHOLDER = SAFE_RANGE, // can always be here
 | 
						|
  EPRM,
 | 
						|
  VRSN,
 | 
						|
  RGB_SLD,
 | 
						|
};
 | 
						|
 | 
						|
//Tap dance enums
 | 
						|
enum {
 | 
						|
  F12TAP = 0,
 | 
						|
  F12ETAPS,
 | 
						|
  CALCCOMP,
 | 
						|
  REFRESH, //send R, or Control+R if double tapped.
 | 
						|
  ENDESC,
 | 
						|
  XESC, //'quad function'. x, control, escape, alt
 | 
						|
  ALY2, //'quad function': a, Hyper, ctrl+a, layer 2
 | 
						|
  PRLOCK,
 | 
						|
  F6F7, // Shift F6 or Alt F7
 | 
						|
  TABCOMBO,
 | 
						|
  FCTRL,
 | 
						|
  F3D,
 | 
						|
  ALTF4,
 | 
						|
  COMMA,
 | 
						|
  AT,
 | 
						|
  HTAB,
 | 
						|
  F1F13,
 | 
						|
  F2F14,
 | 
						|
  F5F15
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// Custom tapping terms for each key.
 | 
						|
// Requires changes to action_taping.c
 | 
						|
/* uint16_t get_tapping_term(keyevent_t* event) {
 | 
						|
    uint16_t keycode = keymap_key_to_keycode(layer_switch_get_layer(event->key), event->key);
 | 
						|
    if (keycode == LT(3,KC_E) ) {
 | 
						|
        return TAPPING_TERM + 50;
 | 
						|
    }
 | 
						|
    return TAPPING_TERM;
 | 
						|
} */
 | 
						|
 | 
						|
            
 | 
						|
// Tap Dance Definitions
 | 
						|
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
						|
  // simple tap dance
 | 
						|
  [F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),  
 | 
						|
  [REFRESH] = ACTION_TAP_DANCE_DOUBLE(KC_R,LCTL(KC_R)),
 | 
						|
  [ENDESC] = ACTION_TAP_DANCE_DOUBLE(KC_END, KC_ESC),
 | 
						|
  [CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
 | 
						|
  [ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
 | 
						|
  [F6F7] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_F6), LALT(KC_F7)),
 | 
						|
  [F1F13] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F13),
 | 
						|
  [F2F14] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F14),
 | 
						|
  [F5F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5, KC_F15),
 | 
						|
  [TABCOMBO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tab_finished, tab_reset),
 | 
						|
  [F3D] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, bt_finished, bt_reset),
 | 
						|
  [COMMA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, comma_finished, comma_reset),
 | 
						|
  [HTAB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,h_finished, h_reset)
 | 
						|
};
 | 
						|
 | 
						|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						|
 | 
						|
 | 
						|
//**************************FIRST LAYER - LAYER ZERO ************************************** 
 | 
						|
  [_QWERTY] = KEYMAP(
 | 
						|
 | 
						|
    SHF6_AF7,   F1_F13,    F2_F14,   TD(F3D), F4_ALTF4,    F5_F15,   KC_F11,
 | 
						|
    ________,     KC_Q,  CTR_SH_W,     NAV_E, CTR_AL_R,      KC_T, PRINTSCR,
 | 
						|
      KC_TAB,     KC_A,     MEH_S,  NUMPAD_D,   CTRL_F,     WIN_G,
 | 
						|
    ALT_SHFT,   CTRL_Z,   HYPER_X,   MOUSE_C,    ALT_V,      KC_B, TT(_MOUSE),
 | 
						|
    KC_MINUS, KC_GRAVE, KC_DELETE,   KC_LEFT, KC_RIGHT,
 | 
						|
                                    
 | 
						|
                                              KC_INSERT,  KC_DELETE, 
 | 
						|
                                                           ALT_HOME,
 | 
						|
                                    KC_LSHIFT, SYMB_BSP,    END_ESC,
 | 
						|
 | 
						|
                 F12_RUN,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10, TD(CALCCOMP),
 | 
						|
                ________,     KC_Y,     KC_U,     KC_I,     KC_O,      KC_P,  ________,
 | 
						|
                             WIN_H,   CTRL_J,     KC_K,    MEH_L,  COL_MOUS,  ________,
 | 
						|
                 KC_LEAD,     KC_N,    ALT_M, COMMA_TD, HYPE_DOT,  KC_SLASH, TD(TABCOMBO),
 | 
						|
                                       KC_UP,  KC_DOWN,   KC_ESC,    KC_TILD,    KC_UNDS,
 | 
						|
 | 
						|
  KC_ESCAPE,  KC_DELETE,
 | 
						|
         ALT_T(KC_PGUP),
 | 
						|
  RCTL_T(KC_PGDOWN), LT(_NAV,KC_ENTER), SPAC_SYM),
 | 
						|
 | 
						|
 | 
						|
  //**************************SYMBOLS LAYER**************************
 | 
						|
  [_SYMBOLS] = KEYMAP(
 | 
						|
    ________, ________, ________, ________, ________, ________,  ________,
 | 
						|
    ________,   TLSLSH,    KC_AT,  KC_LCBR,  KC_RCBR,  KC_CIRC,  ________,
 | 
						|
    ________,  KC_EXLM,  KC_PIPE,  KC_LPRN,  KC_RPRN, M(DEREF),
 | 
						|
    ________,KC_DOLLAR,  KC_PERC, LSQUIGLY, RSQUIGLY, ________,  ________,
 | 
						|
    ________,  M(TICK3),  ________,  ________,  ________,  
 | 
						|
 | 
						|
                                    ________,________,
 | 
						|
                                             ________,
 | 
						|
                           ________,________,________,
 | 
						|
 | 
						|
 | 
						|
                  ________, ________, ________, ________, ________, ________, NUMLOCK,
 | 
						|
                  ________,   TLSLSH,  KC_PIPE,  KC_PLUS,  KC_AMPR, ________, CAPLOCK,
 | 
						|
                          M(EQRIGHT),  KC_DQUO, KC_EQUAL, KC_QUOTE,KC_SCOLON, ________,
 | 
						|
                  ________,  KC_PIPE, BK_SLASH,  ASTERSK,   KC_DOT, KC_SLASH, ________,
 | 
						|
                  ________,________,________,M(TILD3),________,
 | 
						|
                                                              ________,________,
 | 
						|
                                                                       ________,
 | 
						|
                                                     ________,________,________),
 | 
						|
  
 | 
						|
  //**************************MOUSE MOVEMENT LAYER**************************
 | 
						|
  [_MOUSE] = KEYMAP(RESET,________,________,________,________,________,________,
 | 
						|
                    RESET,________,________,KC_MS_UP,________,KC_MS_WH_UP,CALTDEL,
 | 
						|
                    ________,________,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_MS_WH_DOWN,
 | 
						|
                    KC_SECRET_1,________,HYPR(KC_F13),________,HYPR(KC_F14),KC_SECRET_2,________,
 | 
						|
                    ________,________,HYPR(KC_F15),KC_MS_WH_LEFT,KC_MS_WH_RIGHT,
 | 
						|
                    
 | 
						|
                                                       ________,________,
 | 
						|
                                                                ________,
 | 
						|
                                          KC_MS_BTN1,KC_MS_BTN2,________,
 | 
						|
                                          
 | 
						|
                                         
 | 
						|
                    ________,________,________,________,________,________,________,
 | 
						|
                    KC_MS_WH_UP,________,________,KC_UP,________,________,________,
 | 
						|
                    ________,KC_LEFT,KC_DOWN,KC_RIGHT,________,________,
 | 
						|
                    KC_MS_WH_DOWN,________,KC_PGUP,KC_PGDOWN,KC_MEDIA_NEXT_TRACK,________,________,
 | 
						|
                    KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_MEDIA_PLAY_PAUSE,________,
 | 
						|
                    ________,________,
 | 
						|
                    ________,
 | 
						|
                    ________,________,KC_WWW_BACK),
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  //**************************WINDOWS NAVIGATION LAYER**************************
 | 
						|
 | 
						|
  [_NAV] = KEYMAP(________,________,________,________,________,________,________,
 | 
						|
                  ________,________,SNAPLEFT,________,SNAPRGHT,LALT(KC_LEFT),________,
 | 
						|
                  ________,LCTL(KC_W),PREVTAB,LGUI(KC_D),NEXTTAB,________,
 | 
						|
                  ________,________,WORKLEFT,________,WORKRIGHT,________,________,
 | 
						|
                  ________,________,________,________,________,
 | 
						|
                  
 | 
						|
                  ________,________,
 | 
						|
                           ________,
 | 
						|
         ________,________,________, 
 | 
						|
         
 | 
						|
         
 | 
						|
         ________,________,________,________,________,________,________,
 | 
						|
         ________,________,SNAPUP  ,KC_UP   ,SNAPDOWN,________,________,
 | 
						|
                  ________,KC_LEFT ,KC_DOWN ,KC_RIGHT,________,________,
 | 
						|
         ________,________,________,________,________,________,________,
 | 
						|
         ________,________,________,________,________,
 | 
						|
         
 | 
						|
         
 | 
						|
         ________,________,
 | 
						|
         ________,
 | 
						|
         ________,________,________),
 | 
						|
 | 
						|
  //****************************NUMPAD LAYER****************************
 | 
						|
  [_NUMPAD] = KEYMAP(________,________,________,________,________,________,________,
 | 
						|
                     ________,________,________,________,________,________,________,
 | 
						|
                     ________,________,________,________,________,________,
 | 
						|
                     ________,________,________,________,________,________,________,
 | 
						|
                     ________,________,________,________,________,
 | 
						|
                     
 | 
						|
                     ________,________,
 | 
						|
                     ________,
 | 
						|
                     ________,________,________,
 | 
						|
                     
 | 
						|
                     BL_TOGG ,BL_STEP ,________,________,________,________,________,
 | 
						|
                     ________,________,KC_7    ,KC_8    ,KC_9    ,________,________,
 | 
						|
                              ________,KC_4    ,KC_5    ,KC_6    ,________,________,
 | 
						|
                     ________,________,KC_1    ,KC_2    ,KC_3    ,________,________,
 | 
						|
                                       KC_0    ,KC_0 ,  KC_DOT   ,________,________,
 | 
						|
                                       
 | 
						|
                                       ________,________,
 | 
						|
                                       ________,
 | 
						|
                                       ________,________,KC_0),
 | 
						|
  //****************************TEXT/INTELLIJ NAVIGATION LAYER****************************
 | 
						|
  [_TEXTNAV] = KEYMAP(________,________,________,________,________,________,________,
 | 
						|
                      ________,MEH(KC_Q),LSFT(KC_ESCAPE),MEH(KC_D),MEH(KC_2),LALT(LSFT(KC_UP)),________,
 | 
						|
                      ________,LALT(KC_F7),LCTL(KC_LEFT),LCTL(KC_B),LCTL(KC_RIGHT),LALT(LSFT(KC_DOWN)),
 | 
						|
                      ________,________,________,LCTL(LSFT(KC_COMMA)),MEH(KC_DOT),LALT(KC_MS_WH_UP),________,________,________,________,________,________,________,________,________,________,LCTL(KC_DELETE),________,LALT(LSFT(KC_F9)),________,________,________,________,________,________,________,MEH(KC_5),LALT(LSFT(KC_Z)),________,LALT(KC_Z),________,________,________,LCTL(LSFT(KC_LEFT)),LALT(LCTL(KC_S)),LCTL(LSFT(KC_RIGHT)),LCTL(LSFT(KC_COMMA)),________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________)
 | 
						|
};
 | 
						|
 | 
						|
const uint16_t PROGMEM fn_actions[] = {
 | 
						|
  [1] = ACTION_LAYER_TAP_TOGGLE(1)
 | 
						|
};
 | 
						|
 | 
						|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
						|
{
 | 
						|
      switch(id) {
 | 
						|
        case INFOQM: {
 | 
						|
          if (record->event.pressed) {
 | 
						|
            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
 | 
						|
          }
 | 
						|
          break;
 | 
						|
        }
 | 
						|
 | 
						|
        case TIL_SLASH: {
 | 
						|
          if (record->event.pressed) {
 | 
						|
            SEND_STRING ("~/.");
 | 
						|
          }
 | 
						|
          break;
 | 
						|
        }
 | 
						|
 | 
						|
        case DEREF: {
 | 
						|
          if (record->event.pressed) {
 | 
						|
            SEND_STRING ("->");
 | 
						|
          }
 | 
						|
          break;
 | 
						|
        }
 | 
						|
        
 | 
						|
        case EQRIGHT: {
 | 
						|
          if (record->event.pressed) {
 | 
						|
            SEND_STRING ("=>");
 | 
						|
          }
 | 
						|
          break;
 | 
						|
        }
 | 
						|
 | 
						|
        case TICK3: {
 | 
						|
          if (record->event.pressed) {
 | 
						|
            SEND_STRING ("```");
 | 
						|
          }
 | 
						|
          break;
 | 
						|
        }
 | 
						|
 | 
						|
        case TILD3: {
 | 
						|
          if (record->event.pressed) {
 | 
						|
            SEND_STRING ("~~~");
 | 
						|
          }
 | 
						|
          break;
 | 
						|
        }
 | 
						|
 | 
						|
        case ALTTAB_START: {
 | 
						|
          register_code(KC_LALT);
 | 
						|
          layer_on(8);
 | 
						|
        }
 | 
						|
 | 
						|
        case ALTTAB_END: {
 | 
						|
          unregister_code(KC_LALT);
 | 
						|
          layer_off(8);
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      }
 | 
						|
      return MACRO_NONE;
 | 
						|
};
 | 
						|
 | 
						|
void matrix_scan_user(void) {
 | 
						|
 | 
						|
    uint8_t layer = biton32(layer_state);
 | 
						|
 | 
						|
    ergodox_board_led_on();
 | 
						|
    ergodox_led_all_on();
 | 
						|
 | 
						|
    ergodox_board_led_off();
 | 
						|
    ergodox_right_led_1_off();
 | 
						|
    ergodox_right_led_2_off();
 | 
						|
    ergodox_right_led_3_off();
 | 
						|
    switch (layer) {
 | 
						|
        case _SYMBOLS:
 | 
						|
            ergodox_right_led_1_on();
 | 
						|
            break;
 | 
						|
        case _MOUSE:
 | 
						|
            ergodox_right_led_2_on();
 | 
						|
            break;
 | 
						|
        case _NUMPAD:
 | 
						|
            ergodox_right_led_3_on();
 | 
						|
            break;
 | 
						|
        case _NAV:
 | 
						|
            ergodox_right_led_1_on();
 | 
						|
            ergodox_right_led_2_on();
 | 
						|
            break;
 | 
						|
        case 5:
 | 
						|
            ergodox_right_led_1_on();
 | 
						|
            ergodox_right_led_3_on();
 | 
						|
            break;
 | 
						|
        case 6:
 | 
						|
            ergodox_right_led_2_on();
 | 
						|
            ergodox_right_led_3_on();
 | 
						|
            break;
 | 
						|
        case 7:
 | 
						|
            ergodox_right_led_1_on();
 | 
						|
            ergodox_right_led_2_on();
 | 
						|
            ergodox_right_led_3_on();
 | 
						|
            break;
 | 
						|
        default:
 | 
						|
            break;
 | 
						|
    }
 | 
						|
 | 
						|
};
 |