aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/tv44/keymaps/belak/Makefile4
-rw-r--r--keyboards/tv44/keymaps/belak/keymap.c105
2 files changed, 82 insertions, 27 deletions
diff --git a/keyboards/tv44/keymaps/belak/Makefile b/keyboards/tv44/keymaps/belak/Makefile
index 7f63f0e0a..611241124 100644
--- a/keyboards/tv44/keymaps/belak/Makefile
+++ b/keyboards/tv44/keymaps/belak/Makefile
@@ -1,9 +1,11 @@
1#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) 1#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
2MOUSEKEY_ENABLE = no # Mouse keys(+4700) 2MOUSEKEY_ENABLE = no # Mouse keys(+4700)
3#EXTRAKEY_ENABLE = yes # Audio control and System control(+450) 3#EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
4#CONSOLE_ENABLE = no # Console for debug(+400) 4#CONSOLE_ENABLE = yes # Console for debug(+400)
5#DEBUG_ENABLE = yes
5#COMMAND_ENABLE = yes # Commands for debug and configuration 6#COMMAND_ENABLE = yes # Commands for debug and configuration
6NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 7NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
8TAP_DANCE_ENABLE = yes
7 9
8ifndef QUANTUM_DIR 10ifndef QUANTUM_DIR
9 include ../../../../Makefile 11 include ../../../../Makefile
diff --git a/keyboards/tv44/keymaps/belak/keymap.c b/keyboards/tv44/keymaps/belak/keymap.c
index 64d47ebcf..703a1c2dd 100644
--- a/keyboards/tv44/keymaps/belak/keymap.c
+++ b/keyboards/tv44/keymaps/belak/keymap.c
@@ -1,5 +1,6 @@
1#include "tv44.h" 1#include "tv44.h"
2#include "action_layer.h" 2#include "action_layer.h"
3#include "debug.h"
3#include "eeconfig.h" 4#include "eeconfig.h"
4 5
5// Layer names. We stick to 3 letters if possible so MO(NAME) fits in 7 6// Layer names. We stick to 3 letters if possible so MO(NAME) fits in 7
@@ -14,39 +15,91 @@
14#define L_CURBR LSFT(KC_LBRC) 15#define L_CURBR LSFT(KC_LBRC)
15#define R_CURBR LSFT(KC_RBRC) 16#define R_CURBR LSFT(KC_RBRC)
16 17
17#define BE_ESC LSFT_T(KC_ESC) 18#define L1_TAB LT(_L1, KC_TAB)
19#define L2_ESC LT(_L2, KC_ESC)
18#define L2_SLSH LT(_L2, KC_SLSH) 20#define L2_SLSH LT(_L2, KC_SLSH)
19#define L3_QUOT LT(_L3, KC_QUOT) 21#define L3_QUOT LT(_L3, KC_QUOT)
20#define L3_TAB LT(_L3, KC_TAB) 22
23// Tap dance magic
24#define TD_LGUI TD(BE_TD_GUI)
25#define TD_LCTL TD(BE_TD_CTL)
26#define TD_LALT TD(BE_TD_ALT)
27
28enum belak_td {
29 BE_TD_GUI = 0,
30 BE_TD_CTL,
31 BE_TD_ALT,
32};
33
34void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data);
35void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data);
36
37qk_tap_dance_action_t tap_dance_actions[] = {
38 [BE_TD_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
39 [BE_TD_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
40 [BE_TD_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
41};
42
43uint16_t tap_dance_keys[] = {
44 [BE_TD_GUI] = KC_LGUI,
45 [BE_TD_CTL] = KC_LCTL,
46 [BE_TD_ALT] = KC_LALT,
47};
21 48
22// Fillers to make layering more clear 49// Fillers to make layering more clear
23#define _______ KC_TRNS 50#define _______ KC_TRNS
24 51
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 [_QW] = KEYMAP_ARROW_COMMAND( /* Qwerty */ 53 [_QW] = KEYMAP_ARROW_COMMAND( /* Qwerty */
27 L3_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 54 L2_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
28 MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, L3_QUOT, 55 L1_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, L3_QUOT,
29 BE_ESC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, L2_SLSH, 56 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, L2_SLSH,
30 KC_LCTL, MO(_L2), KC_LALT, KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT 57 TD_LCTL, MO(_L3), TD_LALT, TD_LGUI, KC_ENT, KC_SPC, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
31 ), 58 ),
32 [_L1] = KEYMAP_ARROW_COMMAND( /* LAYER 1 */ 59 [_L1] = KEYMAP_ARROW_COMMAND( /* LAYER 1 */
33 KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, 60 KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
34 _______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______, 61 _______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
35 _______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT, 62 _______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
36 _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______ 63 _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
37 ), 64 ),
38 [_L2] = KEYMAP_ARROW_COMMAND( /* LAYER 2 */ 65 [_L2] = KEYMAP_ARROW_COMMAND( /* LAYER 2 */
39 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, 66 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
40 KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT, 67 KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
41 KC_LSFT, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______, 68 _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
42 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
43 ), 70 ),
44 [_L3] = KEYMAP_ARROW_COMMAND( /* LAYER 3 */ 71 [_L3] = KEYMAP_ARROW_COMMAND( /* LAYER 3 */
45 _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, 72 _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
46 KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, 73 KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
47 KC_LSFT, _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, 74 _______, _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______,
48 _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______ 75 _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
49 ) 76 )
50}; 77};
51 78
52const uint16_t PROGMEM fn_actions[] = {}; 79const uint16_t PROGMEM fn_actions[] = {};
80
81// Tap dance functions
82void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
83 switch (state->count) {
84 case 1:
85 register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
86 send_keyboard_report();
87 break;
88 case 2:
89 layer_on(_L2);
90 break;
91 case 3:
92 layer_off(_L2);
93 layer_on(_L1);
94 break;
95 default:
96 reset_tap_dance(state);
97 }
98}
99
100void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
101 layer_off(_L1);
102 layer_off(_L2);
103 unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
104 send_keyboard_report();
105}