|
|
@@ -17,23 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
#include QMK_KEYBOARD_H
|
|
|
|
|
|
-enum layer_names {
|
|
|
- _QW = 0,
|
|
|
- _LWR,
|
|
|
- _RSE,
|
|
|
- _ADJ
|
|
|
-};
|
|
|
-
|
|
|
-#ifdef RGBLIGHT_ENABLE
|
|
|
-
|
|
|
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
|
|
|
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
|
|
|
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
|
|
|
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
|
|
|
-
|
|
|
-const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
|
|
|
-#endif
|
|
|
-
|
|
|
// clang-format off
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
|
|
|
@@ -67,24 +50,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
};
|
|
|
// clang-format on
|
|
|
|
|
|
-// let us assume we start with both layers off
|
|
|
-static bool toggle_lwr = false;
|
|
|
-static bool toggle_rse = false;
|
|
|
-
|
|
|
bool led_update_user(led_t led_state) {
|
|
|
// Disable the default LED update code, so that lock LEDs could be reused to show layer status.
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
void matrix_scan_user(void) {
|
|
|
- led_lwr(toggle_lwr);
|
|
|
- led_rse(toggle_rse);
|
|
|
- led_t led_state = host_keyboard_led_state();
|
|
|
- led_caps(led_state.caps_lock);
|
|
|
- if (layer_state_is(_ADJ)) {
|
|
|
- led_lwr(true);
|
|
|
- led_rse(true);
|
|
|
- }
|
|
|
+
|
|
|
+ toggle_leds();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
|
|
@@ -92,13 +66,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
|
|
case (TT(_LWR)):
|
|
|
if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
|
|
|
// This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
|
|
|
- toggle_lwr = !layer_state_is(_LWR);
|
|
|
+ set_led_toggle(_LWR, !layer_state_is(_LWR));
|
|
|
}
|
|
|
return true;
|
|
|
break;
|
|
|
case (TT(_RSE)):
|
|
|
if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
|
|
|
- toggle_rse = !layer_state_is(_RSE);
|
|
|
+ set_led_toggle(_RSE, !layer_state_is(_RSE));
|
|
|
}
|
|
|
return true;
|
|
|
break;
|
|
|
@@ -108,118 +82,37 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
|
|
}
|
|
|
|
|
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
|
+
|
|
|
#ifdef RGBLIGHT_ENABLE
|
|
|
|
|
|
- rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
|
|
|
- rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
|
|
|
- rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
|
|
|
- rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
|
|
|
+ set_rgb_layers(state);
|
|
|
|
|
|
#endif
|
|
|
+
|
|
|
return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
|
|
|
}
|
|
|
|
|
|
#ifdef RGBLIGHT_ENABLE
|
|
|
|
|
|
layer_state_t default_layer_state_set_user(layer_state_t state) {
|
|
|
- rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
|
|
|
+ set_default_rgb_layers(state);
|
|
|
return state;
|
|
|
}
|
|
|
|
|
|
-void keyboard_post_init_user(void) {
|
|
|
- // Enable the LED layers
|
|
|
- rgblight_layers = my_rgb_layers;
|
|
|
-}
|
|
|
#endif
|
|
|
|
|
|
-#ifdef ENCODER_ENABLE
|
|
|
-
|
|
|
-# define MEDIA_KEY_DELAY 10
|
|
|
+void keyboard_post_init_user(void) {
|
|
|
|
|
|
-static inline void my_encoders(const uint8_t index, const bool clockwise) {
|
|
|
- if (index == 0) { /* First encoder */
|
|
|
- if (IS_LAYER_ON(_LWR)) {
|
|
|
- if (clockwise) {
|
|
|
- rgblight_decrease_val_noeeprom();
|
|
|
- } else {
|
|
|
- rgblight_increase_val_noeeprom();
|
|
|
- }
|
|
|
- } else if (IS_LAYER_ON(_RSE)) {
|
|
|
- if (clockwise) {
|
|
|
- rgblight_decrease_hue_noeeprom();
|
|
|
- } else {
|
|
|
- rgblight_increase_hue_noeeprom();
|
|
|
- }
|
|
|
+#ifdef RGBLIGHT_ENABLE
|
|
|
|
|
|
- } else {
|
|
|
- if (clockwise) {
|
|
|
- tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
|
|
|
- } else {
|
|
|
- tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
+ // Enable the LED layers
|
|
|
+ rgblight_layers = my_rgb();
|
|
|
|
|
|
-bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
|
- my_encoders(index, clockwise);
|
|
|
- return true;
|
|
|
-}
|
|
|
#endif
|
|
|
|
|
|
#ifdef OLED_ENABLE
|
|
|
|
|
|
-static void render_logo(void) {
|
|
|
- static const char PROGMEM m65_logo[] = {
|
|
|
-// 'slon', 128x32px
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0xa0, 0xa0,
|
|
|
-0xa0, 0xd0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0c, 0xc3, 0x3c, 0x0f, 0x05, 0x14, 0x14,
|
|
|
-0x04, 0xfc, 0x9f, 0x88, 0x80, 0x81, 0xe7, 0xfc, 0x03, 0x03, 0x07, 0x05, 0x06, 0x06, 0x08, 0x0c,
|
|
|
-0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x04, 0x10, 0x18, 0x30, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xe0, 0xde, 0xc1, 0xf0, 0x89, 0x0b, 0x18, 0x08, 0x04, 0x04,
|
|
|
-0x01, 0x1a, 0x0f, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x20, 0x20, 0x60, 0x40, 0x40, 0x42, 0x40, 0x40,
|
|
|
-0x40, 0x40, 0x40, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x13, 0x7c, 0xe0, 0xc0, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x05,
|
|
|
-0x05, 0x05, 0x07, 0x05, 0x07, 0x07, 0x07, 0x07, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01,
|
|
|
-0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
|
|
-0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x07,
|
|
|
-0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
|
|
-0x04, 0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
- 0x00
|
|
|
- };
|
|
|
-
|
|
|
- oled_write_raw_P(m65_logo, sizeof(m65_logo));
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
|
|
- return rotation;
|
|
|
-}
|
|
|
-
|
|
|
-bool oled_task_user(void) {
|
|
|
- //user_oled_magic();
|
|
|
- render_logo();
|
|
|
- return false;
|
|
|
-}
|
|
|
+ init_timer();
|
|
|
|
|
|
#endif
|
|
|
+}
|