]>
git.gir.st - tmk_keyboard.git/blob - keyboard/ergodox/keymap_colemak.c
2 Copyright 2016 Paul Williamson <squarefrog@gmail.com>
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include <util/delay.h>
18 #include "bootloader.h"
19 #include "keymap_common.h"
22 const uint8_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
25 * Keymap 0: Default Colemak Layer
27 * This is a general purpose Colemak layout which should serve as a good
28 * basis for your own custom layout. Mac users may want to swap the
29 * position of the Alt and GUI keys.
31 * ,--------------------------------------------------. ,--------------------------------------------------.
32 * | Esc | 1 | 2 | 3 | 4 | 5 | ~ | | - | 6 | 7 | 8 | 9 | 0 | + |
33 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
34 * | Tab | Q | W | F | P | G | [ | | ] | J | L | U | Y | ; | \ |
35 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
36 * | CpsLk | A | R | S | T | D |------| |------| H | N | E | I | O | ' |
37 * |--------+------+------+------+------+------| +L2 | | |------+------+------+------+------+--------|
38 * | LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift |
39 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
40 * | LCtrl| LGui | LAlt | Left | Rght | | Up | Dn | RAlt | RGui | RCtrl |
41 * `----------------------------------' `----------------------------------'
42 * ,-------------. ,-------------.
43 * |CpsLck| Del | | PgUp | PgDn |
44 * ,------|------|------| |------+------+------.
45 * | | | LAlt | | RAlt | | |
46 * | BkSp | ~L1 |------| |------| Enter| Space|
47 * | | | LCtrl| | RCtrl| | |
48 * `--------------------' `--------------------'
53 ESC
, 1, 2, 3, 4, 5, GRV
,
54 TAB
, Q
, W
, F
, P
, G
, LBRC
,
56 LSFT
,Z
, X
, C
, V
, B
, FN2
,
57 LCTL
,LGUI
,LALT
,LEFT
,RGHT
,
62 MINS
,6, 7, 8, 9, 0, EQL
,
63 RBRC
,J
, L
, U
, Y
, SCLN
,BSLS
,
65 NO
, K
, M
, COMM
,DOT
, SLSH
,RSFT
,
66 UP
, DOWN
,RALT
,RGUI
,RCTL
,
73 * Layer 1: Function keys
75 * This layer contains function keys, and media keys. Additionally, there
76 * are QWERTY-style Vim arrow keys. I could never get used to Colemak's
77 * rearranged Vim arrow placements.
79 * Most of the non-modifier keys are marked as NO, so it's immediately
80 * obvious if you start typing on a secondary layer.
82 * ,--------------------------------------------------. ,--------------------------------------------------.
83 * | Teensy | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | TRNS |
84 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
85 * | TRNS | | | | | | TRNS | | TRNS | | | | | | TRNS |
86 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
87 * | TRNS | | | | | |------| |------| Left | Down | Up | Right| | TRNS |
88 * |--------+------+------+------+------+------| +L2 | | |------+------+------+------+------+--------|
89 * | TRNS | | | | | | | | | | | | | | TRNS |
90 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
91 * | TRNS | TRNS | Play | RW | FF | | Mute | Vol- | Vol+ | TRNS | TRNS |
92 * `----------------------------------' `----------------------------------'
93 * ,-------------. ,-------------.
94 * | | | | HOME | END |
95 * ,------|------|------| |------+------+------.
96 * | | | TRNS | | TRNS | | |
97 * | TRNS | |------| |------| TRNS | TRNS |
98 * | | | TRNS | | TRNS | | |
99 * `--------------------' `--------------------'
104 FN31
,F1
, F2
, F3
, F4
, F5
, F11
,
105 TRNS
,NO
, NO
, NO
, NO
, NO
, TRNS
,
106 TRNS
,NO
, NO
, NO
, NO
, NO
,
107 TRNS
,NO
, NO
, NO
, NO
, NO
, FN2
,
108 TRNS
,TRNS
,MPLY
,MPRV
,MNXT
,
113 F12
, F6
, F7
, F8
, F9
, F10
, TRNS
,
114 TRNS
,NO
, NO
, NO
, NO
, NO
, TRNS
,
115 LEFT
,DOWN
,UP
, RGHT
,NO
, TRNS
,
116 NO
, NO
, NO
, NO
, NO
, NO
, TRNS
,
117 MUTE
,VOLD
,VOLU
,TRNS
,TRNS
,
124 * Layer 2: Number Pad
126 * This layer has a number pad for quicker number entry. As with layer 1,
127 * most of the non-modifier keys are marked as NO, so it's immediately
128 * obvious if you start typing on a secondary layer.
130 * Inspired by Ben Blazak QWERTY num pad.
131 * https://git.io/voIeY
133 * ,--------------------------------------------------. ,--------------------------------------------------.
134 * | ESC | | | | | | | | | | NmLk | / | * | - | Bkspc |
135 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
136 * | TRNS | | | | | | TRNS | | TRNS | | 7 | 8 | 9 | + | Bkspc |
137 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
138 * | TRNS | | | | | |------| |------| | 4 | 5 | 6 | + | Enter |
139 * |--------+------+------+------+------+------| | | -L0 |------+------+------+------+------+--------|
140 * | TRNS | | | | | | | | | | 1 | 2 | 3 | Enter| Enter |
141 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
142 * | TRNS | TRNS | LALT | | | | 0 | 0 | . | Enter| Enter|
143 * `----------------------------------' `----------------------------------'
144 * ,-------------. ,-------------.
145 * | | | | TRNS | TRNS |
146 * ,------|------|------| |------+------+------.
147 * | | | TRNS | | TRNS | | |
148 * | Bkspc| |------| |------| Enter| |
149 * | | | TRNS | | TRNS | | |
150 * `--------------------' `--------------------'
155 ESC
, NO
, NO
, NO
, NO
, NO
, NO
,
156 TRNS
,NO
, NO
, NO
, NO
, NO
, TRNS
,
157 TRNS
,NO
, NO
, NO
, NO
, NO
,
158 TRNS
,NO
, NO
, NO
, NO
, NO
, NO
,
159 TRNS
,TRNS
,LALT
,NO
, NO
,
164 NO
, NO
, NLCK
,SLSH
,PAST
,PMNS
,BSPC
,
165 TRNS
,NO
, P7
, P8
, P9
, PPLS
,BSPC
,
166 NO
, P4
, P5
, P6
, PPLS
,PENT
,
167 FN0
, NO
, P1
, P2
, P3
, PENT
,PENT
,
168 P0
, P0
, PDOT
,PENT
,PENT
,
175 /* id for user defined functions */
181 * Fn action definition
183 const uint16_t PROGMEM fn_actions
[] = {
185 [0] = ACTION_LAYER_SET(0, ON_PRESS
), // Switch to Layer 0
186 [1] = ACTION_LAYER_MOMENTARY(1), // Momentarily switch to layer 1
187 [2] = ACTION_LAYER_SET(2, ON_PRESS
), // Switch to Layer 2
190 [31] = ACTION_FUNCTION(TEENSY_KEY
),
193 void action_function(keyrecord_t
*event
, uint8_t id
, uint8_t opt
)
195 if (id
== TEENSY_KEY
) {
197 print("\n\nJump to bootloader... ");
199 bootloader_jump(); // should not return
200 print("not supported.\n");