]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - keyboard/ergodox/keymap_max.c
fe1eb26d9d461f71a66fb26e4fcc5e94125b65d2
[max/tmk_keyboard.git] / keyboard / ergodox / keymap_max.c
1 /*
2 Copyright 2016 Paul Williamson <squarefrog@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
22 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23
24     /*
25      * Keymap 0: Default Colemak Layer
26      *
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.
30      *
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      * | LShift |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |   '    |
37      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
38      * |   \    |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |   /  | RShift |
39      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
40      *   |      |      | LAlt | Home | BkSp |                                       |  Del | End  | RAlt |      | RCtrl |
41      *   `----------------------------------'                                       `----------------------------------'
42      *                                        ,-------------.       ,-------------.
43      *                                        |      |      |       | PgUp | PgDn |
44      *                                 ,------|------|------|       |------+------+------.
45      *                                 |      |      |      |       | RAlt |      |      |
46      *                                 |Space | LCtrl|------|       |------| LAlt | Enter|
47      *                                 |      |      | LGui |       | ~L1  |      |      |
48      *                                 `--------------------'       `--------------------'
49      */
50
51     KEYMAP(
52         // left hand
53         ESC, 1,   2,   3,   4,   5,   NUHS,
54         TAB, Q,   W,   F,   P,   G,   LBRC,
55         LSFT,A,   R,   S,   T,   D,
56         NUBS,Z,   X,   C,   V,   B,   NO,
57         NO,  NO, LALT, HOME ,BSPC,
58                                         NO,  NO,
59                                              NO,
60                                  SPC,LCTL, LGUI,
61        // right hand
62              NO,6,   7,   8,   9,   0,   MINS,
63              RBRC,J,   L,   U,   Y,   SCLN,EQL,
64                   H,   N,   E,   I,   O,   QUOT,
65              NO,  K,   M,   COMM,DOT, SLSH,RSFT,
66                       DEL,  END, RALT,NO,  RCTL,
67         PGUP,PGDN,
68         RALT,
69         FN1,LALT, ENT
70     ),
71
72     /*
73      * Layer 1: Function keys
74      *
75      * This layer contains function keys, and media keys.     *
76      * Most of the non-modifier keys are marked as NO, so it's immediately
77      * obvious if you start typing on a secondary layer.
78      *
79      * ,--------------------------------------------------.           ,--------------------------------------------------.
80      * |   `    |  F1  |  F2  |  F3  |  F4  |  F5  |  F11 |           |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |  TRNS  |
81      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
82      * |   TRNS |      |  UP  |      |      |      | TRNS |           | TRNS |      |      |      |      |      |  TRNS  |
83      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
84      * |   TRNS | LEFT | DOWN |RIGHT |      |      |------|           |------|      |      |      |      |      |  TRNS  |
85      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
86      * |   TRNS |      |      |      |      |      |      |           |      |      |      |      |      |      |  TRNS  |
87      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
88      *   | TRNS | TRNS | Play |  RW  |  FF  |                                       | Mute | Vol- | Vol+ | TRNS | TRNS |
89      *   `----------------------------------'                                       `----------------------------------'
90      *                                        ,-------------.       ,-------------.
91      *                                        |      |      |       | HOME |  END |
92      *                                 ,------|------|------|       |------+------+------.
93      *                                 |      |      | TRNS |       | TRNS |      |      |
94      *                                 | TRNS |      |------|       |------| TRNS | TRNS |
95      *                                 |      |      | TRNS |       | TRNS |      |      |
96      *                                 `--------------------'       `--------------------'
97      */
98
99     KEYMAP(
100         // left hand
101         GRV ,F1,  F2,  F3,  F4,  F5,  F11,
102         TRNS,NO,  UP,  NO,  NO,  NO,  TRNS,
103         TRNS,LEFT,DOWN,RIGHT,NO, NO,
104         TRNS,NO,  NO,  NO,  NO,  NO,    NO,
105         TRNS,TRNS,MPLY,MPRV,MNXT,
106                                       NO,  NO,
107                                            TRNS,
108                                  TRNS,NO,  TRNS,
109         // right hand
110              F12, F6,  F7,  F8,  F9,  F10, TRNS,
111              TRNS,NO,  NO,  NO,  NO,  NO,  TRNS,
112                   NO,NO,NO,  NO,NO,  TRNS,
113              NO,  NO,  NO,  NO,  NO,  NO,  TRNS,
114                        MUTE,VOLD,VOLU,TRNS,TRNS,
115         HOME,END,
116         TRNS,
117         TRNS,TRNS,TRNS
118     )
119 };
120
121 /* id for user defined functions */
122 enum function_id {
123     TEENSY_KEY,
124 };
125
126 /*
127  * Fn action definition
128  */
129 const action_t PROGMEM fn_actions[] = {
130     // Layer shifting
131     [0] = ACTION_LAYER_SET(0, ON_PRESS),           // Switch to Layer 0
132     [1] = ACTION_LAYER_MOMENTARY(1),               // Momentarily switch to layer 1
133     [2] = ACTION_LAYER_SET(2, ON_PRESS),           // Switch to Layer 2
134
135     // Teensy
136     [31] = ACTION_FUNCTION(TEENSY_KEY),
137 };
138
139 void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
140 {
141     if (id == TEENSY_KEY) {
142         clear_keyboard();
143         print("\n\nJump to bootloader... ");
144         _delay_ms(250);
145         bootloader_jump(); // should not return
146         print("not supported.\n");
147     }
148 }
149