2 Copyright 2013 Oleg Kostyuk <cub.uanic@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"
21 // Aliases for shifted symbols
23 #define KC_TILD KC_FN11
24 #define KC_EXLM KC_FN12
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
45 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 KEYMAP( // layer 0 : default
48 EQL, 1, 2, 3, 4, 5, ESC,
49 BSLS,Q, W, E, R, T, FN2,
51 LSFT,Z, X, C, V, B, FN1,
52 LGUI,GRV, BSLS,LEFT,RGHT,
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,
67 KEYMAP( // layer 1 : function and symbol keys
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,
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,
88 KEYMAP( // layer 2 : keyboard functions
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,
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,
109 KEYMAP( // layer 3: numpad
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,
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,
132 /* id for user defined functions */
138 * Fn action definition
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
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 - "
177 void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
179 if (id == TEENSY_KEY) {
181 print("\n\nJump to bootloader... ");
183 bootloader_jump(); // should not return
184 print("not supported.\n");