]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - keyboard/ergodox/keymap_blazak.c
Add a qwerty layer
[max/tmk_keyboard.git] / keyboard / ergodox / keymap_blazak.c
1 /*
2 Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
3
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.
8
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.
13
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/>.
16 */
17 #include <util/delay.h>
18 #include "bootloader.h"
19 #include "keymap_common.h"
20
21 // Aliases for shifted symbols
22 // Names from QMK
23 #define KC_TILD KC_FN11
24 #define KC_EXLM KC_FN12
25 #define KC_AT   KC_FN13
26 #define KC_HASH KC_FN14
27 #define KC_DLR  KC_FN15
28 #define KC_PERC KC_FN16
29 #define KC_CIRC KC_FN17
30 #define KC_AMPR KC_FN18
31 #define KC_ASTR KC_FN19
32 #define KC_LPRN KC_FN20
33 #define KC_RPRN KC_FN21
34 #define KC_UNDS KC_FN22
35 #define KC_PLUS KC_FN23
36 #define KC_LCBR KC_FN24
37 #define KC_RCBR KC_FN25
38 #define KC_LABK KC_FN26
39 #define KC_RABK KC_FN27
40 #define KC_COLN KC_FN28
41 #define KC_PIPE KC_FN29
42 #define KC_QUES KC_FN30
43 #define KC_DQT  KC_FN31
44
45 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46     KEYMAP(  // layer 0 : default
47         // left hand
48         EQL, 1,   2,   3,   4,   5,   ESC,
49         BSLS,Q,   W,   E,   R,   T,   FN2,
50         TAB, A,   S,   D,   F,   G,
51         LSFT,Z,   X,   C,   V,   B,   FN1,
52         LGUI,GRV, BSLS,LEFT,RGHT,
53                                       LCTL,LALT,
54                                            HOME,
55                                  BSPC,DEL, END,
56         // right hand
57              FN3, 6,   7,   8,   9,   0,   MINS,
58              LBRC,Y,   U,   I,   O,   P,   RBRC,
59                   H,   J,   K,   L,   SCLN,QUOT,
60              FN1, N,   M,   COMM,DOT, SLSH,RSFT,
61                        LEFT,DOWN,UP,  RGHT,RGUI,
62         RALT,RCTL,
63         PGUP,
64         PGDN,ENT, SPC
65     ),
66
67     KEYMAP(  // layer 1 : function and symbol keys
68         // left hand
69         NO,  F1,  F2,  F3,  F4,  F5,  F11,
70         TRNS,LCBR,RCBR,LBRC,RBRC,NO,  FN4,
71         TRNS,SCLN,SLSH,MINS,P0,  COLN,
72         TRNS,P6,  P7,  P8,  P9,  PLUS,TRNS,
73         TRNS,TRNS,TRNS,TRNS,TRNS,
74                                       TRNS,TRNS,
75                                            TRNS,
76                                  TRNS,TRNS,TRNS,
77         // right hand
78              F12, F6,  F7,  F8,  F9,  F10, PWR,
79              TRNS,NO,  MINS,LABK,RABK,DLR ,VOLU,
80                   BSLS,P1,  LPRN,RPRN,PLUS,VOLD,
81              TRNS,ASTR,P2,  P3,  P4,  P5,  MUTE,
82                        TRNS,TRNS,TRNS,TRNS,TRNS,
83         TRNS,TRNS,
84         TRNS,
85         TRNS,TRNS,TRNS
86     ),
87
88     KEYMAP(  // layer 2 : keyboard functions
89         // left hand
90         FN0, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
91         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
92         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
93         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
94         TRNS,TRNS,TRNS,TRNS,TRNS,
95                                       TRNS,TRNS,
96                                            TRNS,
97                                  TRNS,TRNS,TRNS,
98         // right hand
99              FN4, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
100              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
101                   TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
102              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
103                        TRNS,TRNS,TRNS,TRNS,TRNS,
104         TRNS,TRNS,
105         TRNS,
106         TRNS,TRNS,TRNS
107     ),
108
109     KEYMAP(  // layer 3: numpad
110         // left hand
111         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
112         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
113         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
114         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
115         TRNS,TRNS,TRNS,TRNS,TRNS,
116                                       TRNS,TRNS,
117                                            TRNS,
118                                  TRNS,TRNS,TRNS,
119         // right hand
120              TRNS,NLCK,PSLS,PAST,PAST,PMNS,BSPC,
121              TRNS,NO,  P7,  P8,  P9,  PMNS,BSPC,
122                   NO,  P4,  P5,  P6,  PPLS,PENT,
123              TRNS,NO,  P1,  P2,  P3,  PPLS,PENT,
124                        P0,  PDOT,SLSH,PENT,PENT,
125         TRNS,TRNS,
126         TRNS,
127         TRNS,TRNS,TRNS
128     ),
129
130 };
131
132 /* id for user defined functions */
133 enum function_id {
134     TEENSY_KEY,
135 };
136
137 /*
138  * Fn action definition
139  */
140 const action_t PROGMEM fn_actions[] = {
141     ACTION_FUNCTION(TEENSY_KEY),                    // FN0 - Teensy key
142     ACTION_LAYER_MOMENTARY(1),                      // FN1 - switch to Layer1
143     ACTION_LAYER_SET(2, ON_PRESS),                  // FN2 - set Layer2
144     ACTION_LAYER_TOGGLE(3),                         // FN3 - toggle Layer3 aka Numpad layer
145     ACTION_LAYER_SET(0, ON_PRESS),                  // FN4 - set Layer0
146     // Reserved for user actions
147     ACTION_NO,
148     ACTION_NO,
149     ACTION_NO,
150     ACTION_NO,
151     ACTION_NO,
152     ACTION_NO,
153     // Shifted keys
154     ACTION_MODS_KEY(MOD_LSFT, KC_GRV),              // FN11 - ~
155     ACTION_MODS_KEY(MOD_LSFT, KC_1),                // FN12 - !
156     ACTION_MODS_KEY(MOD_LSFT, KC_2),                // FN13 - @
157     ACTION_MODS_KEY(MOD_LSFT, KC_3),                // FN14 - #
158     ACTION_MODS_KEY(MOD_LSFT, KC_4),                // FN15 - $
159     ACTION_MODS_KEY(MOD_LSFT, KC_5),                // FN16 - %
160     ACTION_MODS_KEY(MOD_LSFT, KC_6),                // FN17 - ^
161     ACTION_MODS_KEY(MOD_LSFT, KC_7),                // FN18 - &
162     ACTION_MODS_KEY(MOD_LSFT, KC_8),                // FN19 - *
163     ACTION_MODS_KEY(MOD_LSFT, KC_9),                // FN20 - (
164     ACTION_MODS_KEY(MOD_LSFT, KC_0),                // FN21 - )
165     ACTION_MODS_KEY(MOD_LSFT, KC_MINS),             // FN22 - _
166     ACTION_MODS_KEY(MOD_LSFT, KC_EQL),              // FN23 - +
167     ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),             // FN24 - {
168     ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),             // FN25 - }
169     ACTION_MODS_KEY(MOD_LSFT, KC_COMM),             // FN26 - <
170     ACTION_MODS_KEY(MOD_LSFT, KC_DOT),              // FN27 - >
171     ACTION_MODS_KEY(MOD_LSFT, KC_SCLN),             // FN28 - :
172     ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),             // FN29 - |
173     ACTION_MODS_KEY(MOD_LSFT, KC_SLSH),             // FN30 - ?
174     ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),             // FN31 - "
175 };
176
177 void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
178 {
179     if (id == TEENSY_KEY) {
180         clear_keyboard();
181         print("\n\nJump to bootloader... ");
182         _delay_ms(250);
183         bootloader_jump(); // should not return
184         print("not supported.\n");
185     }
186 }