aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/planck/keymaps/kmontag42/config.h42
-rw-r--r--keyboards/planck/keymaps/kmontag42/keymap.c210
-rw-r--r--keyboards/planck/keymaps/kmontag42/readme.md10
-rw-r--r--keyboards/planck/keymaps/kmontag42/rules.mk5
-rw-r--r--keyboards/xd60/keymaps/kmontag42/keymap.c66
-rw-r--r--keyboards/xd60/keymaps/kmontag42/readme.md18
6 files changed, 351 insertions, 0 deletions
diff --git a/keyboards/planck/keymaps/kmontag42/config.h b/keyboards/planck/keymaps/kmontag42/config.h
new file mode 100644
index 000000000..b406e2fed
--- /dev/null
+++ b/keyboards/planck/keymaps/kmontag42/config.h
@@ -0,0 +1,42 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#ifdef AUDIO_ENABLE
7 #define STARTUP_SONG SONG(PLANCK_SOUND)
8 // #define STARTUP_SONG SONG(NO_SOUND)
9
10 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
11 SONG(COLEMAK_SOUND), \
12 SONG(DVORAK_SOUND) \
13 }
14#endif
15
16#define MUSIC_MASK (keycode != KC_NO)
17
18/*
19 * MIDI options
20 */
21
22/* Prevent use of disabled MIDI features in the keymap */
23//#define MIDI_ENABLE_STRICT 1
24
25/* enable basic MIDI features:
26 - MIDI notes can be sent when in Music mode is on
27*/
28
29#define MIDI_BASIC
30
31/* enable advanced MIDI features:
32 - MIDI notes can be added to the keymap
33 - Octave shift and transpose
34 - Virtual sustain, portamento, and modulation wheel
35 - etc.
36*/
37//#define MIDI_ADVANCED
38
39/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
40//#define MIDI_TONE_KEYCODE_OCTAVES 2
41
42#endif \ No newline at end of file
diff --git a/keyboards/planck/keymaps/kmontag42/keymap.c b/keyboards/planck/keymaps/kmontag42/keymap.c
new file mode 100644
index 000000000..4b74e1384
--- /dev/null
+++ b/keyboards/planck/keymaps/kmontag42/keymap.c
@@ -0,0 +1,210 @@
1/* Copyright 2015-2017 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "planck.h"
18#include "action_layer.h"
19
20extern keymap_config_t keymap_config;
21
22enum planck_layers {
23 _QWERTY,
24 _LOWER,
25 _RAISE,
26 _PLOVER,
27 _ADJUST
28};
29
30enum planck_keycodes {
31 QWERTY = SAFE_RANGE,
32 PLOVER,
33 LOWER,
34 RAISE,
35 BACKLIT,
36 EXT_PLV
37};
38
39const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
40
41/* Qwerty
42 * ,--------------------------------------------------------------------------------------.
43 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
44 * |---------+------+------+------+------+-------------+------+------+------+------+------|
45 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
46 * |---------+------+------+------+------+------|------+------+------+------+------+------|
47 * | Shift/( | Z | X | C | V | B | N | M | , | . | / |Enter |
48 * |---------+------+------+------+------+------+------+------+------+------+------+------|
49 * | GUI | Ctrl | Alt | ) |Lower | Space |Raise | Left | Down | Up |Right |
50 * `--------------------------------------------------------------------------------------'
51 */
52[_QWERTY] = {
53 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
54 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
55 {KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
56 {KC_LGUI, KC_LCTL, KC_LALT, KC_RPRN, LOWER, KC_LEAD, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
57},
58
59/* Lower
60 * ,-----------------------------------------------------------------------------------.
61 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
62 * |------+------+------+------+------+-------------+------+------+------+------+------|
63 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
64 * |------+------+------+------+------+------|------+------+------+------+------+------|
65 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
66 * |------+------+------+------+------+------+------+------+------+------+------+------|
67 * | | | | | | | | Next | Vol- | Vol+ | Play |
68 * `-----------------------------------------------------------------------------------'
69 */
70[_LOWER] = {
71 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
72 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
73 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______},
74 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
75},
76
77/* Raise
78 * ,-----------------------------------------------------------------------------------.
79 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
80 * |------+------+------+------+------+-------------+------+------+------+------+------|
81 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
82 * |------+------+------+------+------+------|------+------+------+------+------+------|
83 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
84 * |------+------+------+------+------+------+------+------+------+------+------+------|
85 * | | | | | | | | Next | Vol- | Vol+ | Play |
86 * `-----------------------------------------------------------------------------------'
87 */
88[_RAISE] = {
89 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
90 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
91 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______},
92 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
93},
94
95/* Plover layer (http://opensteno.org)
96 * ,-----------------------------------------------------------------------------------.
97 * | # | # | # | # | # | # | # | # | # | # | # | # |
98 * |------+------+------+------+------+-------------+------+------+------+------+------|
99 * | | S | T | P | H | * | * | F | P | L | T | D |
100 * |------+------+------+------+------+------|------+------+------+------+------+------|
101 * | | S | K | W | R | * | * | R | B | G | S | Z |
102 * |------+------+------+------+------+------+------+------+------+------+------+------|
103 * | Exit | | | A | O | | E | U | | | |
104 * `-----------------------------------------------------------------------------------'
105 */
106
107[_PLOVER] = {
108 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
109 {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
110 {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
111 {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
112},
113
114/* Adjust (Lower + Raise)
115 * ,-----------------------------------------------------------------------------------.
116 * | | Reset| | | | | | | | | | Del |
117 * |------+------+------+------+------+-------------+------+------+------+------+------|
118 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
119 * |------+------+------+------+------+------|------+------+------+------+------+------|
120 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
121 * |------+------+------+------+------+------+------+------+------+------+------+------|
122 * | | | | | | | | | | | |
123 * `-----------------------------------------------------------------------------------'
124 */
125[_ADJUST] = {
126 {_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL },
127 {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, PLOVER, _______},
128 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
129 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
130}
131
132
133};
134
135#ifdef AUDIO_ENABLE
136 float plover_song[][2] = SONG(PLOVER_SOUND);
137 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
138#endif
139
140bool process_record_user(uint16_t keycode, keyrecord_t *record) {
141 switch (keycode) {
142 case QWERTY:
143 if (record->event.pressed) {
144 print("mode just switched to qwerty and this is a huge string\n");
145 set_single_persistent_default_layer(_QWERTY);
146 }
147 return false;
148 break;
149 case LOWER:
150 if (record->event.pressed) {
151 layer_on(_LOWER);
152 update_tri_layer(_LOWER, _RAISE, _ADJUST);
153 } else {
154 layer_off(_LOWER);
155 update_tri_layer(_LOWER, _RAISE, _ADJUST);
156 }
157 return false;
158 break;
159 case RAISE:
160 if (record->event.pressed) {
161 layer_on(_RAISE);
162 update_tri_layer(_LOWER, _RAISE, _ADJUST);
163 } else {
164 layer_off(_RAISE);
165 update_tri_layer(_LOWER, _RAISE, _ADJUST);
166 }
167 return false;
168 break;
169 case BACKLIT:
170 if (record->event.pressed) {
171 register_code(KC_RSFT);
172 #ifdef BACKLIGHT_ENABLE
173 backlight_step();
174 #endif
175 } else {
176 unregister_code(KC_RSFT);
177 }
178 return false;
179 break;
180 case PLOVER:
181 if (record->event.pressed) {
182 #ifdef AUDIO_ENABLE
183 stop_all_notes();
184 PLAY_SONG(plover_song);
185 #endif
186 layer_off(_RAISE);
187 layer_off(_LOWER);
188 layer_off(_ADJUST);
189 layer_on(_PLOVER);
190 if (!eeconfig_is_enabled()) {
191 eeconfig_init();
192 }
193 keymap_config.raw = eeconfig_read_keymap();
194 keymap_config.nkro = 1;
195 eeconfig_update_keymap(keymap_config.raw);
196 }
197 return false;
198 break;
199 case EXT_PLV:
200 if (record->event.pressed) {
201 #ifdef AUDIO_ENABLE
202 PLAY_SONG(plover_gb_song);
203 #endif
204 layer_off(_PLOVER);
205 }
206 return false;
207 break;
208 }
209 return true;
210}
diff --git a/keyboards/planck/keymaps/kmontag42/readme.md b/keyboards/planck/keymaps/kmontag42/readme.md
new file mode 100644
index 000000000..61bcef4be
--- /dev/null
+++ b/keyboards/planck/keymaps/kmontag42/readme.md
@@ -0,0 +1,10 @@
1# KMontag42's Planck Layout
2
3[![Built with Spacemacs](https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg)](http://spacemacs.org)
4
5## Additional Notes
6This layout is WIP as I continute to tinker with my Planck, expect more updates here soon.
7
8## Notable features
9* Split spacebar used leader key
10* Space cadet style parens
diff --git a/keyboards/planck/keymaps/kmontag42/rules.mk b/keyboards/planck/keymaps/kmontag42/rules.mk
new file mode 100644
index 000000000..b9f73934a
--- /dev/null
+++ b/keyboards/planck/keymaps/kmontag42/rules.mk
@@ -0,0 +1,5 @@
1UNICODE_ENABLE = yes
2
3ifndef QUANTUM_DIR
4 include ../../../../Makefile
5endif
diff --git a/keyboards/xd60/keymaps/kmontag42/keymap.c b/keyboards/xd60/keymaps/kmontag42/keymap.c
new file mode 100644
index 000000000..4831a548d
--- /dev/null
+++ b/keyboards/xd60/keymaps/kmontag42/keymap.c
@@ -0,0 +1,66 @@
1#include "xd60.h"
2#include "action_layer.h"
3#include "backlight.h"
4
5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6
7 // 0: Base Layer
8 KEYMAP(
9 KC_LEAD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, \
10 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
11 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_DOT, KC_ENT, \
12 KC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSPC, KC_RGUI, \
13 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT),
14
15 // 1: Function Layer
16 KEYMAP(
17 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, \
18 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
19 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
20 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
21 KC_NO, KC_NO, KC_NO, KC_NO, F(0), KC_NO, KC_NO, KC_NO, KC_NO),
22
23};
24
25// Custom Actions
26const uint16_t PROGMEM fn_actions[] = {
27 [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
28};
29
30// Macros
31const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
32
33 // MACRODOWN only works in this function
34 switch(id) {
35 case 0:
36 if (record->event.pressed) {
37 register_code(KC_RSFT);
38 rgblight_step();
39 }
40 else { unregister_code(KC_RSFT); }
41 break;
42 }
43
44 return MACRO_NONE;
45};
46
47// Loop
48void matrix_scan_user(void) {
49 static uint8_t old_layer = 255;
50 uint8_t new_layer = biton32(layer_state);
51
52 if (old_layer != new_layer) {
53 switch (new_layer) {
54 case 0:
55 rgblight_mode(1);
56 rgblight_setrgb(0xFF, 0xFF, 0xFF);
57 break;
58 case 1:
59 rgblight_mode(18);
60 rgblight_setrgb(0x00, 0xFF, 0xFF);
61 break;
62 }
63
64 old_layer = new_layer;
65 }
66};
diff --git a/keyboards/xd60/keymaps/kmontag42/readme.md b/keyboards/xd60/keymaps/kmontag42/readme.md
new file mode 100644
index 000000000..946ae5606
--- /dev/null
+++ b/keyboards/xd60/keymaps/kmontag42/readme.md
@@ -0,0 +1,18 @@
1# KMontag42's XD60/XD64 Keymap and Layout
2
3[![Built with Spacemacs](https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg)](http://spacemacs.org)
4
5## Additional Notes
6This layout is WIP for me as I use my shiny new keyboard more and more. I will work to keep this updated.
7
8## Notable features
9* Arrows only on the bottom row
10** i prefer vim style movement, so this works well for me
11* Layer based RGB lighting
12** i use rgb lights to determine what layer is currently active
13* Maximum key usage
14** unless someone tells me otherwise, I believe this is the maximum number of keys the board can support without PCB modding
15* I use emacs, which could account for some of the oddities in my layout and macros
16
17## Build
18To build the default keymap, simply run `make xd60-kmontag42`.