aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/iris/keymaps/fabian/config.h39
-rw-r--r--keyboards/iris/keymaps/fabian/keymap.c180
-rw-r--r--keyboards/planck/keymaps/fabian/config.h12
-rw-r--r--keyboards/planck/keymaps/fabian/keymap.c229
-rw-r--r--keyboards/planck/keymaps/fabian/rules.mk1
5 files changed, 376 insertions, 85 deletions
diff --git a/keyboards/iris/keymaps/fabian/config.h b/keyboards/iris/keymaps/fabian/config.h
new file mode 100644
index 000000000..faae942a8
--- /dev/null
+++ b/keyboards/iris/keymaps/fabian/config.h
@@ -0,0 +1,39 @@
1/*
2Copyright 2017 Danny Nguyen <danny@keeb.io>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20// Add layout to the product identifier
21#undef PRODUCT
22#define PRODUCT Iris Keyboard (fabian)
23
24/* Use I2C or Serial, not both */
25// #define USE_SERIAL
26#define USE_I2C
27
28/* Select hand configuration */
29#define MASTER_LEFT
30// #define MASTER_RIGHT
31// #define EE_HANDS
32
33// RGB configuration
34#undef RGBLED_NUM
35#define RGBLIGHT_ANIMATIONS
36#define RGBLED_NUM 12
37#define RGBLIGHT_HUE_STEP 8
38#define RGBLIGHT_SAT_STEP 8
39#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/iris/keymaps/fabian/keymap.c b/keyboards/iris/keymaps/fabian/keymap.c
new file mode 100644
index 000000000..383bacfa4
--- /dev/null
+++ b/keyboards/iris/keymaps/fabian/keymap.c
@@ -0,0 +1,180 @@
1#include QMK_KEYBOARD_H
2
3extern keymap_config_t keymap_config;
4
5enum custom_layers {
6 _COLEMAK,
7 _QWERTY,
8 _LOWER,
9 _RAISE,
10 _MOUSECURSOR,
11 _ADJUST,
12};
13
14enum custom_keycodes {
15 COLEMAK = SAFE_RANGE,
16 QWERTY,
17 LOWER,
18 RAISE,
19 MOUSECURSOR,
20 ADJUST,
21 DYNAMIC_MACRO_RANGE,
22};
23
24#include "dynamic_macro.h"
25
26#define KC_ KC_TRNS
27#define _______ KC_TRNS
28
29#define KC_COLE COLEMAK
30#define KC_LOWR LOWER
31#define KC_QWER QWERTY
32#define KC_RASE RAISE
33#define KC_RECB DYN_REC_START1
34#define KC_RECE DYN_REC_STOP
35#define KC_RECP DYN_MACRO_PLAY1
36#define KC_RSET RESET
37
38#define KC_CTLE CTL_T(KC_ESC) // Tap for Escape, hold for Control
39#define KC_HTAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
40#define KC_SBSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
41#define KC_SENT KC_SFTENT // Tap for Enter, hold for Shift
42#define KC_TGMC TG(_MOUSECURSOR) // Toggle MOUSECURSOR layer
43#define KC_SPMC LT(_MOUSECURSOR, KC_SPC) // Tap for Space, hold for MOUSECURSOR layer
44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47 [_QWERTY] = LAYOUT_kc(
48 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
49 MEH , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,TGMC,
50 //|----+----+----+----+----+----| |----+----+----+----+----+----|
51 HTAB, Q , W , E , R , T , Y , U , I , O , P ,BSPC,
52 //|----+----+----+----+----+----| |----+----+----+----+----+----|
53 CTLE, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
54 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
55 SBSP, Z , X , C , V , B ,LALT, RALT, N , M ,COMM,DOT ,SLSH,SENT,
56 //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
57 LGUI,LOWR,SPMC, HTAB,RASE,RGUI
58 // `----+----+----' `----+----+----'
59 ),
60
61 [_COLEMAK] = LAYOUT_kc(
62 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
63 MEH , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,TGMC,
64 //|----+----+----+----+----+----| |----+----+----+----+----+----|
65 HTAB, Q , W , F , P , G , J , L , U , Y ,SCLN,BSPC,
66 //|----+----+----+----+----+----| |----+----+----+----+----+----|
67 CTLE, A , R , S , T , D , H , N , E , I , O ,QUOT,
68 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
69 SBSP, Z , X , C , V , B ,LALT, RALT, K , M ,COMM,DOT ,SLSH,SENT,
70 //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
71 LGUI,LOWR,SPMC, HTAB,RASE,RGUI
72 // `----+----+----' `----+----+----'
73 ),
74
75 [_LOWER] = LAYOUT_kc(
76 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
77 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 , ,
78 //|----+----+----+----+----+----| |----+----+----+----+----+----|
79 TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
80 //|----+----+----+----+----+----| |----+----+----+----+----+----|
81 GRV , F1 , F2 , F3 , F4 , F5 , F6 ,UNDS,PLUS,LCBR,RCBR,PIPE,
82 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
83 , F7 , F8 , F9 ,F10 ,F11 , , ,F12 ,MS_L,MS_D,MS_U,MS_R,BTN1,
84 //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
85 , , , , ,
86 // `----+----+----' `----+----+----'
87 ),
88
89 [_RAISE] = LAYOUT_kc(
90 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
91 , , , , , , , , , , , ,
92 //|----+----+----+----+----+----| |----+----+----+----+----+----|
93 TILD, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
94 //|----+----+----+----+----+----| |----+----+----+----+----+----|
95 GRV , F1 , F2 , F3 , F4 , F5 , F6 ,MINS,EQL ,LBRC,RBRC,BSLS,
96 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
97 , F7 , F8 , F9 ,F10 ,F11 , , ,F12 ,LEFT,DOWN, UP ,RGHT,BTN2,
98 //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
99 , , , , ,
100 // `----+----+----' `----+----+----'
101 ),
102
103 [_MOUSECURSOR] = LAYOUT_kc(
104 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
105 , , , , , , , , , , , ,
106 //|----+----+----+----+----+----| |----+----+----+----+----+----|
107 , , , UP , , , WH_D,WH_R,MS_U,ACL0,ACL1,ACL2,
108 //|----+----+----+----+----+----| |----+----+----+----+----+----|
109 , ,LEFT,DOWN,RGHT, , WH_L,MS_L,MS_D,MS_R,BTN1,BTN2,
110 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
111 , , , , , , , ,WH_U,LEFT,DOWN, UP ,RGHT,BTN3,
112 //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
113 , , , , ,
114 // `----+----+----' `----+----+----'
115 ),
116
117 [_ADJUST] = LAYOUT_kc(
118 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
119 , , , , , , , , , , , ,
120 //|----+----+----+----+----+----| |----+----+----+----+----+----|
121 ,RSET, , , , , , , , ,RSET, ,
122 //|----+----+----+----+----+----| |----+----+----+----+----+----|
123 , , , , , , ,QWER,COLE, , , ,
124 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
125 , , , , , , , , , ,RECB,RECE,RECP,CAPS,
126 //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
127 , , , , ,
128 // `----+----+----' `----+----+----'
129 )
130};
131
132bool process_record_user(uint16_t keycode, keyrecord_t *record) {
133 if (!process_record_dynamic_macro(keycode, record)) {
134 return false;
135 }
136
137 switch (keycode) {
138 case COLEMAK:
139 if (record->event.pressed) {
140 set_single_persistent_default_layer(_COLEMAK);
141 }
142 return false;
143 break;
144 case QWERTY:
145 if (record->event.pressed) {
146 set_single_persistent_default_layer(_QWERTY);
147 }
148 return false;
149 break;
150 case LOWER:
151 if (record->event.pressed) {
152 layer_on(_LOWER);
153 update_tri_layer(_LOWER, _RAISE, _ADJUST);
154 } else {
155 layer_off(_LOWER);
156 update_tri_layer(_LOWER, _RAISE, _ADJUST);
157 }
158 return false;
159 break;
160 case RAISE:
161 if (record->event.pressed) {
162 layer_on(_RAISE);
163 update_tri_layer(_LOWER, _RAISE, _ADJUST);
164 } else {
165 layer_off(_RAISE);
166 update_tri_layer(_LOWER, _RAISE, _ADJUST);
167 }
168 return false;
169 break;
170 case ADJUST:
171 if (record->event.pressed) {
172 layer_on(_ADJUST);
173 } else {
174 layer_off(_ADJUST);
175 }
176 return false;
177 break;
178 }
179 return true;
180 }
diff --git a/keyboards/planck/keymaps/fabian/config.h b/keyboards/planck/keymaps/fabian/config.h
index b406e2fed..e8c13caac 100644
--- a/keyboards/planck/keymaps/fabian/config.h
+++ b/keyboards/planck/keymaps/fabian/config.h
@@ -1,7 +1,4 @@
1#ifndef CONFIG_USER_H 1#pragma once
2#define CONFIG_USER_H
3
4#include "../../config.h"
5 2
6#ifdef AUDIO_ENABLE 3#ifdef AUDIO_ENABLE
7 #define STARTUP_SONG SONG(PLANCK_SOUND) 4 #define STARTUP_SONG SONG(PLANCK_SOUND)
@@ -13,8 +10,6 @@
13 } 10 }
14#endif 11#endif
15 12
16#define MUSIC_MASK (keycode != KC_NO)
17
18/* 13/*
19 * MIDI options 14 * MIDI options
20 */ 15 */
@@ -25,7 +20,7 @@
25/* enable basic MIDI features: 20/* enable basic MIDI features:
26 - MIDI notes can be sent when in Music mode is on 21 - MIDI notes can be sent when in Music mode is on
27*/ 22*/
28 23
29#define MIDI_BASIC 24#define MIDI_BASIC
30 25
31/* enable advanced MIDI features: 26/* enable advanced MIDI features:
@@ -39,4 +34,5 @@
39/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ 34/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
40//#define MIDI_TONE_KEYCODE_OCTAVES 2 35//#define MIDI_TONE_KEYCODE_OCTAVES 2
41 36
42#endif \ No newline at end of file 37// Most tactile encoders have detents every 4 stages
38#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/fabian/keymap.c b/keyboards/planck/keymaps/fabian/keymap.c
index 5756a9716..50bade14d 100644
--- a/keyboards/planck/keymaps/fabian/keymap.c
+++ b/keyboards/planck/keymaps/fabian/keymap.c
@@ -14,13 +14,12 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example" 17#include QMK_KEYBOARD_H
18#include "planck.h" 18#include "muse.h"
19#include "action_layer.h"
20 19
21extern keymap_config_t keymap_config; 20extern keymap_config_t keymap_config;
22 21
23enum custom_layers { 22enum planck_layers {
24 _QWERTY, 23 _QWERTY,
25 _COLEMAK, 24 _COLEMAK,
26 _DVORAK, 25 _DVORAK,
@@ -30,13 +29,11 @@ enum custom_layers {
30 _ADJUST 29 _ADJUST
31}; 30};
32 31
33enum custom_keycodes { 32enum planck_keycodes {
34 QWERTY = SAFE_RANGE, 33 QWERTY = SAFE_RANGE,
35 COLEMAK, 34 COLEMAK,
36 DVORAK, 35 DVORAK,
37 PLOVER, 36 PLOVER,
38 LOWER,
39 RAISE,
40 BACKLIT, 37 BACKLIT,
41 EXT_PLV 38 EXT_PLV
42}; 39};
@@ -52,6 +49,9 @@ enum custom_keycodes {
52#define SFT_SPC SFT_T(KC_SPC) // Tap for Space, hold for Shift 49#define SFT_SPC SFT_T(KC_SPC) // Tap for Space, hold for Shift
53#define UMLAUT RALT(KC_U) // Combine Alt and U 50#define UMLAUT RALT(KC_U) // Combine Alt and U
54 51
52#define LOWER MO(_LOWER)
53#define RAISE MO(_RAISE)
54
55const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 55const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
56 56
57/* Qwerty 57/* Qwerty
@@ -65,12 +65,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl | 65 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
66 * `-----------------------------------------------------------------------------------' 66 * `-----------------------------------------------------------------------------------'
67 */ 67 */
68[_QWERTY] = { 68[_QWERTY] = LAYOUT_planck_grid(
69 {HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 69 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
70 {CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, 70 CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
71 {SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, 71 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT,
72 {KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL} 72 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL
73}, 73),
74 74
75/* Colemak 75/* Colemak
76 * ,-----------------------------------------------------------------------------------. 76 * ,-----------------------------------------------------------------------------------.
@@ -83,12 +83,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
83 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl | 83 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
84 * `-----------------------------------------------------------------------------------' 84 * `-----------------------------------------------------------------------------------'
85 */ 85 */
86[_COLEMAK] = { 86[_COLEMAK] = LAYOUT_planck_grid(
87 {HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, 87 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
88 {CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, 88 CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
89 {SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, 89 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT,
90 {KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL} 90 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL
91}, 91),
92 92
93/* Dvorak 93/* Dvorak
94 * ,-----------------------------------------------------------------------------------. 94 * ,-----------------------------------------------------------------------------------.
@@ -101,12 +101,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
101 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl | 101 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
102 * `-----------------------------------------------------------------------------------' 102 * `-----------------------------------------------------------------------------------'
103 */ 103 */
104[_DVORAK] = { 104[_DVORAK] = LAYOUT_planck_grid(
105 {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, 105 HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
106 {CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, 106 CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
107 {SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT}, 107 SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT,
108 {KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL} 108 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL
109}, 109),
110 110
111/* Lower 111/* Lower
112 * ,-----------------------------------------------------------------------------------. 112 * ,-----------------------------------------------------------------------------------.
@@ -114,35 +114,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
114 * |------+------+------+------+------+-------------+------+------+------+------+------| 114 * |------+------+------+------+------+-------------+------+------+------+------+------|
115 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | 115 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
116 * |------+------+------+------+------+------|------+------+------+------+------+------| 116 * |------+------+------+------+------+------|------+------+------+------+------+------|
117 * | | F7 | F8 | F9 | F10 | F11 | F12 | MS L | MS D |MS U | MS R |MS Btn| 117 * | RGBM | F7 | F8 | F9 | F10 | F11 | F12 | MS L | MS D |MS U | MS R |MS Btn|
118 * |------+------+------+------+------+------+------+------+------+------+------+------| 118 * |------+------+------+------+------+------+------+------+------+------+------+------|
119 * | | | | | | | | | Next | Vol- | Vol+ | Play | 119 * | | | | | | | | | Next | Vol- | Vol+ | Play |
120 * `-----------------------------------------------------------------------------------' 120 * `-----------------------------------------------------------------------------------'
121 */ 121 */
122[_LOWER] = { 122[_LOWER] = LAYOUT_planck_grid(
123 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, 123 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
124 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, 124 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
125 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1}, 125 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1,
126 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} 126 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
127}, 127),
128 128
129/* Raise 129/* Raise
130 * ,-----------------------------------------------------------------------------------. 130 * ,-----------------------------------------------------------------------------------.
131 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | 131 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
132 * |------+------+------+------+------+-------------+------+------+------+------+------| 132 * |------+------+------+------+------+-------------+------+------+------+------+------|
133 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | } | 133 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
134 * |------+------+------+------+------+------|------+------+------+------+------+------| 134 * |------+------+------+------+------+------|------+------+------+------+------+------|
135 * | | F7 | F8 | F9 | F10 | F11 | F12 | Left | Down | Up | Rght |MS_BN2| 135 * | RGBM | F7 | F8 | F9 | F10 | F11 | F12 | Left | Down | Up | Rght |MS_BN2|
136 * |------+------+------+------+------+------+------+------+------+------+------+------| 136 * |------+------+------+------+------+------+------+------+------+------+------+------|
137 * | | | | | | | | | Next | Vol- | Vol+ | Play | 137 * | | | | | | | | | Next | Vol- | Vol+ | Play |
138 * `-----------------------------------------------------------------------------------' 138 * `-----------------------------------------------------------------------------------'
139 */ 139 */
140[_RAISE] = { 140[_RAISE] = LAYOUT_planck_grid(
141 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 141 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
142 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, 142 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
143 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BTN2}, 143 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BTN2,
144 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} 144 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
145}, 145),
146 146
147/* Plover layer (http://opensteno.org) 147/* Plover layer (http://opensteno.org)
148 * ,-----------------------------------------------------------------------------------. 148 * ,-----------------------------------------------------------------------------------.
@@ -156,31 +156,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
156 * `-----------------------------------------------------------------------------------' 156 * `-----------------------------------------------------------------------------------'
157 */ 157 */
158 158
159[_PLOVER] = { 159[_PLOVER] = LAYOUT_planck_grid(
160 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, 160 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1,
161 {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, 161 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
162 {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, 162 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
163 {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} 163 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
164}, 164),
165 165
166/* Adjust (Lower + Raise) 166/* Adjust (Lower + Raise)
167 * ,-----------------------------------------------------------------------------------. 167 * ,-----------------------------------------------------------------------------------.
168 * | | Reset| | | | | | | | | Reset| Del | 168 * | | Reset| | | | | | | | | | Del |
169 * |------+------+------+------+------+-------------+------+------+------+------+------| 169 * |------+------+------+------+------+-------------+------+------+------+------+------|
170 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | 170 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
171 * |------+------+------+------+------+------|------+------+------+------+------+------| 171 * |------+------+------+------+------+------|------+------+------+------+------+------|
172 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | 172 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
173 * |------+------+------+------+------+------+------+------+------+------+------+------| 173 * |------+------+------+------+------+------+------+------+------+------+------+------|
174 * | | | | | | | | | | | | | 174 * | | | | | | | | | | | |
175 * `-----------------------------------------------------------------------------------' 175 * `-----------------------------------------------------------------------------------'
176 */ 176 */
177[_ADJUST] = { 177[_ADJUST] = LAYOUT_planck_grid(
178 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL }, 178 _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
179 {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, 179 _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
180 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, 180 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
181 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 181 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
182} 182)
183
184 183
185}; 184};
186 185
@@ -189,10 +188,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
189 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); 188 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
190#endif 189#endif
191 190
191uint32_t layer_state_set_user(uint32_t state) {
192 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
193}
194
192bool process_record_user(uint16_t keycode, keyrecord_t *record) { 195bool process_record_user(uint16_t keycode, keyrecord_t *record) {
193 switch (keycode) { 196 switch (keycode) {
194 case QWERTY: 197 case QWERTY:
195 if (record->event.pressed) { 198 if (record->event.pressed) {
199 print("mode just switched to qwerty and this is a huge string\n");
196 set_single_persistent_default_layer(_QWERTY); 200 set_single_persistent_default_layer(_QWERTY);
197 } 201 }
198 return false; 202 return false;
@@ -209,34 +213,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
209 } 213 }
210 return false; 214 return false;
211 break; 215 break;
212 case LOWER:
213 if (record->event.pressed) {
214 layer_on(_LOWER);
215 update_tri_layer(_LOWER, _RAISE, _ADJUST);
216 } else {
217 layer_off(_LOWER);
218 update_tri_layer(_LOWER, _RAISE, _ADJUST);
219 }
220 return false;
221 break;
222 case RAISE:
223 if (record->event.pressed) {
224 layer_on(_RAISE);
225 update_tri_layer(_LOWER, _RAISE, _ADJUST);
226 } else {
227 layer_off(_RAISE);
228 update_tri_layer(_LOWER, _RAISE, _ADJUST);
229 }
230 return false;
231 break;
232 case BACKLIT: 216 case BACKLIT:
233 if (record->event.pressed) { 217 if (record->event.pressed) {
234 register_code(KC_RSFT); 218 register_code(KC_RSFT);
235 #ifdef BACKLIGHT_ENABLE 219 #ifdef BACKLIGHT_ENABLE
236 backlight_step(); 220 backlight_step();
237 #endif 221 #endif
222 #ifndef KEYBOARD_planck_rev6
223 PORTE &= ~(1<<6);
224 #endif
238 } else { 225 } else {
239 unregister_code(KC_RSFT); 226 unregister_code(KC_RSFT);
227 #ifndef KEYBOARD_planck_rev6
228 PORTE |= (1<<6);
229 #endif
240 } 230 }
241 return false; 231 return false;
242 break; 232 break;
@@ -244,8 +234,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
244 if (record->event.pressed) { 234 if (record->event.pressed) {
245 #ifdef AUDIO_ENABLE 235 #ifdef AUDIO_ENABLE
246 stop_all_notes(); 236 stop_all_notes();
247 PLAY_SONG(plover_song); 237 PLAY_SONG(plover_song);
248 #endif 238#endif
249 layer_off(_RAISE); 239 layer_off(_RAISE);
250 layer_off(_LOWER); 240 layer_off(_LOWER);
251 layer_off(_ADJUST); 241 layer_off(_ADJUST);
@@ -271,3 +261,88 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
271 } 261 }
272 return true; 262 return true;
273} 263}
264
265bool muse_mode = false;
266uint8_t last_muse_note = 0;
267uint16_t muse_counter = 0;
268uint8_t muse_offset = 70;
269uint16_t muse_tempo = 50;
270
271void encoder_update(bool clockwise) {
272 if (muse_mode) {
273 if (IS_LAYER_ON(_RAISE)) {
274 if (clockwise) {
275 muse_offset++;
276 } else {
277 muse_offset--;
278 }
279 } else {
280 if (clockwise) {
281 muse_tempo+=1;
282 } else {
283 muse_tempo-=1;
284 }
285 }
286 } else {
287 if (clockwise) {
288 register_code(KC_PGDN);
289 unregister_code(KC_PGDN);
290 } else {
291 register_code(KC_PGUP);
292 unregister_code(KC_PGUP);
293 }
294 }
295}
296
297void dip_update(uint8_t index, bool active) {
298 switch (index) {
299 case 0:
300 if (active) {
301 #ifdef AUDIO_ENABLE
302 PLAY_SONG(plover_song);
303 #endif
304 layer_on(_ADJUST);
305 } else {
306 #ifdef AUDIO_ENABLE
307 PLAY_SONG(plover_gb_song);
308 #endif
309 layer_off(_ADJUST);
310 }
311 break;
312 case 1:
313 if (active) {
314 muse_mode = true;
315 } else {
316 muse_mode = false;
317 #ifdef AUDIO_ENABLE
318 stop_all_notes();
319 #endif
320 }
321 }
322}
323
324void matrix_scan_user(void) {
325 #ifdef AUDIO_ENABLE
326 if (muse_mode) {
327 if (muse_counter == 0) {
328 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
329 if (muse_note != last_muse_note) {
330 stop_note(compute_freq_for_midi_note(last_muse_note));
331 play_note(compute_freq_for_midi_note(muse_note), 0xF);
332 last_muse_note = muse_note;
333 }
334 }
335 muse_counter = (muse_counter + 1) % muse_tempo;
336 }
337 #endif
338}
339
340bool music_mask_user(uint16_t keycode) {
341 switch (keycode) {
342 case RAISE:
343 case LOWER:
344 return false;
345 default:
346 return true;
347 }
348}
diff --git a/keyboards/planck/keymaps/fabian/rules.mk b/keyboards/planck/keymaps/fabian/rules.mk
new file mode 100644
index 000000000..dcf16bef3
--- /dev/null
+++ b/keyboards/planck/keymaps/fabian/rules.mk
@@ -0,0 +1 @@
SRC += muse.c