summaryrefslogtreecommitdiffstats
path: root/users/zer09/zer09.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/zer09/zer09.c')
-rw-r--r--users/zer09/zer09.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/users/zer09/zer09.c b/users/zer09/zer09.c
new file mode 100644
index 000000000..a6768f0a1
--- /dev/null
+++ b/users/zer09/zer09.c
@@ -0,0 +1,88 @@
+#include "zer09.h"
+#include "lights.h"
+#include "tap_dance.h"
+
+__attribute__((weak)) void matrix_init_keymap(void) {}
+
+__attribute__((weak)) void matrix_scan_keymap(void) {}
+
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode,
+ keyrecord_t *record) {
+ return true;
+}
+
+__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
+
+static uint8_t c_lyr = 0; // current layer.
+
+bool shifted_layer(void) {
+ static bool is_shifted = false;
+
+ if (c_lyr == _VL) {
+ if (!is_shifted) {
+ register_code(KC_LSFT);
+ is_shifted = true;
+ return true;
+ }
+ } else {
+ if (is_shifted) {
+ unregister_code(KC_LSFT);
+ is_shifted = false;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void matrix_init_user(void) {
+ eeprom_read_led_dim_lvl();
+
+ matrix_init_keymap();
+}
+
+void matrix_scan_user(void) {
+ static uint8_t is_leds_changes = 1;
+ c_lyr = biton32(layer_state);
+
+ is_leds_changes = is_leds_changes << set_layer_led(c_lyr);
+ is_leds_changes = is_leds_changes << shifted_layer();
+ is_leds_changes = is_leds_changes << rainbow_loop(c_lyr);
+
+ if (is_leds_changes > 1) {
+ rgblight_set();
+ is_leds_changes = 1;
+ }
+
+ matrix_scan_keymap();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ set_key_led(record, c_lyr);
+
+ if (led_brightness(keycode, record)) {
+ rgblight_set();
+ return false;
+ }
+
+ rgblight_set();
+ return process_record_keymap(keycode, record);
+}
+
+void led_set_user(uint8_t usb_led) {
+ if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+ rbw_led_keys[RBW_LCAP].status = ENABLED;
+ rbw_led_keys[RBW_RCAP].status = ENABLED;
+ } else {
+ rbw_led_keys[RBW_LCAP].status = DISABLED;
+ rbw_led_keys[RBW_RCAP].status = DISABLED;
+ }
+
+ if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
+ rbw_led_keys[RBW_SCRL].status = ENABLED;
+ } else {
+ rbw_led_keys[RBW_SCRL].status = DISABLED;
+ }
+
+ led_set_keymap(usb_led);
+}