407 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			407 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include QMK_KEYBOARD_H
 | 
						||
#include "action_layer.h"
 | 
						||
#include "keymap_extras/keymap_german.h"
 | 
						||
 | 
						||
#define UM 0
 | 
						||
 | 
						||
#define L0   0      // layer_0
 | 
						||
#define L1   1      // layer_1  
 | 
						||
#define L2   2      // layer_2
 | 
						||
#define L3   3      // layer_3
 | 
						||
#define L4   4      // layer_4
 | 
						||
#define L5   5      // layer_5
 | 
						||
#define L6   6      // layer_6
 | 
						||
 | 
						||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						||
/*
 | 
						||
    .------------------------------------.------------------------------------.
 | 
						||
    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   |
 | 
						||
    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  |
 | 
						||
    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   |
 | 
						||
    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT |
 | 
						||
    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL|
 | 
						||
     '------------------------'                     '------------------------'
 | 
						||
                            .-----------. .-----------.
 | 
						||
                            |VOL- |VOL+ | !MUTE |PLAY |
 | 
						||
                      .-----+-----+-----! !-----+-----+-----.
 | 
						||
                      !     !     |     | !     |     !     !
 | 
						||
                      !     !     |-----| !-----|     !     !
 | 
						||
                      ! CTL !     ! ALT ! ! CTL !     ! ALT !
 | 
						||
                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE|
 | 
						||
                      '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L0] = LAYOUT_ergodox(
 | 
						||
 KC_ESC,  DE_1,    DE_2,     DE_3,    DE_4,     DE_5,    DE_ACUT,
 | 
						||
 KC_TAB,  DE_X,    DE_V,     DE_L,    DE_C,     DE_W,    KC_PSCR,
 | 
						||
 MO(1),   DE_U,    DE_I,     DE_A,    DE_E,     DE_O,
 | 
						||
 KC_LSFT, DE_UE,   DE_OE,    DE_AE,   DE_P,     DE_Z,    KC_SPACE,
 | 
						||
 KC_LCTL, KC_LGUI, KC_LALT,  MO(3),   MO(2),
 | 
						||
 /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     KC_VOLD, KC_VOLU,
 | 
						||
 /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/     /*-*/    CTL_T(KC_ENTER), MO(1),   ALT_T(KC_TAB),
 | 
						||
 DE_GRV,  DE_6,    DE_7,     DE_8,    DE_9,     DE_0,    DE_CIRC,
 | 
						||
 KC_TRNS, DE_K,    DE_H,     DE_G,    DE_F,     DE_Q,    DE_SS,
 | 
						||
 /*-*/    DE_S,    DE_N,     DE_R,    DE_T,     DE_D,    DE_Y,
 | 
						||
 KC_TRNS, DE_B,    DE_M,     DE_COMM, DE_DOT,   DE_J,    KC_RSFT,
 | 
						||
 /*-*/    /*-*/    MO(2),    MO(3),   KC_APP,   KC_RALT, KC_RCTL,
 | 
						||
 KC_MUTE, KC_MPLY,
 | 
						||
 KC_TRNS,
 | 
						||
 CTL_T(KC_ESC), MO(1),   ALT_T(KC_SPACE)
 | 
						||
),
 | 
						||
/*
 | 
						||
    .------------------------------------.------------------------------------.
 | 
						||
    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     |
 | 
						||
    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   |
 | 
						||
    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     |
 | 
						||
    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
     |    |    |    |    |    |                     !    |    |    |    |    |
 | 
						||
     '------------------------'                     '------------------------'
 | 
						||
                            .-----------. .-----------.
 | 
						||
                            |     |     | !     |     |
 | 
						||
                      .-----+-----+-----! !-----+-----+-----.
 | 
						||
                      !     !     |     | !     |     !     !
 | 
						||
                      !     !     !-----! !-----!     !     !
 | 
						||
                      |     |     |     | !     |     |     |
 | 
						||
                      '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L1] = LAYOUT_ergodox(
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR,
 | 
						||
 KC_TRNS, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_TRNS,
 | 
						||
 /*-*/    DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT,
 | 
						||
 KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS
 | 
						||
),
 | 
						||
