]> git.donarmstrong.com Git - qmk_firmware.git/blob - users/konstantin/konstantin.c
Add _keymap versions of other custom Quantum functions
[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 matrix_init_keymap(void) {}
19
20 void matrix_init_user(void) {
21   matrix_init_keymap();
22 }
23
24 __attribute__((weak))
25 void keyboard_post_init_keymap(void) {}
26
27 void keyboard_post_init_user(void) {
28   keyboard_post_init_keymap();
29 }
30
31 __attribute__((weak))
32 void matrix_scan_keymap(void) {}
33
34 void matrix_scan_user(void) {
35   matrix_scan_keymap();
36 }
37
38 __attribute__((weak))
39 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
40   return true;
41 }
42
43 #ifdef LAYER_NUMPAD
44 static void toggle_numpad(void) {
45   layer_invert(L_NUMPAD);
46   bool numpad_on = IS_LAYER_ON(L_NUMPAD);
47   bool num_lock_on = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
48   if (num_lock_on != numpad_on) {
49     tap_code(KC_NLCK);  // Toggle Num Lock to match layer state
50   }
51 }
52 #endif
53
54 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
55   if (!process_record_keymap(keycode, record)) {
56     return false;
57   }
58
59   switch (keycode) {
60   case CLEAR:
61     if (record->event.pressed) {
62       SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
63     }
64     return false;
65
66   case DST_P_R:
67     (record->event.pressed ? register_code16 : unregister_code16)(
68       (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
69     );
70     return false;
71
72   case DST_N_A:
73     (record->event.pressed ? register_code16 : unregister_code16)(
74       (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
75     );
76     return false;
77
78 #ifdef LAYER_FN
79   static bool fn_lock;
80
81   case FN_FNLK:
82     if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
83       fn_lock = !IS_LAYER_ON(L_FN);  // Fn layer will be toggled after this
84     }
85     return true;
86 #endif
87
88 #ifdef LAYER_NUMPAD
89   case NUMPAD:
90     if (record->event.pressed) {
91       toggle_numpad();
92     }
93     return false;
94 #endif
95
96   case KC_ESC:
97     if (record->event.pressed) {
98 #ifdef LAYER_NUMPAD
99       if (IS_LAYER_ON(L_NUMPAD)) {
100         toggle_numpad();
101         return false;
102       }
103 #endif
104 #ifdef LAYER_FN
105       if (IS_LAYER_ON(L_FN) && fn_lock) {
106         layer_off(L_FN);
107         return fn_lock = false;
108       }
109 #endif
110     }
111     return true;
112
113   default:
114     return true;
115   }
116 }
117
118 __attribute__((weak))
119 uint32_t layer_state_set_keymap(uint32_t state) {
120   return state;
121 }
122
123 uint32_t layer_state_set_user(uint32_t state) {
124   return layer_state_set_keymap(state);
125 }
126
127 __attribute__((weak))
128 void led_set_keymap(uint8_t usb_led) {}
129
130 void led_set_user(uint8_t usb_led) {
131   led_set_keymap(usb_led);
132 }
133
134 __attribute__((weak))
135 void suspend_power_down_keymap(void) {}
136
137 void suspend_power_down_user(void) {
138   suspend_power_down_keymap();
139 }
140
141 __attribute__((weak))
142 void suspend_wakeup_init_keymap(void) {}
143
144 void suspend_wakeup_init_user(void) {
145   suspend_wakeup_init_keymap();
146 }
147
148 __attribute__((weak))
149 void startup_keymap(void) {}
150
151 void startup_user(void) {  // Currently not called anywhere
152   startup_keymap();
153 }
154
155 __attribute__((weak))
156 void shutdown_keymap(void) {}
157
158 void shutdown_user(void) {
159   shutdown_keymap();
160 }