]> git.donarmstrong.com Git - qmk_firmware.git/blob - users/konstantin/konstantin.c
[Docs] Fix docs fallback for pt-br (#7602)
[qmk_firmware.git] / users / konstantin / konstantin.c
1 #include "konstantin.h"
2
3 __attribute__((weak))
4 void keyboard_pre_init_keymap(void) {}
5
6 void keyboard_pre_init_user(void) {
7     keyboard_pre_init_keymap();
8 }
9
10 __attribute__((weak))
11 void eeconfig_init_keymap(void) {}
12
13 void eeconfig_init_user(void) {
14     eeconfig_init_keymap();
15 }
16
17 __attribute__((weak))
18 void keyboard_post_init_keymap(void) {}
19
20 void keyboard_post_init_user(void) {
21     keyboard_post_init_keymap();
22 }
23
24 __attribute__((weak))
25 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
26     return true;
27 }
28
29 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
30     if (!process_record_keymap(keycode, record)) {
31         return false;
32     }
33
34     switch (keycode) {
35         uint16_t kc;
36 #ifdef LAYER_FN
37         static bool fn_lock = false;
38
39     case FNLK:
40         if (record->event.pressed) {
41             fn_lock = !IS_LAYER_ON(L_FN);  // Fn layer will be toggled after this
42         }
43         break;
44
45     case FN_FNLK:
46         if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
47             fn_lock = !IS_LAYER_ON(L_FN);
48         }
49         break;
50 #endif
51
52     case KC_ESC:
53         if (record->event.pressed) {
54 #ifdef LAYER_NUMPAD  // Disable Numpad layer before Fn layer
55             if (IS_LAYER_ON(L_NUMPAD)) {
56                 layer_off(L_NUMPAD);
57                 return false;
58             }
59 #endif
60 #ifdef LAYER_FN
61             if (IS_LAYER_ON(L_FN) && fn_lock) {
62                 layer_off(L_FN);
63                 return fn_lock = false;
64             }
65 #endif
66         }
67         break;
68
69     case CLEAR:
70         if (record->event.pressed) {
71             CLEAN_MODS(
72                 SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
73             )
74         }
75         break;
76
77     case DST_P_R:
78         kc = (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV;
79         CLEAN_MODS(
80             (record->event.pressed ? register_code16 : unregister_code16)(kc);
81         )
82         break;
83
84     case DST_N_A:
85         kc = (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT;
86         CLEAN_MODS(
87             (record->event.pressed ? register_code16 : unregister_code16)(kc);
88         )
89         break;
90     }
91
92     return true;
93 }
94
95 __attribute__((weak))
96 uint32_t layer_state_set_keymap(uint32_t state) {
97     return state;
98 }
99
100 uint32_t layer_state_set_user(uint32_t state) {
101     state = layer_state_set_keymap(state);
102
103 #ifdef LAYER_NUMPAD
104     bool numpad = IS_LAYER_ON_STATE(state, L_NUMPAD);
105     bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
106     if (numpad != num_lock) {
107         tap_code(KC_NLCK);  // Toggle Num Lock to match Numpad layer state
108     }
109 #endif
110
111     return state;
112 }
113
114 __attribute__((weak))
115 void led_set_keymap(uint8_t usb_led) {}
116
117 void led_set_user(uint8_t usb_led) {
118     led_set_keymap(usb_led);
119 }