/*
 | 
						||
 * .------------------------------------.------------------------------------.
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
 * |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     |
 | 
						||
 * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
 *  |    |    |    |    |    |                     !    |    |    |    |    |
 | 
						||
 *  '------------------------'                     '------------------------'
 | 
						||
 *                         .-----------. .-----------.
 | 
						||
 *                         |     |     | !     |     |
 | 
						||
 *                   .-----+-----+-----! !-----+-----+-----.
 | 
						||
 *                   !     !     |     | !     |     !     !
 | 
						||
 *                   !     !     !-----! !-----!     !     !
 | 
						||
 *                   |     |     |     | !     |     |  0  |
 | 
						||
 *                   '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L2] = LAYOUT_ergodox(
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_TRNS,
 | 
						||
 KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, DE_7,    DE_8,    DE_9,    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    KC_TRNS, DE_4,    DE_5,    DE_6,    KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, DE_1,    DE_2,    DE_3,    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, DE_0
 | 
						||
),
 | 
						||
/*
 | 
						||
 * .------------------------------------.------------------------------------.
 | 
						||
 * |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
 * |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     |
 | 
						||
 * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
 *  |    |    |    |    |    |                     !    |    |    |    |    |
 | 
						||
 *  '------------------------'                     '------------------------'
 | 
						||
 *                         .-----------. .-----------.
 | 
						||
 *                         |     |     | !     |     |
 | 
						||
 *                   .-----+-----+-----! !-----+-----+-----.
 | 
						||
 *                   !     !     |     | !     |     !     !
 | 
						||
 *                   !     !     !-----! !-----!     !     !
 | 
						||
 *                   |     |     |     | !     |     |     |
 | 
						||
 *                   '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L3] = LAYOUT_ergodox(
 | 
						||
 KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
 | 
						||
 KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,
 | 
						||
 KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_WH_U, KC_MS_U, KC_WH_D, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS
 | 
						||
),
 | 
						||
/*
 | 
						||
 * .------------------------------------.------------------------------------.
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
 *  |    |    |    |    |    |                     !    |    |    |    |    |
 | 
						||
 *  '------------------------'                     '------------------------'
 | 
						||
 *                         .-----------. .-----------.
 | 
						||
 *                         |     |     | !     |     |
 | 
						||
 *                   .-----+-----+-----! !-----+-----+-----.
 | 
						||
 *                   !     !     |     | !     |     !     !
 | 
						||
 *                   !     !     !-----! !-----!     !     !
 | 
						||
 *                   |     |     |     | !     |     |     |
 | 
						||
 *                   '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L4] = LAYOUT_ergodox(
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS
 | 
						||
),
 | 
						||
/*
 | 
						||
 * .------------------------------------.------------------------------------.
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
 *  |    |    |    |    |    |                     !    |    |    |    |    |
 | 
						||
 *  '------------------------'                     '------------------------'
 | 
						||
 *                         .-----------. .-----------.
 | 
						||
 *                         |     |     | !     |     |
 | 
						||
 *                   .-----+-----+-----! !-----+-----+-----.
 | 
						||
 *                   !     !     |     | !     |     !     !
 | 
						||
 *                   !     !     !-----! !-----!     !     !
 | 
						||
 *                   |     |     |     | !     |     |     |
 | 
						||
 *                   '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L5] = LAYOUT_ergodox(
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS
 | 
						||
),
 | 
						||
/*
 | 
						||
 * .------------------------------------.------------------------------------.
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
 | 
						||
 * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
 | 
						||
 * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
 | 
						||
 * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
 | 
						||
 *  |    |    |    |    |    |                     !    |    |    |    |    |
 | 
						||
 *  '------------------------'                     '------------------------'
 | 
						||
 *                         .-----------. .-----------.
 | 
						||
 *                         |     |     | !     |     |
 | 
						||
 *                   .-----+-----+-----! !-----+-----+-----.
 | 
						||
 *                   !     !     |     | !     |     !     !
 | 
						||
 *                   !     !     !-----! !-----!     !     !
 | 
						||
 *                   |     |     |     | !     |     |     |
 | 
						||
 *                   '-----------------' '-----------------'
 | 
						||
 */
 | 
						||
[L6] = LAYOUT_ergodox(
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
 | 
						||
 /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS,
 | 
						||
 KC_TRNS,
 | 
						||
 KC_TRNS, KC_TRNS, KC_TRNS
 | 
						||
),
 | 
						||
};
 | 
						||
 | 
						||
#define UC_MODE_WIN 0
 | 
						||
#define UC_MODE_LINUX 1
 | 
						||
#define UC_MODE_OSX 2
 | 
						||
 | 
						||
// TODO: allow default mode to be configured
 | 
						||
static uint16_t unicode_mode = UC_MODE_WIN;
 | 
						||
 | 
						||
uint16_t hextokeycode(uint8_t hex) {
 | 
						||
    if (hex == 0x0) {
 | 
						||
        return KC_P0;
 | 
						||
    }
 | 
						||
    if (hex < 0xA) {
 | 
						||
        return KC_P1 + (hex - 0x1);
 | 
						||
    }
 | 
						||
    return KC_A + (hex - 0xA);
 | 
						||
}
 | 
						||
 | 
						||
