]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/keymaps/don/keymap.c
382025dc4d981226baf11e51cfa1a04931755fb8
[qmk_firmware.git] / keyboards / ergodox / keymaps / don / keymap.c
1 /*
2 Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
3 Jun Wako <wakojun@gmail.com>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include "ergodox.h"
20 #include "debug.h"
21 #include "action_layer.h"
22 #include "version.h"
23
24 #define BASE 0
25 #define SYMB 1
26 #define MOUS 2
27 #define FNXN 3
28 #define NUMP 4
29
30
31 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32     [BASE] = KEYMAP(  // layer 0 : default
33         // left hand
34         KC_ESC, KC_1,  KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
35         KC_BSLS,KC_Q,  KC_W,   KC_E,   KC_R,   KC_T,   TG(MOUS),
36         KC_TAB, KC_A,  KC_S,   KC_D,   KC_F,   KC_G,
37         KC_LSFT,KC_Z,  KC_X,   KC_C,   KC_V,   KC_B,   MO(SYMB),
38         KC_EQL,KC_GRV, KC_BSLS,KC_LEFT,KC_RGHT,
39                                       KC_LALT,KC_LGUI,
40                                            KC_HOME,
41                                  KC_BSPC,KC_LCTL, KC_END,
42         // right hand
43         TG(NUMP), KC_6,KC_7, KC_8,   KC_9,   KC_0,   KC_MINS,
44           KC_LBRC,KC_Y,KC_U, KC_I,   KC_O,   KC_P,   KC_RBRC,
45                   KC_H,KC_J, KC_K,   KC_L,   KC_SCLN,KC_QUOT,
46         TG(SYMB), KC_N,KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
47                       KC_UP, KC_DOWN,KC_LEFT,  KC_RGHT,KC_RGUI,
48         KC_DEL,KC_RGUI,
49         KC_PGUP,
50         KC_PGDN,KC_ENT, KC_SPC
51     ),
52
53     [SYMB] = KEYMAP(  // layer 1 : function and symbol keys
54         // left hand
55         KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
56         KC_TRNS,KC_LBRC,KC_RBRC,KC_LBRC,KC_RBRC,KC_SCLN,KC_TRNS,
57         KC_TRNS,KC_BSLS,KC_SLSH,KC_9   ,KC_0   ,KC_SCLN,
58         KC_TRNS,KC_1   ,KC_2   ,KC_3   ,KC_4   ,KC_5   ,KC_TRNS,
59        TG(FNXN),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
60                                       KC_TRNS,KC_TRNS,
61                                            KC_TRNS,
62                                  KC_TRNS,KC_TRNS,KC_TRNS,
63         // right hand
64              KC_F12, KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_PWR ,
65              KC_TRNS,KC_TRNS,KC_EQL ,KC_EQL ,KC_MINS,KC_MINS,KC_VOLU,
66                      KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,KC_TRNS,KC_VOLD,
67              KC_FN5 ,KC_6   ,KC_7   ,KC_8   ,KC_9   ,KC_0   ,KC_MUTE,
68                      KC_MRWD,KC_MSTP,KC_MPLY,KC_MPRV,KC_MNXT,
69         KC_TRNS,KC_TRNS,
70         KC_TRNS,
71         KC_TRNS,KC_TRNS,KC_TRNS
72     ),
73     [MOUS] = KEYMAP(  // layer 2 : Mouse
74         // left hand
75         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
76         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS ,
77         KC_TRNS,KC_BTN4,KC_BTN2,KC_BTN3,KC_BTN1,KC_TRNS,
78         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
79         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
80                                       KC_TRNS,KC_TRNS,
81                                            KC_TRNS,
82                                  KC_TRNS,KC_TRNS,KC_TRNS,
83         // right hand
84              KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
85              KC_TRNS,KC_ACL0,KC_TRNS,KC_WH_D,KC_WH_U,KC_TRNS,KC_TRNS,
86                      KC_ACL1,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,KC_TRNS,
87              KC_TRNS,KC_ACL2,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
88                              KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
89         KC_TRNS,KC_TRNS,
90         KC_TRNS,
91         KC_TRNS,KC_TRNS,KC_TRNS
92     ),
93
94     [FNXN] = KEYMAP(  // layer 3 : keyboard functions
95         // left hand
96         RESET,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
97         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_FN5,
98         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
99         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_FN5,
100         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
101                                       KC_TRNS,KC_TRNS,
102                                            KC_TRNS,
103                                  KC_TRNS,KC_TRNS,KC_TRNS,
104         // right hand
105             KC_FN5, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
106             KC_FN5, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
107                     KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
108             KC_FN5, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
109                        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
110         KC_TRNS,KC_TRNS,
111         KC_TRNS,
112         KC_TRNS,KC_TRNS,KC_TRNS
113     ),
114
115     [NUMP] = KEYMAP(  // layer 4: numpad
116         // left hand
117         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
118         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
119         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
120         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
121         KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
122                                       KC_TRNS,KC_TRNS,
123                                            KC_TRNS,
124                                  KC_TRNS,KC_TRNS,KC_TRNS,
125         // right hand
126              KC_FN5,KC_NLCK, KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
127              KC_FN5 ,KC_NO,  KC_P7,  KC_P8,  KC_P9,  KC_PMNS,KC_BSPC,
128                      KC_NO,  KC_P4,  KC_P5,  KC_P6,  KC_PPLS,KC_PENT,
129              KC_FN5 ,KC_NO,  KC_P1,  KC_P2,  KC_P3,  KC_PPLS,KC_PENT,
130                      KC_P0,  KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
131         KC_TRNS,KC_TRNS,
132         KC_TRNS,
133         KC_TRNS,KC_TRNS,KC_TRNS
134     ),
135 };
136 const uint16_t PROGMEM fn_actions[] = {
137     [0] = ACTION_LAYER_SET(BASE, ON_PRESS),                  // FN0 - push Layer0
138     [1] = ACTION_LAYER_MOMENTARY(SYMB),                      // FN1 - switch to Layer1
139     [2] = ACTION_LAYER_SET(MOUS, ON_PRESS),                  // FN2 - push Layer2
140     [3] = ACTION_LAYER_SET(FNXN, ON_PRESS),                  // FN3 - push Layer3
141     [4] = ACTION_LAYER_SET(NUMP, ON_PRESS),                  // FN4 - push Layer4
142     [5] = ACTION_LAYER_SET(BASE, ON_PRESS),                  // FN5 - push Layer0
143     [6] = ACTION_LAYER_SET(SYMB, ON_PRESS),                  // FN6 - push Layer1
144 };
145
146 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
147 {
148   // MACRODOWN only works in this function
149       switch(id) {
150         case 0:
151         if (record->event.pressed) {
152           register_code(KC_RSFT);
153         } else {
154           unregister_code(KC_RSFT);
155         }
156         break;
157       }
158     return MACRO_NONE;
159 };
160
161 // Runs just one time when the keyboard initializes.
162 void matrix_init_user(void) {
163
164 };
165
166 // Runs constantly in the background, in a loop.
167 void matrix_scan_user(void) {
168
169 };