aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/melody96/keymaps/dvz/config.h34
-rw-r--r--keyboards/melody96/keymaps/dvz/keymap.c161
-rw-r--r--keyboards/melody96/keymaps/dvz/readme.md3
-rw-r--r--keyboards/melody96/keymaps/dvz/rules.mk5
-rw-r--r--keyboards/planck/keymaps/dvz/config.h73
-rw-r--r--keyboards/planck/keymaps/dvz/keymap.c280
-rw-r--r--keyboards/planck/keymaps/dvz/readme.md11
-rw-r--r--keyboards/planck/keymaps/dvz/rules.mk5
8 files changed, 572 insertions, 0 deletions
diff --git a/keyboards/melody96/keymaps/dvz/config.h b/keyboards/melody96/keymaps/dvz/config.h
new file mode 100644
index 000000000..be786464b
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/config.h
@@ -0,0 +1,34 @@
1 /* Copyright 2021 Milan Düwel
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#pragma once
18
19#define COMBO_COUNT 4
20#define COMBO_TERM 100
21
22//#define UNICODE_SELECTED_MODES UC_WINC
23
24#define RGBLIGHT_LAYERS
25#define RGBLIGHT_LAYER_BLINK
26
27#undef RGBLIGHT_ANIMATIONS
28#define RGBLIGHT_EFFECT_ALTERNATING
29#define RGBLIGHT_EFFECT_BREATHING
30#define RGBLIGHT_EFFECT_CHRISTMAS
31#define RGBLIGHT_EFFECT_KNIGHT
32#define RGBLIGHT_EFFECT_SNAKE
33#define RGBLIGHT_EFFECT_TWINKLE
34
diff --git a/keyboards/melody96/keymaps/dvz/keymap.c b/keyboards/melody96/keymaps/dvz/keymap.c
new file mode 100644
index 000000000..cea3970e1
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/keymap.c
@@ -0,0 +1,161 @@
1 /* Copyright 2021 Milan Düwel
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 QMK_KEYBOARD_H
18
19 /* This keymap is designed for use with a German keyboard layout.
20 * It is essentially the same as the default via keymap but adds combo functionality to type umlauts as well as lighting layers for various actions.
21 * Toggling the combo feature also disables KC_LGUI so both can be turned off for gaming. If you want to get rid of it without reflashing new firmware, use KC_RGUI instead.
22 * Layers 2 and 3 are currently unused but are configurable within via.
23 */
24
25enum combos {
26 UML_AE,
27 UML_OE,
28 UML_UE,
29 UML_SZ
30};
31
32const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
33const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
34const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
35const uint16_t PROGMEM sz_combo[] = {KC_S, KC_Y, COMBO_END};
36
37combo_t key_combos[COMBO_COUNT] = {
38 [UML_AE] = COMBO(ae_combo, KC_QUOT),
39 [UML_OE] = COMBO(oe_combo, KC_SCLN),
40 [UML_UE] = COMBO(ue_combo, KC_LBRC),
41 [UML_SZ] = COMBO(sz_combo, KC_MINS)
42};
43
44const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45
46 [0] = LAYOUT(
47 KC_ESC, 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_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
48 KC_GRV, 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_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
49 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, KC_P7, KC_P8, KC_P9, KC_PMNS,
50 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
51 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
52 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
53
54 [1] = LAYOUT(
55 RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
56 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
57 KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
58 BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
59 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMB_TOG, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_MUTE),
61
62 [2] = LAYOUT(
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
65 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
66 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
67 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
68 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
69
70 [3] = LAYOUT(
71 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
74 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
75 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
77};
78
79/* The lighting layers feature a caps indicator as well as layer blinks for mute and the function layer (blink only to allow unhindered adjustment of the RGB backlight settings).
80 Sadly these colours can not be customized within VIA.
81*/
82
83const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
84 {0, 1, HSV_RED},
85 {15, 17, HSV_RED}
86);
87
88const rgblight_segment_t PROGMEM my_function_layer[] = RGBLIGHT_LAYER_SEGMENTS(
89 {10, 12, HSV_YELLOW}
90);
91
92const rgblight_segment_t PROGMEM my_f2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
93 {0, 17, HSV_CYAN}
94);
95
96const rgblight_segment_t PROGMEM my_f3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
97 {0, 17, HSV_PURPLE}
98);
99
100const rgblight_segment_t PROGMEM my_flash_layer[] = RGBLIGHT_LAYER_SEGMENTS(
101 {0, 17, HSV_RED}
102);
103
104// Now define the array of layers. Later layers take precedence
105const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
106 my_capslock_layer,
107 my_function_layer, // Overrides caps lock layer
108 my_f2_layer,
109 my_f3_layer,
110 my_flash_layer
111);
112
113void keyboard_post_init_user(void) {
114 // Enable the LED layers
115 rgblight_layers = my_rgb_layers;
116};
117
118bool led_update_user(led_t led_state) {
119 rgblight_set_layer_state(0, led_state.caps_lock);
120 return true;
121};
122
123layer_state_t layer_state_set_user(layer_state_t state) {
124 //rgblight_set_layer_state(1, layer_state_cmp(state, 1));
125 rgblight_set_layer_state(2, layer_state_cmp(state, 2));
126 rgblight_set_layer_state(3, layer_state_cmp(state, 3));
127 return state;
128};
129
130// Note we user post_process_record_user because we want the state
131// after the flag has been flipped...
132void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
133 switch (keycode) {
134 case KC_CAPS:
135 case KC_MUTE:
136 case CMB_TOG:
137 if (record->event.pressed) {
138 rgblight_blink_layer(4, 250);
139 }
140 break;
141 case MO(1):
142 if (record->event.pressed) {
143 rgblight_blink_layer(1, 250);
144 }
145 break;
146 }
147};
148
149bool process_record_user(uint16_t keycode, keyrecord_t *record) {
150 switch (keycode) {
151 case KC_LGUI: //use combo toggle to disable the win key while gaming
152 if (record->event.pressed) {
153 if (is_combo_enabled()==false) {
154 return false;
155 }
156 }
157 return true; // Let QMK send the enter press/release events
158 default:
159 return true; // Process all other keycodes normally
160 }
161};
diff --git a/keyboards/melody96/keymaps/dvz/readme.md b/keyboards/melody96/keymaps/dvz/readme.md
new file mode 100644
index 000000000..d82055244
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/readme.md
@@ -0,0 +1,3 @@
1# DvZ's VIA compatible keymap with rolling umlauts for german typists
2
3Added by: [devilzmods](https://github.com/devilzmods)
diff --git a/keyboards/melody96/keymaps/dvz/rules.mk b/keyboards/melody96/keymaps/dvz/rules.mk
new file mode 100644
index 000000000..a1e85f13f
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/rules.mk
@@ -0,0 +1,5 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes # reduce firmware size
3COMBO_ENABLE = yes
4#UNICODE_ENABLE = yes
5BOOTLOADER = caterina
diff --git a/keyboards/planck/keymaps/dvz/config.h b/keyboards/planck/keymaps/dvz/config.h
new file mode 100644
index 000000000..5535c3ca1
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/config.h
@@ -0,0 +1,73 @@
1 /* Copyright 2021 Milan Düwel
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#pragma once
18
19#ifdef AUDIO_ENABLE
20 #define STARTUP_SONG SONG(PLANCK_SOUND)
21 // #define STARTUP_SONG SONG(NO_SOUND)
22
23 /*#define DEFAULT_LAYER_SONGS {
24 SONG(QWERTY_SOUND), \
25 SONG(COLEMAK_SOUND), \
26 SONG(DVORAK_SOUND) \
27 }*/
28
29 #define PING_SOUND Q__NOTE(_A6), WD_NOTE(_E7)
30#endif
31
32/*
33 * MIDI options
34 */
35
36/* enable basic MIDI features:
37 - MIDI notes can be sent when in Music mode is on
38*/
39
40//#define MIDI_BASIC
41
42/* enable advanced MIDI features:
43 - MIDI notes can be added to the keymap
44 - Octave shift and transpose
45 - Virtual sustain, portamento, and modulation wheel
46 - etc.
47*/
48//#define MIDI_ADVANCED
49
50// Most tactile encoders have detents every 4 stages
51#define ENCODER_RESOLUTION 4
52
53#define COMBO_COUNT 4
54
55#ifdef AUDIO_ENABLE
56 #define DAC_SAMPLE_MAX 65535/2
57#endif
58
59#define RGBLIGHT_LAYERS
60#define RGBLIGHT_SAT_STEP 5
61#define RGBLIGHT_VAL_STEP 8
62#define RGBLIGHT_SLEEP
63#define RGBLED_NUM 9
64
65#undef RGBLIGHT_ANIMATIONS
66#define RGBLIGHT_EFFECT_BREATHING
67#define RGBLIGHT_EFFECT_TWINKLE
68#define RGBLIGHT_EFFECT_KNIGHT
69#define RGBLIGHT_EFFECT_STATIC_GRADIENT
70#define RGBLIGHT_EFFECT_SNAKE
71#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
72
73#define RGBLIGHT_RAINBOW_SWIRL_RANGE 127
diff --git a/keyboards/planck/keymaps/dvz/keymap.c b/keyboards/planck/keymaps/dvz/keymap.c
new file mode 100644
index 000000000..f1d213b42
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/keymap.c
@@ -0,0 +1,280 @@
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 QMK_KEYBOARD_H
18#include "muse.h"
19#include "keymap_german.h"
20
21enum combos {
22 AE,
23 OE,
24 UE,
25 SZ
26};
27
28const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
29const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
30const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
31const uint16_t PROGMEM sz_combo[] = {KC_S, DE_Z, COMBO_END};
32
33combo_t key_combos[COMBO_COUNT] = {
34 [AE] = COMBO(ae_combo, DE_AE),
35 [OE] = COMBO(oe_combo, DE_OE),
36 [UE] = COMBO(ue_combo, DE_UE),
37 [SZ] = COMBO(sz_combo, DE_SS)
38};
39
40enum planck_layers {
41 _QWERTZ,
42 _NUMPD,
43 _LOWER,
44 _RAISE,
45 _ADJUST
46};
47
48enum planck_keycodes {
49 QWERTZ = SAFE_RANGE,
50 NUMPD,
51 SCROLL
52};
53
54bool scroll = false;
55
56#ifdef AUDIO_ENABLE
57 float ping_song[][2] = SONG(PING_SOUND);
58#endif
59
60#define LOWER MO(_LOWER)
61#define RAISE MO(_RAISE)
62
63const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
64
65/* QWERTZ
66 * ,-----------------------------------------------------------------------------------.
67 * | RtEnc| Q | W | E | R | T | Z | U | I | O | P | Bksp |
68 * |------+------+------+------+------+------+------+------+------+------+------+------|
69 * | Esc | A | S | D | F | G | H | J | K | L | + | - |
70 * |------+------+------+------+------+------+------+------+------+------+------+------|
71 * | SfTab| Y | X | C | V | B | N | M | , | . | Up |SfEnt |
72 * |------+------+------+------+------+------+------+------+------+------+------+------|
73 * | Ctrl | GUI | NumPd| Alt | Num | Space | Sym | Del | Left | Down |Right |
74 * `-----------------------------------------------------------------------------------'
75 */
76[_QWERTZ] = LAYOUT_planck_grid(
77 SCROLL, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
78 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, DE_MINS,
79LSFT_T(KC_TAB),DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SFTENT,
80 KC_LCTL, KC_LGUI, NUMPD, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
81),
82
83/* Numpad
84 * ,-----------------------------------------------------------------------------------.
85 * | | 7 | 8 | 9 | / | | | | | | | |
86 * |------+------+------+------+------+------+------+------+------+------+------+------|
87 * | NLCK | 4 | 5 | 6 | - | | | | | | | |
88 * |------+------+------+------+------+------+------+------+------+------+------+------|
89 * | | 1 | 2 | 3 | + | | | | | | | |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | | . | 0 | , |NumOFF| Enter |Raise | | | | |
92 * `-----------------------------------------------------------------------------------'
93 */
94[_NUMPD] = LAYOUT_planck_grid(
95 SFT_T(KC_PASTE),KC_P7, KC_P8, KC_P9, DE_SLSH, _______, _______, _______, _______, _______, _______, _______,
96 KC_NLCK, KC_P4, KC_P5, KC_P6, DE_MINS, _______, _______, _______, _______, _______, _______, _______,
97 _______, KC_P1, KC_P2, KC_P3, DE_PLUS, _______, _______, _______, _______, _______, _______, _______,
98 CTL_T(KC_COPY),KC_DOT, KC_P0, KC_COMM, NUMPD, KC_ENT, KC_ENT, _______, _______, _______, _______, _______
99),
100
101/* Lower
102 * ,-----------------------------------------------------------------------------------.
103 * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | ^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | | |
106 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | | F10 | F11 | F12 | F13 | F14 | F15 | | | |Pg Up | |
108 * |------+------+------+------+------+------+------+------+------+------+------+------|
109 * | | | | | | | | | Home |Pg Dn | End |
110 * `-----------------------------------------------------------------------------------'
111 */
112[_LOWER] = LAYOUT_planck_grid(
113 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
114 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, _______, _______,
115 _______, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_PGUP, _______,
116 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
117),
118
119/* Raise
120 * ,-----------------------------------------------------------------------------------.
121 * | | ! | " | § | $ | % | & | / | ( | ) | = | |
122 * |------+------+------+------+------+------+------+------+------+------+------+------|
123 * | ° | | | | | | | | ? | [ | ] | ' | | |
124 * |------+------+------+------+------+------+------+------+------+------+------+------|
125 * | | | | | | \ | < | > | { | } | Vol+ | |
126 * |------+------+------+------+------+------+------+------+------+------+------+------|
127 * | | | | | | | | | Brt- | Vol- | Brt+ |
128 * `-----------------------------------------------------------------------------------'
129 */
130[_RAISE] = LAYOUT_planck_grid(
131 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, DE_SLSH, DE_LPRN, DE_RPRN, DE_EQL, KC_BSPC,
132 KC_TILD, _______, _______, _______, _______, _______, DE_PIPE, DE_QUES, DE_LBRC, DE_RBRC, DE_QUOT, DE_HASH,
133 _______, _______, _______, _______, _______, DE_BSLS, DE_LABK, DE_RABK, DE_LCBR, DE_RCBR, KC_VOLU, _______,
134 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_VOLD, KC_BRIU
135),
136
137/* Adjust (Lower + Raise)
138 * v------------------------RGB CONTROL--------------------v
139 * ,-----------------------------------------------------------------------------------.
140 * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
141 * |------+------+------+------+------+------+------+------+------+------+------+------|
142 * |PowOff| |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
145 * |------+------+------+------+------+------+------+------+------+------+------+------|
146 * | | | | | | | | | | | |
147 * `-----------------------------------------------------------------------------------'
148 */
149[_ADJUST] = LAYOUT_planck_grid(
150 _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
151 KC_POWER,_______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
152 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
153 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
154)
155
156};
157
158bool process_record_user(uint16_t keycode, keyrecord_t *record) {
159 switch (keycode) {
160 /*case QWERTY:
161 if (record->event.pressed) {
162 print("mode just switched to qwerty and this is a huge string\n");
163 set_single_persistent_default_layer(_QWERTY);
164 }
165 return false;
166 break;
167 case COLEMAK:
168 if (record->event.pressed) {
169 set_single_persistent_default_layer(_COLEMAK);
170 }
171 return false;
172 break;
173 case DVORAK:
174 if (record->event.pressed) {
175 set_single_persistent_default_layer(_DVORAK);
176 }
177 return false;
178 break;*/
179 case NUMPD:
180 if (record->event.pressed) {
181 #ifdef AUDIO_ENABLE
182 PLAY_SONG(ping_song);
183 #endif
184 if (layer_state_is(_NUMPD)) {
185 layer_off(_NUMPD);
186 } else {
187 layer_on(_NUMPD);
188 }
189 }
190 return false;
191 break;
192 case SCROLL:
193 if (record->event.pressed) {
194 scroll = true;
195 } else {
196 scroll = false;
197 }
198 default:
199 return true;
200 }
201}
202
203void encoder_update(bool clockwise) {
204 if (layer_state_is(_NUMPD)){
205 if (clockwise) {
206 tap_code(KC_RIGHT);
207 } else {
208 tap_code(KC_LEFT);
209 }
210 } else if (scroll) { //scroll fast mode
211 if (clockwise) {
212 tap_code(KC_PGDN);
213 } else {
214 tap_code(KC_PGUP);
215 }
216 } else {
217 if (clockwise) {
218 #ifdef MOUSEKEY_ENABLE
219 tap_code(KC_MS_WH_DOWN);
220 #else
221 tap_code(KC_PGDN);
222 #endif
223 } else {
224 #ifdef MOUSEKEY_ENABLE
225 tap_code(KC_MS_WH_UP);
226 #else
227 tap_code(KC_PGUP);
228 #endif
229 }
230 }
231}
232
233void matrix_scan_user(void) {
234}
235
236bool music_mask_user(uint16_t keycode) {
237 switch (keycode) {
238 case RAISE:
239 case LOWER:
240 return false;
241 default:
242 return true;
243 }
244}
245const rgblight_segment_t PROGMEM numbers_layer[] = RGBLIGHT_LAYER_SEGMENTS(
246 {3, 4, HSV_GREEN}
247);
248const rgblight_segment_t PROGMEM symbols_layer[] = RGBLIGHT_LAYER_SEGMENTS(
249 {2, 5, HSV_PURPLE}
250);
251const rgblight_segment_t PROGMEM numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS(
252 {5, 4, HSV_RED} // Light 4 LEDs, starting with LED 6
253);
254const rgblight_segment_t PROGMEM config_layer[] = RGBLIGHT_LAYER_SEGMENTS(
255 {2, 6, HSV_YELLOW}
256);
257
258// Now define the array of layers. Later layers take precedence
259const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
260 numbers_layer,
261 symbols_layer,
262 numpad_layer, // Overrides other layers
263 config_layer
264);
265
266void keyboard_post_init_user(void) {
267 // Enable the LED layers
268 rgblight_layers = my_rgb_layers;
269}
270
271layer_state_t layer_state_set_user(layer_state_t state) {
272 if (!(layer_state_is(_NUMPD))) {
273 state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
274 }
275 rgblight_set_layer_state(2, layer_state_cmp(state, 1));
276 rgblight_set_layer_state(0, layer_state_cmp(state, 2));
277 rgblight_set_layer_state(1, layer_state_cmp(state, 3));
278 rgblight_set_layer_state(3, layer_state_cmp(state, 4));
279 return state;
280}
diff --git a/keyboards/planck/keymaps/dvz/readme.md b/keyboards/planck/keymaps/dvz/readme.md
new file mode 100644
index 000000000..f4c1eb6ad
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/readme.md
@@ -0,0 +1,11 @@
1# devilzmods's german Planck Layout
2
3- QWERTZ
4- Lefthand Numpad layer (toggle)
5- Standard Numbers (left)
6- Symbols (right)
7- Settings
8
9This layout feature "rolling umlauts". Typing ae, oe, ue, sz respectively gets recognized and spits out ä, ö, ü, ß. For this, your systems keyboard layout/language has to be set to DE/German
10
11The layout is also designed around a rotary encoder in the top left corner that switches between slow and fast scrolling in the default layer by pressing it down while turning. In the numpad layer it scrolls left/right and pressing it down holds shift to select while scrolling.
diff --git a/keyboards/planck/keymaps/dvz/rules.mk b/keyboards/planck/keymaps/dvz/rules.mk
new file mode 100644
index 000000000..7216951bf
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/rules.mk
@@ -0,0 +1,5 @@
1SRC += muse.c
2
3COMBO_ENABLE = yes
4#VIA_ENABLE = yes
5AUDIO_ENABLE = yes