summaryrefslogtreecommitdiffstats
path: root/users/nstickney/nstickney.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/nstickney/nstickney.c')
-rw-r--r--users/nstickney/nstickney.c112
1 files changed, 82 insertions, 30 deletions
diff --git a/users/nstickney/nstickney.c b/users/nstickney/nstickney.c
index 3e18e5c838..8222e7289d 100644
--- a/users/nstickney/nstickney.c
+++ b/users/nstickney/nstickney.c
@@ -1,34 +1,73 @@
+/* Copyright 2021 @nstickney
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include "nstickney.h"
// Tap Dancing
-void dance_layer (qk_tap_dance_state_t *state, void *user_data) {
- switch (state -> count) {
- case 1: tap_code(KC_APP); break;
- case 2: layer_invert(NUMP); break;
- case 3: layer_invert(SYMB); break;
- case 4: layer_invert(SYSH); break;
- default: break;
- }
+void dance_layer(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ tap_code(KC_APP);
+ break;
+ case 2:
+ layer_invert(NUMP);
+ break;
+ case 3:
+ layer_invert(SYMB);
+ break;
+ default:
+ break;
+ }
};
-void dance_lock_finished (qk_tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 1: register_code(KC_LGUI); break;
- case 2: register_code(KC_NLCK); break;
- case 3: register_code(KC_CAPS); break;
- case 4: register_code(KC_SLCK); break;
- default: break;
- }
+void dance_lock_finished(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ register_code(KC_LGUI);
+ break;
+ case 2:
+ register_code(KC_NLCK);
+ break;
+ case 3:
+ register_code(KC_CAPS);
+ break;
+ case 4:
+ register_code(KC_SLCK);
+ break;
+ default:
+ break;
+ }
};
-void dance_lock_reset (qk_tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 1: unregister_code(KC_LGUI); break;
- case 2: unregister_code(KC_NLCK); break;
- case 3: register_code(KC_CAPS); break;
- case 4: register_code(KC_SLCK); break;
- default: break;
- }
+void dance_lock_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ unregister_code(KC_LGUI);
+ break;
+ case 2:
+ register_code(KC_NLCK);
+ break;
+ case 3:
+ register_code(KC_CAPS);
+ break;
+ case 4:
+ register_code(KC_SLCK);
+ break;
+ default:
+ break;
+ }
};
qk_tap_dance_action_t tap_dance_actions[] = {
@@ -36,9 +75,22 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[LAYERS] = ACTION_TAP_DANCE_FN(dance_layer)
};
-void eeconfig_init_user (void) {
- set_unicode_input_mode(UC_LNX); // Linux
- //set_unicode_input_mode(UC_OSX); // Mac OSX
- //set_unicode_input_mode(UC_WIN); // Windows (with registry key, see wiki)
- //set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki)
-}; \ No newline at end of file
+// RGB underglow per-layer hue values
+const uint16_t LAYER_HUE[] = {6, 197, 133, 69};
+
+// Initialize RGB underglow (colorful)
+void keyboard_post_init_user(void) {
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ for (uint16_t i = 0; i < 256; ++i) {
+ rgblight_sethsv_noeeprom((i + LAYER_HUE[BASE]) % 256, 255, 136);
+ wait_ms(8);
+ }
+};
+
+// Turn on RGB underglow according to active layer
+layer_state_t layer_state_set_user(layer_state_t state) {
+ uint8_t user_val = rgblight_get_val();
+ rgblight_sethsv_noeeprom(LAYER_HUE[get_highest_layer(state)], 255, user_val);
+ return state;
+};