]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/planck/keymaps/callum/keymap.c
Merge pull request #2047 from seebs/seebs/ergodox_brightness
[qmk_firmware.git] / keyboards / planck / keymaps / callum / keymap.c
1 #include "planck.h"
2 #include "action_layer.h"
3
4 extern keymap_config_t keymap_config;
5
6 #define G(X) LGUI(X)
7 #define A(X) LALT(X)
8 #define C(X) LCTL(X)
9 #define GC(X) G(C(X))
10 #define GAC(X) G(A(C(X)))
11 #define _______ KC_TRNS
12 #define XXXXXXX KC_NO
13
14 enum planck_layers {
15     _COLEMAK,
16     _QWERTY,
17     _SYMB,
18     _MOVE,
19     _FUNC
20 };
21
22 enum planck_keycodes {
23   COLEMAK = SAFE_RANGE,
24   QWERTY,
25   SYMB,
26   MOVE,
27   FUNC
28 };
29
30 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31
32 /* COLEMAK
33  * ,-----------------------------------------------------------------------.
34  * |Tab  |  Q  |  W  |  F  |  P  |  G  |  J  |  L  |  U  |  Y  |  ;  |  -  |
35  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
36  * |Bksp |  A  |  R  |  S  |  T  |  D  |  H  |  N  |  E  |  I  |  O  |  '  |
37  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
38  * |Shift|  Z  |  X  |  C  |  V  |  B  |  K  |  M  |  ,  |  .  |  /  |Shift|
39  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
40  * |Func |Super| Alt |Ctrl |Symb |Enter|Space|Move |Ctrl | Alt |Super|Func |
41  * `-----------------------------------------------------------------------'
42  */
43 [_COLEMAK] = {
44   {
45     KC_TAB,       KC_Q,         KC_W,         KC_F,
46     KC_P,         KC_G,         KC_J,         KC_L,
47     KC_U,         KC_Y,         KC_SCLN,      KC_MINS
48   },
49   {
50     KC_BSPC,      KC_A,         KC_R,         KC_S,
51     KC_T,         KC_D,         KC_H,         KC_N,
52     KC_E,         KC_I,         KC_O,         KC_QUOT
53   },
54   {
55     KC_LSFT,      KC_Z,         KC_X,         KC_C,
56     KC_V,         KC_B,         KC_K,         KC_M,
57     KC_COMM,      KC_DOT,       KC_SLSH,      KC_RSFT
58   },
59   {
60     FUNC,         KC_LGUI,      KC_LALT,      KC_LCTL,
61     SYMB,         KC_ENT,       KC_SPC,       MOVE,
62     KC_RCTL,      KC_RALT,      KC_RGUI,      FUNC
63   }
64 },
65
66 /* QWERTY
67  * ,-----------------------------------------------------------------------.
68  * |Tab  |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  -  |
69  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
70  * |Bksp |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |
71  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
72  * |Shift|  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |Shift|
73  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
74  * |Func |Super| Alt |Ctrl |Symb |Enter|Space|Move |Ctrl | Alt |Super|Func |
75  * `-----------------------------------------------------------------------'
76  */
77 [_QWERTY] = {
78   {
79     KC_TAB,       KC_Q,         KC_W,         KC_E,
80     KC_R,         KC_T,         KC_Y,         KC_U,
81     KC_I,         KC_O,         KC_P,         KC_MINS
82   },
83   {
84     KC_BSPC,      KC_A,         KC_S,         KC_D,
85     KC_F,         KC_G,         KC_H,         KC_J,
86     KC_K,         KC_L,         KC_SCLN,      KC_QUOT
87   },
88   {
89     KC_LSFT,      KC_Z,         KC_X,         KC_C,
90     KC_V,         KC_B,         KC_N,         KC_M,
91     KC_COMM,      KC_DOT,       KC_SLSH,      KC_RSFT
92   },
93   {
94     FUNC,         KC_LGUI,      KC_LALT,      KC_LCTL,
95     SYMB,         KC_ENT,       KC_SPC,       MOVE,
96     KC_RCTL,      KC_RALT,      KC_RGUI,      FUNC
97   }
98 },
99
100 /* SYMB
101  * ,-----------------------------------------------------------------------.
102  * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |     |
103  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
104  * | Del |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |     |
105  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
106  * |     |  ~  |  `  |  +  |  =  |  |  |  \  |  [  |  ]  |  {  |  }  |     |
107  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
108  * |     |     |     |     |     |     |     |     |     |     |     |     |
109  * `-----------------------------------------------------------------------'
110  */
111 [_SYMB] = {
112   {
113     KC_ESC,       KC_1,         KC_2,         KC_3,
114     KC_4,         KC_5,         KC_6,         KC_7,
115     KC_8,         KC_9,         KC_0,         _______
116   },
117   {
118     KC_DEL,       KC_EXLM,      KC_AT,        KC_HASH,
119     KC_DLR,       KC_PERC,      KC_CIRC,      KC_AMPR,
120     KC_ASTR,      KC_LPRN,      KC_RPRN,      _______
121   },
122   {
123     _______,      KC_TILD,      KC_GRV,       KC_PLUS,
124     KC_EQL,       KC_PIPE,      KC_BSLS,      KC_LBRC,
125     KC_RBRC,      KC_LCBR,      KC_RCBR,      _______
126   },
127   {
128     _______,      _______,      _______,      _______,
129     _______,      _______,      _______,      _______,
130     _______,      _______,      _______,      _______
131   }
132 },
133
134 /* MOVE
135  * ,-----------------------------------------------------------------------.
136  * |     |     |     |     |     |     |     |Home | Up  | End |     | Esc |
137  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
138  * |     |     |     |     |     |     |     |Left |Down |Right|Caps | Del |
139  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
140  * |     |     |     |     |     |     |     |PgDn |PgUp |     |     |     |
141  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
142  * |     |     |     |     |     |     |     |     |     |     |     |     |
143  * `-----------------------------------------------------------------------'
144  */
145 [_MOVE] = {
146   {
147     GC(KC_UP),    GAC(KC_1),    G(KC_6),      G(KC_5),
148     G(KC_4),      GAC(KC_UP),   GAC(KC_RGHT), KC_HOME,
149     KC_UP,        KC_END,       C(KC_SPC),    KC_ESC
150   },
151   {
152     GC(KC_DOWN),  GAC(KC_2),    G(KC_3),      G(KC_2),
153     G(KC_1),      G(KC_F),      G(KC_C),      KC_LEFT,
154     KC_DOWN,      KC_RGHT,      KC_CAPS,      KC_DEL
155   },
156   {
157     _______,      GAC(KC_3),    G(KC_9),      G(KC_8),
158     G(KC_7),      GAC(KC_LEFT), GAC(KC_DOWN), KC_PGDN,
159     KC_PGUP,      GC(KC_LEFT),  GC(KC_RGHT),  _______
160   },
161   {
162     _______,      _______,      _______,      _______,
163     _______,      _______,      _______,      _______,
164     _______,      _______,      _______,      _______
165   }
166 },
167
168 /* FUNC
169  * ,-----------------------------------------------------------------------.
170  * |Reset| F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 |VolUp|
171  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
172  * |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
173  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
174  * |     | F21 | F22 | F23 | F24 |     |     |     |     |Clmak|Qwrty|     |
175  * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
176  * |     |     |     |     |Prev |Mute |Play |Next |     |     |     |     |
177  * `-----------------------------------------------------------------------'
178  */
179 [_FUNC] = {
180   {
181     RESET,        KC_F1,        KC_F2,        KC_F3,
182     KC_F4,        KC_F5,        KC_F6,        KC_F7,
183     KC_F8,        KC_F9,        KC_F10,       KC_VOLU
184   },
185   {
186     KC_POWER,     KC_F11,       KC_F12,       KC_F13,
187     KC_F14,       KC_F15,       KC_F16,       KC_F17,
188     KC_F18,       KC_F19,       KC_F20,       KC_VOLD
189   },
190   {
191     _______,      KC_F21,       KC_F22,       KC_F23,
192     KC_F24,       XXXXXXX,      XXXXXXX,      XXXXXXX,
193     XXXXXXX,      COLEMAK,      QWERTY,       _______
194   },
195   {
196     _______,      _______,      _______,      _______,
197     KC_MPRV,      KC_MUTE,      KC_MPLY,      KC_MNXT,
198     _______,      _______,      _______,      _______
199   }
200 }
201
202 };
203
204 #ifdef AUDIO_ENABLE
205   float colemak_song[][2] = SONG(COLEMAK_SOUND);
206   float qwerty_song[][2] = SONG(QWERTY_SOUND);
207 #endif
208
209 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
210   switch (keycode) {
211     case COLEMAK:
212       if (record->event.pressed) {
213         #ifdef AUDIO_ENABLE
214           stop_all_notes();
215           PLAY_SONG(colemak_song);
216         #endif
217         set_single_persistent_default_layer(_COLEMAK);
218       }
219       return false;
220       break;
221     case QWERTY:
222       if (record->event.pressed) {
223         #ifdef AUDIO_ENABLE
224           stop_all_notes();
225           PLAY_SONG(qwerty_song);
226         #endif
227         set_single_persistent_default_layer(_QWERTY);
228       }
229       return false;
230       break;
231     case SYMB:
232       if (record->event.pressed) {
233         layer_on(_SYMB);
234       } else {
235         layer_off(_SYMB);
236       }
237       return false;
238       break;
239     case MOVE:
240       if (record->event.pressed) {
241         layer_on(_MOVE);
242       } else {
243         layer_off(_MOVE);
244       }
245       return false;
246       break;
247     case FUNC:
248       if (record->event.pressed) {
249         layer_on(_FUNC);
250       } else {
251         layer_off(_FUNC);
252       }
253       return false;
254       break;
255   }
256   return true;
257 }