aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Đorđević <vomindoraan@gmail.com>2019-05-06 17:41:45 +0200
committerDrashna Jaelre <drashna@live.com>2019-05-06 08:41:45 -0700
commitcb1935aaff0fed118954996fc7afb722b6ed21be (patch)
tree753712b2dff56ca41675a99af8f3ffcaf58b85b9
parent8a9c90ad78305a1d76663fcb973a1a2ae7177297 (diff)
downloadqmk_firmware-cb1935aaff0fed118954996fc7afb722b6ed21be.tar.gz
qmk_firmware-cb1935aaff0fed118954996fc7afb722b6ed21be.zip
[Keymap] Update personal userspace and keymaps (now with 4 spaces!) (#5774)
* Add FnLk to Melody96 bottom row * Update conditional in userspace makefile Thanks @drashna * Add F keys to Melody96 Fn layer * Add FN_ESC alias to userspace * Update KBD6X keymap * Fix RGB_MATRIX_ENABLE constant name in #if * Remove trailing \ from LAYOUT macro calls * Set RGB mode on EEPROM reset in KBD6X * Swap right and middle mouse buttons in KBD6X * Rearrange RGB controls in KBD6X * Update keycode aliases, replace CLEAR with DEL_NXT in KBD6X Add Clear to KBD6X as RCtrl+` * Convert code to 4 space indents * Tweak RCTRL layer functionality * Replace NUMPAD custom keycode with layer state logic * Update RGB_MATRIX_ENABLE check Co-Authored-By: vomindoraan <vomindoraan@gmail.com>
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c154
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk8
-rw-r--r--keyboards/melody96/keymaps/konstantin/keymap.c124
-rw-r--r--keyboards/whitefox/keymaps/konstantin/keymap.c120
-rw-r--r--users/konstantin/konstantin.c120
-rw-r--r--users/konstantin/konstantin.h60
-rw-r--r--users/konstantin/rgb.h12
-rw-r--r--users/konstantin/rules.mk13
-rw-r--r--users/konstantin/tap_dance.c166
-rw-r--r--users/konstantin/tap_dance.h14
-rw-r--r--users/konstantin/unicode.c2
-rw-r--r--users/konstantin/unicode.h20
12 files changed, 408 insertions, 405 deletions
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
index 3404cc4e4..bb8ab6b9b 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
@@ -2,91 +2,95 @@
2#include "konstantin.h" 2#include "konstantin.h"
3 3
4enum keycodes_keymap { 4enum keycodes_keymap {
5 RCTRL = RANGE_KEYMAP, 5 RCTRL = RANGE_KEYMAP,
6}; 6};
7 7
8enum layers_keymap { 8enum layers_keymap {
9 L_RCTRL = L_RANGE_KEYMAP, 9 L_RCTRL = L_RANGE_KEYMAP,
10}; 10};
11 11
12void eeconfig_init_keymap(void) {
13 rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
14}
15
12bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 16bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
13 switch (keycode) { 17 switch (keycode) {
14 case RCTRL: 18 case RCTRL:
15 if (record->event.pressed) { 19 if (record->event.pressed) {
16 layer_on(L_RCTRL); 20 register_code(KC_RCTRL);
17 register_code(KC_RCTRL); 21 layer_on(L_RCTRL);
18 } else { 22 } else {
19 layer_off(L_RCTRL); 23 unregister_code(KC_RCTRL);
20 unregister_code(KC_RCTRL); 24 layer_off(L_RCTRL);
21 } 25 }
22 return false; 26 return false;
23 27
24 default: 28 default:
25 return true; 29 return true;
26 } 30 }
27} 31}
28 32
29const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 33const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 /* Base layer 34 /* Base layer
31 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 35 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
32 * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ 36 * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
33 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ 37 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
34 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │ 38 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │
35 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ 39 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
36 * │LCtCps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ 40 * │LCtCps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
37 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ 41 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
38 * │LShiftFn│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│FnL│ 42 * │LShiftFn│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│FnL│
39 * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘ 43 * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
40 * │LGu│LAlt │ Space │RAlGu│RCt│ 44 * │LGu│LAlt │ Space │RAlGu│RCt│
41 * └───┴─────┴───────────────────────────┴─────┴───┘ 45 * └───┴─────┴───────────────────────────┴─────┴───┘
42 */ 46 */
43 [L_BASE] = LAYOUT( 47 [L_BASE] = LAYOUT(
44 KC_ESC, 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_GRV, 48 KC_ESC, 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_GRV,
45 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_BSPC, 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_BSPC,
46 LCT_CPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 50 LCT_CPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
47 LSFT_FN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_FNLK, 51 LSFT_FN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_FNLK,
48 XXXXXXX, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, RCTRL, XXXXXXX 52 XXXXXXX, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, RCTRL, XXXXXXX
49 ), 53 ),
50 54
51 /* Function layer 55 /* Function layer
52 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 56 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
53 * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│ 57 * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│
54 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ 58 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
55 * │ │Hom│ ↑ │End│PgU│ │ │ │ │M1 │M↑ │M2 │M3 │ Del │ 59 * │ │Hom│ ↑ │End│PgU│ │ │ │ │M1 │M↑ │M3 │M2 │ Del │
56 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ 60 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
57 * │ │ ← │ ↓ │ → │PgD│ │ │ │MW↑│M← │M↓ │M→ │ │ 61 * │ │ ← │ ↓ │ → │PgD│ │ │ │MW↑│M← │M↓ │M→ │ │
58 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ 62 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
59 * │ │Mut│Vo-│Vo+│Ply│Prv│Nxt│MW←│MW→│M4 │M5 │ │ │ 63 * │ │Mut│Vo-│Vo+│Ply│Prv│Nxt│MW←│MW→│M4 │M5 │ │ │
60 * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘ 64 * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
61 * │DPRDstNA│ MW↓ │MAcl2│ │ 65 * │ │ MW↓ │MAcl2│ │
62 * └───┴─────┴───────────────────────────┴─────┴───┘ 66 * └───┴─────┴───────────────────────────┴─────┴───┘
63 */ 67 */
64 [L_FN] = LAYOUT( 68 [L_FN] = LAYOUT(
65 _______, 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_INS, 69 _______, 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_INS,
66 _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_DEL, 70 _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN3, KC_BTN2, KC_DEL,
67 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, _______, 71 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, _______,
68 _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_WH_L, KC_WH_R, KC_BTN4, KC_BTN5, _______, _______, 72 _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_WH_L, KC_WH_R, KC_BTN4, KC_BTN5, _______, _______,
69 XXXXXXX, DST_P_R, DST_N_A, KC_WH_D, KC_ACL2, _______, XXXXXXX 73 XXXXXXX, _______, _______, KC_WH_D, KC_ACL2, _______, XXXXXXX
70 ), 74 ),
71 75
72 /* RCtrl layer 76 /* RCtrl layer
73 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 77 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
74 * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 78 * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Clr
75 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ 79 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
76 * │ │Top│Mv↑│Btm│PrT│ │ │ │ │ │ │ │ │Clear 80 * │ │Top│Mv↑│Btm│TPr│ │ │ │ │ │ │ │ │DelNx
77 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ 81 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
78 * │ │Mv←│Mv↓│Mv→│NxT│ │ │ │ │ │ │ │ │ 82 * │ │Mv←│Mv↓│Mv→│TNx│ │ │ │ │ │ │ │ │
79 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ 83 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
80 * │ │ │ │ │ │ │ │ │ │ │ │ 84 * │ │RTgRV-RV+│ │ │ │ │ │ │ │ │ │
81 * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘ 85 * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
82 * │DtR│DstA │ │ │ │ 86 * │DPR│DstNA│ │ │ │
83 * └───┴─────┴───────────────────────────┴─────┴───┘ 87 * └───┴─────┴───────────────────────────┴─────┴───┘
84 */ 88 */
85 [L_RCTRL] = LAYOUT( 89 [L_RCTRL] = LAYOUT(
86 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 90 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLEAR,
87 _______, TOP, MV_UP, BOTTOM, PRV_TAB, _______, _______, _______, _______, _______, _______, _______, _______, CLEAR, 91 _______, TOP, MV_UP, BOTTOM, TAB_PRV, _______, _______, _______, _______, _______, _______, _______, _______, DEL_NXT,
88 _______, MV_LEFT, MV_DOWN, MV_RGHT, NXT_TAB, _______, _______, _______, _______, _______, _______, _______, _______, 92 _______, MV_LEFT, MV_DOWN, MV_RGHT, TAB_NXT, _______, _______, _______, _______, _______, _______, _______, _______,
89 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 93 _______, RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
90 XXXXXXX, DST_REM, DST_ADD, _______, _______, _______, XXXXXXX 94 XXXXXXX, DST_P_R, DST_N_A, _______, _______, _______, XXXXXXX
91 ), 95 ),
92}; 96};
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
index 4e485bf76..f7cf0758b 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
@@ -1,11 +1,11 @@
1BOOTMAGIC_ENABLE = no 1BOOTMAGIC_ENABLE = no
2COMMAND_ENABLE = yes 2COMMAND_ENABLE = yes
3CONSOLE_ENABLE = yes 3CONSOLE_ENABLE = no
4EXTRAKEY_ENABLE = yes 4EXTRAKEY_ENABLE = yes
5MOUSEKEY_ENABLE = yes 5MOUSEKEY_ENABLE = yes
6NKRO_ENABLE = yes 6NKRO_ENABLE = yes
7TAP_DANCE_ENABLE = yes 7TAP_DANCE_ENABLE = yes
8UNICODEMAP_ENABLE = yes 8UNICODEMAP_ENABLE = no
9 9
10BACKLIGHT_ENABLE = no 10BACKLIGHT_ENABLE = yes
11RGBLIGHT_ENABLE = no 11RGBLIGHT_ENABLE = yes
diff --git a/keyboards/melody96/keymaps/konstantin/keymap.c b/keyboards/melody96/keymaps/konstantin/keymap.c
index 1150e5dc7..7d65a0e98 100644
--- a/keyboards/melody96/keymaps/konstantin/keymap.c
+++ b/keyboards/melody96/keymaps/konstantin/keymap.c
@@ -2,77 +2,77 @@
2#include "konstantin.h" 2#include "konstantin.h"
3 3
4static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW }; 4static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
5static size_t cnum = sizeof colors / sizeof *colors; 5static const size_t cnum = sizeof colors / sizeof *colors;
6static size_t cidx = 0; 6static size_t cidx = 0;
7 7
8void eeconfig_init_keymap(void) {
9 rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
10}
11
12enum keycodes_keymap { 8enum keycodes_keymap {
13 RGB_SET = RANGE_KEYMAP, 9 RGB_SET = RANGE_KEYMAP,
14}; 10};
15 11
12void eeconfig_init_keymap(void) {
13 rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
14}
15
16bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 16bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
17 switch (keycode) { 17 switch (keycode) {
18 case RGB_SET: 18 case RGB_SET:
19 if (record->event.pressed) { 19 if (record->event.pressed) {
20 cidx = (cidx + 1) % cnum; 20 cidx = (cidx + 1) % cnum;
21 rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v); 21 rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
22 } 22 }
23 return false; 23 return false;
24 24
25 default: 25 default:
26 return true; 26 return true;
27 } 27 }
28} 28}
29 29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 /* Base layer 31 /* Base layer
32 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 32 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
33 * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│ 33 * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│
34 * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ 34 * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
35 * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │ 35 * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │
36 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤ 36 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
37 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │ │ 37 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │ │
38 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │ 38 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │
39 * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │P4 │P5 │P6 │ │ 39 * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │P4 │P5 │P6 │ │
40 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ 40 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
41 * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │P1 │P2 │P3 │ │ 41 * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │P1 │P2 │P3 │ │
42 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤PEn│ 42 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤PEn│
43 * │LCtl│LGui│LAlt│ Space │RAlGu│RCtrl│ ← │ ↓ │ → │P0 │P. │ │ 43 * │LCtl│LGui│LAlt│ Space │RAG│FnL│RCt│ ← │ ↓ │ → │P0 │P. │ │
44 * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘ 44 * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
45 */ 45 */
46 [L_BASE] = LAYOUT( \ 46 [L_BASE] = 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_INS, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_INS, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
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_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 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_DEL, 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_BSPC, KC_P7, KC_P8, KC_P9, XXXXXXX, 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_BSPC, KC_P7, KC_P8, KC_P9, XXXXXXX,
50 FN_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, 50 FN_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, RAL_RGU, 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, XXXXXXX, 51 KC_LSFT, RAL_RGU, 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, XXXXXXX,
52 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT 52 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, FN_FNLK, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
53 ), 53 ),
54 54
55 /* Function layer 55 /* Function layer
56 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 56 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
57 * │ │ │ │ │ │ │ │ │ │ │ │ │ │Sys│SLk│Pau│Brk│Top│Btm│ 57 * │ │ │ │ │ │ │ │ │ │ │ │ │ │Sys│SLk│Pau│Brk│Top│Btm│
58 * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ 58 * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
59 * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │RTg│ ÷ │ × │ − │ 59 * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │RTg│ ÷ │ × │ − │
60 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤ 60 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
61 * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│ │ 61 * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│ │
62 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│ 62 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│
63 * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │RH-│RS-│RV-│ │ 63 * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │RH-│RS-│RV-│ │
64 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ 64 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
65 * │ │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ │PgU│RMR│RMS│RMB│ │ 65 * │ │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ │PgU│RMR│RMS│RMB│ │
66 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤RMP│ 66 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤RMP│
67 * │ │DtPR│DtNA│ MW↓ │ │ App │Hom│PgD│End│RM-│RM+│ │ 67 * │ │DtPR│DtNA│ MW↓ │ │App│Hom│PgD│End│RM-│RM+│ │
68 * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘ 68 * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
69 */ 69 */
70 [L_FN] = LAYOUT( \ 70 [L_FN] = LAYOUT(
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSR, KC_SLCK, KC_PAUS, KC_BRK, TOP, BOTTOM, 71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSR, KC_SLCK, KC_PAUS, KC_BRK, TOP, BOTTOM,
72 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, DIVIDE, TIMES, MINUS, 72 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, DIVIDE, TIMES, MINUS,
73 KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, 73 KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
74 _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET, 74 _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
75 _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX, 75 _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
76 _______, DST_P_R, DST_N_A, KC_WH_D, _______, XXXXXXX, KC_APP, KC_HOME, KC_PGDN, KC_END, RGB_RMOD,RGB_MOD, RGB_M_P 76 _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, KC_APP, KC_HOME, KC_PGDN, KC_END, RGB_RMOD,RGB_MOD, RGB_M_P
77 ), 77 ),
78}; 78};
diff --git a/keyboards/whitefox/keymaps/konstantin/keymap.c b/keyboards/whitefox/keymaps/konstantin/keymap.c
index dddfb274e..c8c8c790c 100644
--- a/keyboards/whitefox/keymaps/konstantin/keymap.c
+++ b/keyboards/whitefox/keymaps/konstantin/keymap.c
@@ -2,66 +2,66 @@
2#include "konstantin.h" 2#include "konstantin.h"
3 3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5 /* Base layer 5 /* Base layer
6 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 6 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
7 * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │PSc│ 7 * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │PSc│
8 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ 8 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
9 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │Del│ 9 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │Del│
10 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ 10 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
11 * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│ 11 * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
12 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ 12 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
13 * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RCtRSf│ ↑ │PgD│ 13 * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RCtRSf│ ↑ │PgD│
14 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ 14 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
15 * │LCtl│LGui│LAlt│ Space │RAlG│FnLk│ │ ← │ ↓ │ → │ 15 * │LCtl│LGui│LAlt│ Space │RAlG│FnLk│ │ ← │ ↓ │ → │
16 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ 16 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
17 */ 17 */
18 [L_BASE] = LAYOUT_truefox( \ 18 [L_BASE] = LAYOUT_truefox(
19 KC_ESC, 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_GRV, KC_PSCR, \ 19 KC_ESC, 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_GRV, KC_PSCR,
20 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_BSPC, KC_DEL, \ 20 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_BSPC, KC_DEL,
21 FN_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_PGUP, \ 21 FN_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_PGUP,
22 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCT_RSF, KC_UP, KC_PGDN, \ 22 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCT_RSF, KC_UP, KC_PGDN,
23 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT \ 23 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT
24 ), 24 ),
25 25
26 /* Function layer 26 /* Function layer
27 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 27 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
28 * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Num│SLk│Pau│ 28 * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Num│SLk│Pau│
29 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ 29 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
30 * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│Ins│ 30 * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│Ins│
31 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ 31 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
32 * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │Top│ 32 * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │Top│
33 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ 33 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
34 * │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ App │PgU│Btm│ 34 * │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ App │PgU│Btm│
35 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ 35 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
36 * │ │DtPR│DtNA│ MW↓ │ │ │ │Hom│PgD│End│ 36 * │ │DtPR│DtNA│ MW↓ │ │ │ │Hom│PgD│End│
37 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ 37 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
38 */ 38 */
39 [L_FN] = LAYOUT_truefox( \ 39 [L_FN] = LAYOUT_truefox(
40 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, NUMPAD, KC_SLCK, KC_PAUS, \ 40 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, NUMPAD, KC_SLCK, KC_PAUS,
41 KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS, \ 41 KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS,
42 _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, TOP, \ 42 _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, TOP,
43 _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_APP, KC_PGUP, BOTTOM, \ 43 _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_APP, KC_PGUP, BOTTOM,
44 _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, KC_HOME, KC_PGDN, KC_END \ 44 _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, KC_HOME, KC_PGDN, KC_END
45 ), 45 ),
46 46
47 /* Numpad layer 47 /* Numpad layer
48 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 48 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
49 * │ │ │ │ │ │ │ │P7 │P8 │P9 │P- │ − │ = │Num│ │ │ 49 * │ │ │ │ │ │ │ │P7 │P8 │P9 │P- │ − │ = │Num│ │ │
50 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ 50 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
51 * │ │ │ │ │ │ │ │P4 │P5 │P6 │P+ │ ( │ ) │ │ │ 51 * │ │ │ │ │ │ │ │P4 │P5 │P6 │P+ │ ( │ ) │ │ │
52 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ 52 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
53 * │ │ │ │ │ │ │ │P1 │P2 │P3 │P* │ × │ PEnter │ │ 53 * │ │ │ │ │ │ │ │P1 │P2 │P3 │P* │ × │ PEnter │ │
54 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ 54 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
55 * │ │ │ │ │ │ │P0 │P0 │ , │P. │P/ │ ÷ │ │ │ 55 * │ │ │ │ │ │ │P0 │P0 │ , │P. │P/ │ ÷ │ │ │
56 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ 56 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
57 * │ │ │ │ │ │ │ │ │ │ │ 57 * │ │ │ │ │ │ │ │ │ │ │
58 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ 58 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
59 */ 59 */
60 [L_NUMPAD] = LAYOUT_truefox( \ 60 [L_NUMPAD] = LAYOUT_truefox(
61 _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, MINUS, EQUALS, NUMPAD, _______, _______, \ 61 _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, MINUS, EQUALS, NUMPAD, _______, _______,
62 _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, L_PAREN, R_PAREN, _______, _______, \ 62 _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, L_PAREN, R_PAREN, _______, _______,
63 _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PAST, TIMES, KC_PENT, _______, \ 63 _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PAST, TIMES, KC_PENT, _______,
64 _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, COMMA, KC_PDOT, KC_PSLS, DIVIDE, _______, _______, \ 64 _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, COMMA, KC_PDOT, KC_PSLS, DIVIDE, _______, _______,
65 _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 65 _______, _______, _______, _______, _______, _______, _______, _______, _______
66 ), 66 ),
67}; 67};
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c
index 753742fa7..9e3caca41 100644
--- a/users/konstantin/konstantin.c
+++ b/users/konstantin/konstantin.c
@@ -4,107 +4,99 @@ __attribute__((weak))
4void keyboard_pre_init_keymap(void) {} 4void keyboard_pre_init_keymap(void) {}
5 5
6void keyboard_pre_init_user(void) { 6void keyboard_pre_init_user(void) {
7 keyboard_pre_init_keymap(); 7 keyboard_pre_init_keymap();
8} 8}
9 9
10__attribute__((weak)) 10__attribute__((weak))
11void eeconfig_init_keymap(void) {} 11void eeconfig_init_keymap(void) {}
12 12
13void eeconfig_init_user(void) { 13void eeconfig_init_user(void) {
14 eeconfig_init_keymap(); 14 eeconfig_init_keymap();
15} 15}
16 16
17__attribute__((weak)) 17__attribute__((weak))
18void keyboard_post_init_keymap(void) {} 18void keyboard_post_init_keymap(void) {}
19 19
20void keyboard_post_init_user(void) { 20void keyboard_post_init_user(void) {
21 keyboard_post_init_keymap(); 21 keyboard_post_init_keymap();
22} 22}
23 23
24__attribute__((weak)) 24__attribute__((weak))
25bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 25bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
26 return true; 26 return true;
27} 27}
28 28
29bool process_record_user(uint16_t keycode, keyrecord_t *record) { 29bool process_record_user(uint16_t keycode, keyrecord_t *record) {
30 if (!process_record_keymap(keycode, record)) { 30 if (!process_record_keymap(keycode, record)) {
31 return false; 31 return false;
32 }
33
34#ifdef LAYER_NUMPAD
35 void toggle_numpad(void) {
36 layer_invert(L_NUMPAD);
37 bool numpad = IS_LAYER_ON(L_NUMPAD), num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
38 if (num_lock != numpad) {
39 tap_code(KC_NLCK); // Toggle Num Lock to match layer state
40 } 32 }
41 }
42#endif
43 33
44 switch (keycode) { 34 switch (keycode) {
45 case CLEAR: 35 case CLEAR:
46 if (record->event.pressed) { 36 if (record->event.pressed) {
47 SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE)); 37 SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
48 } 38 }
49 return false; 39 return false;
50 40
51 case DST_P_R: 41 case DST_P_R:
52 (record->event.pressed ? register_code16 : unregister_code16)( 42 (record->event.pressed ? register_code16 : unregister_code16)(
53 (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV 43 (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
54 ); 44 );
55 return false; 45 return false;
56 46
57 case DST_N_A: 47 case DST_N_A:
58 (record->event.pressed ? register_code16 : unregister_code16)( 48 (record->event.pressed ? register_code16 : unregister_code16)(
59 (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT 49 (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
60 ); 50 );
61 return false; 51 return false;
62 52
63#ifdef LAYER_FN 53#ifdef LAYER_FN
64 static bool fn_lock; 54 static bool fn_lock;
65
66 case FN_FNLK:
67 if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
68 fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this
69 }
70 return true;
71#endif
72 55
73#ifdef LAYER_NUMPAD 56 case FN_FNLK:
74 case NUMPAD: 57 if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
75 if (record->event.pressed) { 58 fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this
76 toggle_numpad(); 59 }
77 } 60 return true;
78 return false;
79#endif 61#endif
80 62
81 case KC_ESC: 63 case KC_ESC:
82 if (record->event.pressed) { 64 if (record->event.pressed) {
83#ifdef LAYER_NUMPAD 65#ifdef LAYER_NUMPAD // Disable Numpad layer before Fn layer
84 if (IS_LAYER_ON(L_NUMPAD)) { 66 if (IS_LAYER_ON(L_NUMPAD)) {
85 toggle_numpad(); 67 layer_off(L_NUMPAD);
86 return false; 68 return false;
87 } 69 }
88#endif 70#endif
89#ifdef LAYER_FN 71#ifdef LAYER_FN
90 if (IS_LAYER_ON(L_FN) && fn_lock) { 72 if (IS_LAYER_ON(L_FN) && fn_lock) {
91 layer_off(L_FN); 73 layer_off(L_FN);
92 return fn_lock = false; 74 return fn_lock = false;
93 } 75 }
94#endif 76#endif
95 } 77 }
96 return true; 78 return true;
97 79
98 default: 80 default:
99 return true; 81 return true;
100 } 82 }
101} 83}
102 84
103__attribute__((weak)) 85__attribute__((weak))
104uint32_t layer_state_set_keymap(uint32_t state) { 86uint32_t layer_state_set_keymap(uint32_t state) {
105 return state; 87 return state;
106} 88}
107 89
108uint32_t layer_state_set_user(uint32_t state) { 90uint32_t layer_state_set_user(uint32_t state) {
109 return layer_state_set_keymap(state); 91 state = layer_state_set_keymap(state);
92
93#ifdef LAYER_NUMPAD
94 bool numpad = state & 1UL<<L_NUMPAD;
95 bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
96 if (numpad != num_lock) {
97 tap_code(KC_NLCK); // Toggle Num Lock to match Numpad layer state
98 }
99#endif
100
101 return state;
110} 102}
diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h
index 0639b93a6..d43712b96 100644
--- a/users/konstantin/konstantin.h
+++ b/users/konstantin/konstantin.h
@@ -1,20 +1,25 @@
1#pragma once 1#pragma once
2 2
3#include "quantum.h" 3#include "quantum.h"
4#if defined(RGBLIGHT_ENABLE) || defined(RGBMATRIX_ENABLE) 4#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
5 #include "rgb.h" 5 #include "rgb.h"
6#endif 6#endif
7#ifdef TAP_DANCE_ENABLE 7#ifdef TAP_DANCE_ENABLE
8 #include "tap_dance.h" 8 #include "tap_dance.h"
9#endif 9#endif
10#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) 10#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
11 #include "unicode.h" 11 #include "unicode.h"
12#endif 12#endif
13 13
14#ifdef LAYER_FN 14#ifdef LAYER_FN
15 #define FN MO(L_FN) 15 #define FN MO(L_FN)
16 #define FN_CAPS LT(L_FN, KC_CAPS) 16 #define FN_CAPS LT(L_FN, KC_CAPS)
17 #define FN_FNLK TT(L_FN) 17 #define FN_ESC LT(L_FN, KC_ESC)
18 #define FN_FNLK TT(L_FN)
19#endif
20
21#ifdef LAYER_NUMPAD
22 #define NUMPAD TG(L_NUMPAD)
18#endif 23#endif
19 24
20#define KC_SYSR LALT(KC_PSCR) 25#define KC_SYSR LALT(KC_PSCR)
@@ -27,50 +32,49 @@
27#define MV_RGHT LCTL(KC_RGHT) 32#define MV_RGHT LCTL(KC_RGHT)
28#define TOP LCTL(KC_HOME) 33#define TOP LCTL(KC_HOME)
29#define BOTTOM LCTL(KC_END) 34#define BOTTOM LCTL(KC_END)
30#define PRV_TAB LCTL(KC_PGUP) 35#define TAB_PRV LCTL(KC_PGUP)
31#define NXT_TAB LCTL(KC_PGDN) 36#define TAB_NXT LCTL(KC_PGDN)
37#define DEL_PRV LCTL(KC_BSPC)
38#define DEL_NXT LCTL(KC_DEL)
32 39
33#define DST_ADD LCTL(LGUI(KC_D)) 40#define DST_ADD LCTL(LGUI(KC_D))
34#define DST_REM LCTL(LGUI(KC_F4)) 41#define DST_REM LCTL(LGUI(KC_F4))
35#define DST_PRV LCTL(LGUI(KC_LEFT)) 42#define DST_PRV LCTL(LGUI(KC_LEFT))
36#define DST_NXT LCTL(LGUI(KC_RGHT)) 43#define DST_NXT LCTL(LGUI(KC_RGHT))
37#ifndef DST_MOD_MASK 44#ifndef DST_MOD_MASK
38 #define DST_MOD_MASK MOD_MASK_CTRL 45 #define DST_MOD_MASK MOD_MASK_SHIFT
39#endif 46#endif
40 47
41#define LCT_CPS LCTL_T(KC_CAPS) 48#define LCT_CPS LCTL_T(KC_CAPS)
42 49
43#ifdef SEND_STRING_CLEAN 50#ifdef SEND_STRING_CLEAN
44 #undef SEND_STRING 51 #undef SEND_STRING
45 #define SEND_STRING(string) { \ 52 #define SEND_STRING(string) { \
46 uint8_t ss_mods = get_mods(); \ 53 uint8_t ss_mods = get_mods(); \
47 clear_mods(); \ 54 clear_mods(); \
48 send_string_P(PSTR(string)); \ 55 send_string_P(PSTR(string)); \
49 set_mods(ss_mods); \ 56 set_mods(ss_mods); \
50 } 57 }
51#endif 58#endif
52 59
53enum keycodes_user { 60enum keycodes_user {
54 CLEAR = SAFE_RANGE, 61 CLEAR = SAFE_RANGE,
55 DST_P_R, 62 DST_P_R,
56 DST_N_A, 63 DST_N_A,
57#ifdef LAYER_NUMPAD
58 NUMPAD,
59#endif
60 64
61 RANGE_KEYMAP, 65 RANGE_KEYMAP,
62}; 66};
63 67
64enum layers_user { 68enum layers_user {
65 L_BASE, 69 L_BASE,
66#ifdef LAYER_FN 70#ifdef LAYER_FN
67 L_FN, 71 L_FN,
68#endif 72#endif
69#ifdef LAYER_NUMPAD 73#ifdef LAYER_NUMPAD
70 L_NUMPAD, 74 L_NUMPAD,
71#endif 75#endif
72 76
73 L_RANGE_KEYMAP, 77 L_RANGE_KEYMAP,
74}; 78};
75 79
76void keyboard_pre_init_keymap(void); 80void keyboard_pre_init_keymap(void);
diff --git a/users/konstantin/rgb.h b/users/konstantin/rgb.h
index 53b5821b0..aed855aa0 100644
--- a/users/konstantin/rgb.h
+++ b/users/konstantin/rgb.h
@@ -3,15 +3,15 @@
3#include "quantum.h" 3#include "quantum.h"
4 4
5typedef struct { 5typedef struct {
6 uint16_t h; // 0–360 6 uint16_t h; // 0–360
7 uint8_t s; // 0–255 7 uint8_t s; // 0–255
8 uint8_t v; // 0–255 8 uint8_t v; // 0–255
9} hsv_t; 9} hsv_t;
10 10
11typedef struct { 11typedef struct {
12 uint8_t r; // 0–255 12 uint8_t r; // 0–255
13 uint8_t g; // 0–255 13 uint8_t g; // 0–255
14 uint8_t b; // 0–255 14 uint8_t b; // 0–255
15} rgb_t; 15} rgb_t;
16 16
17extern const hsv_t GODSPEED_BLUE; 17extern const hsv_t GODSPEED_BLUE;
diff --git a/users/konstantin/rules.mk b/users/konstantin/rules.mk
index 6bda030fb..1799d2be5 100644
--- a/users/konstantin/rules.mk
+++ b/users/konstantin/rules.mk
@@ -1,12 +1,15 @@
1SRC += konstantin.c 1SRC += konstantin.c
2ifneq (,$(filter yes,$(RGBLIGHT_ENABLE) $(RGB_MATRIX_ENABLE))) # if either is yes 2ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
3 SRC += rgb.c 3 SRC += rgb.c
4endif
5ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
6 SRC += rgb.c
4endif 7endif
5ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) 8ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
6 SRC += tap_dance.c 9 SRC += tap_dance.c
7endif 10endif
8ifneq (,$(filter yes,$(UNICODE_ENABLE) $(UNICODEMAP_ENABLE))) # if either is yes 11ifneq (,$(filter yes,$(UNICODE_ENABLE) $(UNICODEMAP_ENABLE)))
9 SRC += unicode.c 12 SRC += unicode.c
10endif 13endif
11 14
12EXTRAFLAGS += -flto 15EXTRAFLAGS += -flto
diff --git a/users/konstantin/tap_dance.c b/users/konstantin/tap_dance.c
index 0b405939b..fa43288ce 100644
--- a/users/konstantin/tap_dance.c
+++ b/users/konstantin/tap_dance.c
@@ -1,117 +1,117 @@
1#include "tap_dance.h" 1#include "tap_dance.h"
2#include "konstantin.h" 2#include "konstantin.h"
3 3
4#define ACTION_TAP_DANCE_DOUBLE_MOD(mod1, mod2) { \ 4#define ACTION_TAP_DANCE_DOUBLE_MOD(mod1, mod2) { \
5 .fn = { td_double_mod_each, NULL, td_double_mod_reset }, \ 5 .fn = { td_double_mod_each, NULL, td_double_mod_reset }, \
6 .user_data = &(qk_tap_dance_pair_t){ mod1, mod2 }, \ 6 .user_data = &(qk_tap_dance_pair_t){ mod1, mod2 }, \
7 } 7 }
8 8
9void td_double_mod_each(qk_tap_dance_state_t *state, void *user_data) { 9void td_double_mod_each(qk_tap_dance_state_t *state, void *user_data) {
10 qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data; 10 qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data;
11 11
12 // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 12 // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2
13 if (state->count == 1 || state->count == 3) { 13 if (state->count == 1 || state->count == 3) {
14 register_code(data->kc1); 14 register_code(data->kc1);
15 } else if (state->count == 2) { 15 } else if (state->count == 2) {
16 unregister_code(data->kc1); 16 unregister_code(data->kc1);
17 register_code(data->kc2); 17 register_code(data->kc2);
18 } 18 }
19 // Prevent tap dance from sending the mods as weak mods 19 // Prevent tap dance from sending the mods as weak mods
20 state->weak_mods &= ~(MOD_BIT(data->kc1) | MOD_BIT(data->kc2)); 20 state->weak_mods &= ~(MOD_BIT(data->kc1) | MOD_BIT(data->kc2));
21} 21}
22 22
23void td_double_mod_reset(qk_tap_dance_state_t *state, void *user_data) { 23void td_double_mod_reset(qk_tap_dance_state_t *state, void *user_data) {
24 qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data; 24 qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data;
25 25
26 if (state->count == 1 || state->count >= 3) { 26 if (state->count == 1 || state->count >= 3) {
27 unregister_code(data->kc1); 27 unregister_code(data->kc1);
28 } 28 }
29 if (state->count >= 2) { 29 if (state->count >= 2) {
30 unregister_code(data->kc2); 30 unregister_code(data->kc2);
31 } 31 }
32} 32}
33 33
34#define ACTION_TAP_DANCE_MOD_LAYER(mod, layer) { \ 34#define ACTION_TAP_DANCE_MOD_LAYER(mod, layer) { \
35 .fn = { td_mod_layer_each, NULL, td_mod_layer_reset }, \ 35 .fn = { td_mod_layer_each, NULL, td_mod_layer_reset }, \
36 .user_data = &(qk_tap_dance_dual_role_t){ mod, layer }, \ 36 .user_data = &(qk_tap_dance_dual_role_t){ mod, layer }, \
37 } 37 }
38 38
39void td_mod_layer_each(qk_tap_dance_state_t *state, void *user_data) { 39void td_mod_layer_each(qk_tap_dance_state_t *state, void *user_data) {
40 qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; 40 qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data;
41 41
42 // Single tap → mod, double tap → layer, triple tap etc. → mod+layer 42 // Single tap → mod, double tap → layer, triple tap etc. → mod+layer
43 if (state->count == 1 || state->count == 3) { 43 if (state->count == 1 || state->count == 3) {
44 register_code(data->kc); 44 register_code(data->kc);
45 } else if (state->count == 2) { 45 } else if (state->count == 2) {
46 unregister_code(data->kc); 46 unregister_code(data->kc);
47 // Prevent tap dance from sending the mod as a weak mod 47 // Prevent tap dance from sending the mod as a weak mod
48 state->weak_mods &= ~MOD_BIT(data->kc); 48 state->weak_mods &= ~MOD_BIT(data->kc);
49 layer_on(data->layer); 49 layer_on(data->layer);
50 } 50 }
51} 51}
52 52
53void td_mod_layer_reset(qk_tap_dance_state_t *state, void *user_data) { 53void td_mod_layer_reset(qk_tap_dance_state_t *state, void *user_data) {
54 qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; 54 qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data;
55 55
56 if (state->count == 1 || state->count >= 3) { 56 if (state->count == 1 || state->count >= 3) {
57 unregister_code(data->kc); 57 unregister_code(data->kc);
58 } 58 }
59 if (state->count >= 2) { 59 if (state->count >= 2) {
60 layer_off(data->layer); 60 layer_off(data->layer);
61 } 61 }
62} 62}
63 63
64#define ACTION_TAP_DANCE_LAYER_MOD(layer, mod) { \ 64#define ACTION_TAP_DANCE_LAYER_MOD(layer, mod) { \
65 .fn = { td_layer_mod_each, NULL, td_layer_mod_reset }, \ 65 .fn = { td_layer_mod_each, NULL, td_layer_mod_reset }, \
66 .user_data = &(qk_tap_dance_layer_mod_t){ layer, mod, 0, 0 }, \ 66 .user_data = &(qk_tap_dance_layer_mod_t){ layer, mod, 0, 0 }, \
67 } 67 }
68 68
69typedef struct { 69typedef struct {
70 uint8_t layer; 70 uint8_t layer;
71 uint16_t kc; 71 uint16_t kc;
72 bool layer_on; // Layer state when tap dance started 72 bool layer_on; // Layer state when tap dance started
73 bool started; 73 bool started;
74} qk_tap_dance_layer_mod_t; 74} qk_tap_dance_layer_mod_t;
75 75
76void td_layer_mod_each(qk_tap_dance_state_t *state, void *user_data) { 76void td_layer_mod_each(qk_tap_dance_state_t *state, void *user_data) {
77 qk_tap_dance_layer_mod_t *data = (qk_tap_dance_layer_mod_t *)user_data; 77 qk_tap_dance_layer_mod_t *data = (qk_tap_dance_layer_mod_t *)user_data;
78 if (!data->started) { 78 if (!data->started) {
79 data->layer_on = IS_LAYER_ON(data->layer); 79 data->layer_on = IS_LAYER_ON(data->layer);
80 data->started = true; 80 data->started = true;
81 } 81 }
82 82
83 // Single tap → layer, double tap → mod, triple tap etc. → layer+mod 83 // Single tap → layer, double tap → mod, triple tap etc. → layer+mod
84 if (state->count == 1 || state->count == 3) { 84 if (state->count == 1 || state->count == 3) {
85 layer_on(data->layer); 85 layer_on(data->layer);
86 } else if (state->count == 2) { 86 } else if (state->count == 2) {
87 if (!data->layer_on) { 87 if (!data->layer_on) {
88 layer_off(data->layer); 88 layer_off(data->layer);
89 }
90 register_code(data->kc);
89 } 91 }
90 register_code(data->kc);
91 }
92} 92}
93 93
94void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) { 94void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) {
95 qk_tap_dance_layer_mod_t *data = (qk_tap_dance_layer_mod_t *)user_data; 95 qk_tap_dance_layer_mod_t *data = (qk_tap_dance_layer_mod_t *)user_data;
96 96
97 if ((state->count == 1 || state->count >= 3) && !data->layer_on) { 97 if ((state->count == 1 || state->count >= 3) && !data->layer_on) {
98 layer_off(data->layer); 98 layer_off(data->layer);
99 } 99 }
100 if (state->count >= 2) { 100 if (state->count >= 2) {
101 unregister_code(data->kc); 101 unregister_code(data->kc);
102 } 102 }
103 103
104 data->started = false; 104 data->started = false;
105} 105}
106 106
107qk_tap_dance_action_t tap_dance_actions[] = { 107qk_tap_dance_action_t tap_dance_actions[] = {
108 [TD_DST_A_R] = ACTION_TAP_DANCE_DOUBLE(DST_ADD, DST_REM), 108 [TD_DST_A_R] = ACTION_TAP_DANCE_DOUBLE(DST_ADD, DST_REM),
109 109
110 [TD_RAL_LAL] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_LALT), 110 [TD_RAL_LAL] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_LALT),
111 [TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI), 111 [TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI),
112 [TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT), 112 [TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT),
113 113
114 [TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN), 114 [TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN),
115 [TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN), 115 [TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN),
116 [TD_FN_RCTL] = ACTION_TAP_DANCE_LAYER_MOD(L_FN, KC_RCTL), 116 [TD_FN_RCTL] = ACTION_TAP_DANCE_LAYER_MOD(L_FN, KC_RCTL),
117}; 117};
diff --git a/users/konstantin/tap_dance.h b/users/konstantin/tap_dance.h
index ad7c04cb7..13d682a60 100644
--- a/users/konstantin/tap_dance.h
+++ b/users/konstantin/tap_dance.h
@@ -13,13 +13,13 @@
13#define FN_RCTL TD(TD_FN_RCTL) 13#define FN_RCTL TD(TD_FN_RCTL)
14 14
15enum tap_dance { 15enum tap_dance {
16 TD_DST_A_R, 16 TD_DST_A_R,
17 17
18 TD_RAL_LAL, 18 TD_RAL_LAL,
19 TD_RAL_RGU, 19 TD_RAL_RGU,
20 TD_RCT_RSF, 20 TD_RCT_RSF,
21 21
22 TD_LSFT_FN, 22 TD_LSFT_FN,
23 TD_RCTL_FN, 23 TD_RCTL_FN,
24 TD_FN_RCTL, 24 TD_FN_RCTL,
25}; 25};
diff --git a/users/konstantin/unicode.c b/users/konstantin/unicode.c
index 144c0aaf7..8ef5aaa1e 100644
--- a/users/konstantin/unicode.c
+++ b/users/konstantin/unicode.c
@@ -2,6 +2,6 @@
2 2
3#ifdef UNICODEMAP_ENABLE 3#ifdef UNICODEMAP_ENABLE
4const uint32_t PROGMEM unicode_map[] = { 4const uint32_t PROGMEM unicode_map[] = {
5 FOREACH_UNICODE(UCM_ENTRY) 5 FOREACH_UNICODE(UCM_ENTRY)
6}; 6};
7#endif 7#endif
diff --git a/users/konstantin/unicode.h b/users/konstantin/unicode.h
index c8eddabb7..b2616d120 100644
--- a/users/konstantin/unicode.h
+++ b/users/konstantin/unicode.h
@@ -3,13 +3,13 @@
3#include "quantum.h" 3#include "quantum.h"
4 4
5#define FOREACH_UNICODE(M) \ 5#define FOREACH_UNICODE(M) \
6 M(COMMA, 0x002C) \ 6 M(COMMA, 0x002C) \
7 M(L_PAREN, 0x0028) \ 7 M(L_PAREN, 0x0028) \
8 M(R_PAREN, 0x0029) \ 8 M(R_PAREN, 0x0029) \
9 M(EQUALS, 0x003D) \ 9 M(EQUALS, 0x003D) \
10 M(TIMES, 0x00D7) \ 10 M(TIMES, 0x00D7) \
11 M(DIVIDE, 0x00F7) \ 11 M(DIVIDE, 0x00F7) \
12 M(MINUS, 0x2212) 12 M(MINUS, 0x2212)
13 13
14#define UC_KEYCODE(name, code) name = UC(code), 14#define UC_KEYCODE(name, code) name = UC(code),
15 15
@@ -19,16 +19,16 @@
19 19
20#if defined(UNICODE_ENABLE) 20#if defined(UNICODE_ENABLE)
21enum unicode_keycodes { 21enum unicode_keycodes {
22 FOREACH_UNICODE(UC_KEYCODE) 22 FOREACH_UNICODE(UC_KEYCODE)
23}; 23};
24#elif defined(UNICODEMAP_ENABLE) 24#elif defined(UNICODEMAP_ENABLE)
25enum unicode_names { 25enum unicode_names {
26 FOREACH_UNICODE(UCM_NAME) 26 FOREACH_UNICODE(UCM_NAME)
27}; 27};
28 28
29extern const uint32_t PROGMEM unicode_map[]; 29extern const uint32_t PROGMEM unicode_map[];
30 30
31enum unicode_keycodes { 31enum unicode_keycodes {
32 FOREACH_UNICODE(UCM_KEYCODE) 32 FOREACH_UNICODE(UCM_KEYCODE)
33}; 33};
34#endif 34#endif