void unicode_action_function(uint16_t hi, uint16_t lo) {
 | 
						||
    switch (unicode_mode) {
 | 
						||
    case UC_MODE_WIN:
 | 
						||
        register_code(KC_LALT);
 | 
						||
 | 
						||
        register_code(KC_PPLS);
 | 
						||
        unregister_code(KC_PPLS);
 | 
						||
 | 
						||
        register_code(hextokeycode((hi & 0xF0) >> 4));
 | 
						||
        unregister_code(hextokeycode((hi & 0xF0) >> 4));
 | 
						||
        register_code(hextokeycode((hi & 0x0F)));
 | 
						||
        unregister_code(hextokeycode((hi & 0x0F)));
 | 
						||
        register_code(hextokeycode((lo & 0xF0) >> 4));
 | 
						||
        unregister_code(hextokeycode((lo & 0xF0) >> 4));
 | 
						||
        register_code(hextokeycode((lo & 0x0F)));
 | 
						||
        unregister_code(hextokeycode((lo & 0x0F)));
 | 
						||
 | 
						||
        unregister_code(KC_LALT);
 | 
						||
        break;
 | 
						||
    case UC_MODE_LINUX:
 | 
						||
        register_code(KC_LCTL);
 | 
						||
        register_code(KC_LSFT);
 | 
						||
 | 
						||
        register_code(KC_U);
 | 
						||
        unregister_code(KC_U);
 | 
						||
 | 
						||
        register_code(hextokeycode((hi & 0xF0) >> 4));
 | 
						||
        unregister_code(hextokeycode((hi & 0xF0) >> 4));
 | 
						||
        register_code(hextokeycode((hi & 0x0F)));
 | 
						||
        unregister_code(hextokeycode((hi & 0x0F)));
 | 
						||
        register_code(hextokeycode((lo & 0xF0) >> 4));
 | 
						||
        unregister_code(hextokeycode((lo & 0xF0) >> 4));
 | 
						||
        register_code(hextokeycode((lo & 0x0F)));
 | 
						||
        unregister_code(hextokeycode((lo & 0x0F)));
 | 
						||
 | 
						||
        unregister_code(KC_LCTL);
 | 
						||
        unregister_code(KC_LSFT);
 | 
						||
        break;
 | 
						||
    case UC_MODE_OSX:
 | 
						||
        break;
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
						||
    if (!record->event.pressed) {
 | 
						||
        return MACRO_NONE;
 | 
						||
    }
 | 
						||
    // MACRODOWN only works in this function
 | 
						||
    switch(id) {
 | 
						||
        case UM:
 | 
						||
            unicode_mode = (unicode_mode + 1) % 2;
 | 
						||
            break;
 | 
						||
 | 
						||
 | 
						||
        default:
 | 
						||
            break;
 | 
						||
    }
 | 
						||
    return MACRO_NONE;
 | 
						||
};
 | 
						||
 | 
						||
// Runs just one time when the keyboard initializes.
 | 
						||
void matrix_init_user(void) {
 | 
						||
 | 
						||
};
 | 
						||
 | 
						||
// Runs constantly in the background, in a loop.
 | 
						||
void matrix_scan_user(void) {
 | 
						||
    uint8_t layer = biton32(layer_state);
 | 
						||
 | 
						||
    ergodox_board_led_off();
 | 
						||
    ergodox_right_led_1_off();
 | 
						||
    ergodox_right_led_2_off();
 | 
						||
    ergodox_right_led_3_off();
 | 
						||
    switch (layer) {
 | 
						||
        case L1:
 | 
						||
            ergodox_right_led_1_on();
 | 
						||
            break;
 | 
						||
        case L2:
 | 
						||
            ergodox_right_led_2_on();
 | 
						||
            break;
 | 
						||
        case L3:
 | 
						||
            ergodox_right_led_3_on();
 | 
						||
            break;
 | 
						||
        case L4:
 | 
						||
            ergodox_right_led_1_on();
 | 
						||
            ergodox_right_led_2_on();
 | 
						||
            break;
 | 
						||
        case L5:
 | 
						||
            ergodox_right_led_1_on();
 | 
						||
            ergodox_right_led_3_on();
 | 
						||
            break;
 | 
						||
        // case L6:
 | 
						||
        //     ergodox_right_led_2_on();
 | 
						||
        //     ergodox_right_led_3_on();
 | 
						||
        //     break;
 | 
						||
        // case L7:
 | 
						||
        //     ergodox_right_led_1_on();
 | 
						||
        //     ergodox_right_led_2_on();
 | 
						||
        //     ergodox_right_led_3_on();
 | 
						||
        //     break;
 | 
						||
        default:
 | 
						||
            ergodox_board_led_off();
 | 
						||
            break;
 | 
						||
    }
 | 
						||
};
 |