1 #include QMK_KEYBOARD_H
3 #include "action_layer.h"
5 #define BASE 0 // default layer
6 #define SYMB 1 // symbols
7 #define MDIA 2 // media keys
9 // Best viewed in Xcode in Menlo Regular.
11 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
12 /* Keymap 0: Basic layer
14 * ,--------------------------------------------------. ,--------------------------------------------------.
15 * | = | 1 | 2 | 3 | 4 | 5 | L1 | | L1 | 6 | 7 | 8 | 9 | 0 | - |
16 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
17 * | ⌦ | Q | W | E | R | T | ~L1 | | ~L1 | Y | U | I | O | P | \ |
18 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
19 * | ⌫ | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' / L⌘ |
20 * |--------+------+------+------+------+------| L⌘ | | R⌘ |------+------+------+------+------+--------|
21 * | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / / ⌃| R⇧ |
22 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
23 * | L⌃ | L⌥ | L⌘ | ← | → | | ↑ | ↓ | [ | ] | |
24 * `----------------------------------' `----------------------------------'
25 * ,-------------. ,---------------.
26 * | `~ | '" | | ⎋ | ⌫ |
27 * ,------|------|------| |------+--------+------.
28 * | | | PgUp | | PgDn | | |
29 * | | ⇥ |------| |------| ⇥ |Enter |
30 * | | | R⌥ | | R⌃ | | |
31 * `--------------------' `----------------------'
33 // If it accepts an argument (i.e, is a function), it doesn't need KC_.
34 // Otherwise, it needs KC_*
35 [BASE
] = LAYOUT_ergodox( // layer 0 : default
37 KC_EQL
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, TG(SYMB
),
38 KC_DELT
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, MO(SYMB
),
39 KC_BSPC
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
,
40 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_LGUI
,
41 KC_LCTL
, KC_LALT
, KC_LGUI
,KC_LEFT
,KC_RGHT
,
44 KC_SPC
,KC_TAB
,KC_RALT
,
46 TG(SYMB
), KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
,
47 MO(SYMB
), KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSLS
,
48 KC_H
, KC_J
, KC_K
, KC_L
, LT(MDIA
, KC_SCLN
),GUI_T(KC_QUOT
),
49 KC_RGUI
, KC_N
, KC_M
, KC_COMM
,KC_DOT
, CTL_T(KC_SLSH
), KC_RSFT
,
50 KC_UP
, KC_DOWN
,KC_LBRC
,KC_RBRC
, KC_SPC
,
53 KC_RCTL
, KC_TAB
, KC_ENT
55 /* Keymap 1: Symbol Layer
57 * ,--------------------------------------------------. ,--------------------------------------------------.
58 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
59 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
60 * | | [ | ] | { | } | " | | | | / | 7 | 8 | 9 | * | F12 |
61 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
62 * | | < | > | ( | ) | ' |------| |------| - | 4 | 5 | 6 | + | |
63 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
64 * | | | | | | = | | | | : | 1 | 2 | 3 | = | |
65 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
66 * | | | | | | | 0 | . | ← | → | |
67 * `----------------------------------' `----------------------------------'
68 * ,-------------. ,-------------.
70 * ,------|------|------| |------+------+------.
72 * | | |------| |------| | |
74 * `--------------------' `--------------------'
77 [SYMB
] = LAYOUT_ergodox(
79 KC_TRNS
,KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_TRNS
,
80 KC_TRNS
,KC_LBRC
,KC_RBRC
,KC_LCBR
,KC_RCBR
,KC_DQT
,KC_TRNS
,
81 KC_TRNS
,KC_LABK
,KC_RABK
,KC_LPRN
,KC_RPRN
,KC_QUOT
,
82 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_EQL
,KC_TRNS
,
83 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
86 KC_TRNS
,KC_TRNS
,KC_TRNS
,
88 KC_TRNS
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
,
89 KC_TRNS
, KC_SLSH
, KC_7
, KC_8
, KC_9
, KC_ASTR
, KC_F12
,
90 KC_MINS
, KC_4
, KC_5
, KC_6
, KC_PLUS
, KC_TRNS
,
91 KC_TRNS
, KC_COLN
, KC_1
, KC_2
, KC_3
, KC_EQL
, KC_TRNS
,
92 KC_0
, KC_DOT
, KC_LEFT
, KC_RGHT
, KC_TRNS
,
95 KC_TRNS
, KC_TRNS
, KC_TRNS
97 /* Keymap 2: Media keys
99 * ,--------------------------------------------------. ,--------------------------------------------------.
100 * | | F14 | F15 |PrtScr|SclLck| Pause| | | | ⌘W | ⌘⇧` | ⌘` | | | Power |
101 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
102 * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | |
103 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
104 * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | F16 |
105 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
106 * | | | | | | | | | | | ⏯ | ⏮ | ⏭ | | |
107 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
108 * | | | | | | |VolUp |VolDn | Mute | | |
109 * `----------------------------------' `----------------------------------'
110 * ,-------------. ,-------------.
112 * ,------|------|------| |------+------+------.
113 * | | | Home | | End | | |
114 * | | |------| |------| ⌘C | ⌘V |
116 * `--------------------' `--------------------'
119 [MDIA
] = LAYOUT_ergodox(
120 KC_TRNS
, KC_F14
, KC_F15
, KC_PSCR
, KC_SLCK
, KC_PAUS
, KC_TRNS
, /* F14 dims screen, F15 brightens */
121 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_PGUP
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
122 KC_TRNS
, KC_TRNS
, KC_HOME
, KC_PGDN
, KC_END
, KC_TRNS
,
123 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
124 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
127 KC_TRNS
, KC_TRNS
, KC_TRNS
,
129 KC_TRNS
, LGUI(KC_W
), LGUI(LSFT(KC_GRV
)), LGUI(KC_GRV
), KC_TRNS
, KC_TRNS
, KC_POWER
,
130 KC_TRNS
, LGUI(KC_RBRC
), LGUI(LALT(KC_UP
)), KC_UP
, LGUI(LALT(KC_DOWN
)), KC_TRNS
, KC_TRNS
,
131 LGUI(KC_LBRC
), KC_LEFT
, KC_DOWN
, KC_RGHT
, KC_TRNS
, KC_F16
,
132 KC_TRNS
, KC_TRNS
, KC_MPLY
, KC_MPRV
, KC_MNXT
, KC_TRNS
, KC_TRNS
,
133 KC_VOLU
, KC_VOLD
, KC_MUTE
, KC_TRNS
, KC_TRNS
,
136 LGUI(KC_X
), LGUI(KC_C
), LGUI(KC_V
)
140 const uint16_t PROGMEM fn_actions
[] = {
141 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB
) // FN1 - Momentary Layer 1 (Symbols)
144 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
)
146 // MACRODOWN only works in this function
151 // Runs just one time when the keyboard initializes.
152 void matrix_init_user(void) {
156 // Runs constantly in the background, in a loop.
157 void matrix_scan_user(void) {
159 uint8_t layer
= biton32(layer_state
);
161 ergodox_board_led_off();
162 ergodox_right_led_1_off();
163 ergodox_right_led_2_off();
164 ergodox_right_led_3_off();
166 // TODO: Make this relevant to the ErgoDox EZ.
168 ergodox_right_led_1_on();
171 ergodox_right_led_2_on();