aboutsummaryrefslogtreecommitdiff
path: root/keyboards/melody96
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/melody96')
-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
4 files changed, 203 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