mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-05-07 08:04:16 -04:00
[Keyboard] Work Louder updates for via v3 (#19555)
This commit is contained in:
parent
898cc1f62e
commit
a122339dd6
3 changed files with 196 additions and 44 deletions
|
@ -1,5 +0,0 @@
|
||||||
// Copyright 2022 QMK
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#undef RGBLIGHT_EFFECT_TWINKLE
|
|
|
@ -8,25 +8,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX,
|
KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
RGB_TOG, XXXXXXX, XXXXXXX, 0x5011
|
RGB_TOG, XXXXXXX, XXXXXXX, TO(1)
|
||||||
),
|
),
|
||||||
[1] = LAYOUT(
|
[1] = LAYOUT(
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, 0x5012
|
XXXXXXX, XXXXXXX, XXXXXXX, TO(2)
|
||||||
),
|
),
|
||||||
[2] = LAYOUT(
|
[2] = LAYOUT(
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, 0x5013
|
XXXXXXX, XXXXXXX, XXXXXXX, TO(3)
|
||||||
),
|
),
|
||||||
[3] = LAYOUT(
|
[3] = LAYOUT(
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
USER00, USER01, USER03, USER05,
|
USER00, USER01, USER03, USER05,
|
||||||
XXXXXXX, USER02, USER04, USER06,
|
XXXXXXX, USER02, USER04, USER06,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, 0x5010
|
XXXXXXX, XXXXXXX, XXXXXXX, TO(0)
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,6 +49,8 @@ typedef union {
|
||||||
|
|
||||||
work_louder_config_t work_louder_config;
|
work_louder_config_t work_louder_config;
|
||||||
|
|
||||||
|
#define WL_LED_MAX_BRIGHT 75
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case USER09:
|
case USER09:
|
||||||
|
@ -57,21 +59,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
if (work_louder_config.led_level > 4) {
|
if (work_louder_config.led_level > 4) {
|
||||||
work_louder_config.led_level = 1;
|
work_louder_config.led_level = 1;
|
||||||
}
|
}
|
||||||
work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
|
work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * WL_LED_MAX_BRIGHT / 4));
|
||||||
eeconfig_update_user(work_louder_config.raw);
|
eeconfig_update_user(work_louder_config.raw);
|
||||||
layer_state_set_kb(layer_state);
|
layer_state_set_kb(layer_state);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x5000 ... 0x500F:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_move(keycode - 0x5000);
|
|
||||||
}
|
|
||||||
return false; break;
|
|
||||||
case 0x5010 ... 0x501F:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_move(keycode - 0x5010);
|
|
||||||
}
|
|
||||||
return false; break;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -88,14 +80,87 @@ layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
void eeconfig_init_user(void) {
|
void eeconfig_init_user(void) {
|
||||||
work_louder_config.raw = 0;
|
work_louder_config.raw = 0;
|
||||||
work_louder_config.led_level = 1;
|
work_louder_config.led_level = 1;
|
||||||
|
work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * WL_LED_MAX_BRIGHT / 4));
|
||||||
eeconfig_update_user(work_louder_config.raw);
|
eeconfig_update_user(work_louder_config.raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
void keyboard_post_init_user(void) {
|
||||||
work_louder_config.raw = eeconfig_read_user();
|
work_louder_config.raw = eeconfig_read_user();
|
||||||
work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
|
work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * WL_LED_MAX_BRIGHT / 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
void suspend_wakeup_init_user(void) {
|
void suspend_wakeup_init_user(void) {
|
||||||
layer_state_set_user(layer_state);
|
layer_state_set_user(layer_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum via_indicator_value {
|
||||||
|
id_wl_brightness = 1,
|
||||||
|
id_wl_layer, // placeholder
|
||||||
|
};
|
||||||
|
|
||||||
|
void wl_config_set_value(uint8_t *data) {
|
||||||
|
// data = [ value_id, value_data ]
|
||||||
|
uint8_t *value_id = &(data[0]);
|
||||||
|
uint8_t *value_data = &(data[1]);
|
||||||
|
|
||||||
|
switch (*value_id) {
|
||||||
|
case id_wl_brightness:
|
||||||
|
work_louder_config.led_level = (uint8_t)*value_data;
|
||||||
|
work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * WL_LED_MAX_BRIGHT / 4));
|
||||||
|
layer_state_set_kb(layer_state);
|
||||||
|
break;
|
||||||
|
// case id_wl_layer:
|
||||||
|
// layer_move(*value_data);
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wl_config_get_value(uint8_t *data) {
|
||||||
|
// data = [ value_id, value_data ]
|
||||||
|
uint8_t *value_id = &(data[0]);
|
||||||
|
uint8_t *value_data = &(data[1]);
|
||||||
|
|
||||||
|
switch (*value_id) {
|
||||||
|
case id_wl_brightness:
|
||||||
|
*value_data = work_louder_config.led_level;
|
||||||
|
break;
|
||||||
|
// case id_wl_layer:
|
||||||
|
// *value_data = get_highest_layer(layer_state);
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wl_config_save(void) {
|
||||||
|
eeconfig_update_user(work_louder_config.raw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
||||||
|
uint8_t *command_id = &(data[0]);
|
||||||
|
uint8_t *channel_id = &(data[1]);
|
||||||
|
uint8_t *value_id_and_data = &(data[2]);
|
||||||
|
|
||||||
|
if (*channel_id == id_custom_channel) {
|
||||||
|
switch (*command_id) {
|
||||||
|
case id_custom_set_value: {
|
||||||
|
wl_config_set_value(value_id_and_data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case id_custom_get_value: {
|
||||||
|
wl_config_get_value(value_id_and_data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case id_custom_save: {
|
||||||
|
wl_config_save();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
// Unhandled message.
|
||||||
|
*command_id = id_unhandled;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*command_id = id_unhandled;
|
||||||
|
}
|
||||||
|
|
|
@ -16,12 +16,7 @@
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
enum planck_layers {
|
enum planck_layers { _QWERTY, _LOWER, _RAISE, _ADJUST };
|
||||||
_QWERTY,
|
|
||||||
_LOWER,
|
|
||||||
_RAISE,
|
|
||||||
_ADJUST
|
|
||||||
};
|
|
||||||
|
|
||||||
enum tap_dances {
|
enum tap_dances {
|
||||||
ENC_TAP,
|
ENC_TAP,
|
||||||
|
@ -59,6 +54,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENCODER_MAP_ENABLE
|
||||||
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||||
|
[_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||||
|
[_LOWER] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
|
||||||
|
[_RAISE] = { ENCODER_CCW_CW(R_M_RMOD, R_M_MOD) },
|
||||||
|
[_ADJUST] = { ENCODER_CCW_CW(R_M_HUI, R_M_HUD) },
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
void dance_enc_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void dance_enc_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
register_code(KC_MPLY);
|
register_code(KC_MPLY);
|
||||||
|
@ -84,11 +89,25 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
[ENC_TAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_enc_finished, dance_enc_reset),
|
[ENC_TAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_enc_finished, dance_enc_reset),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
uint32_t raw;
|
||||||
|
struct {
|
||||||
|
uint8_t led_level : 3;
|
||||||
|
};
|
||||||
|
} work_louder_config_t;
|
||||||
|
|
||||||
|
work_louder_config_t work_louder_config;
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
if (keycode == USER09) {
|
if (keycode == USER09) {
|
||||||
preprocess_tap_dance(TD(ENC_TAP), record);
|
preprocess_tap_dance(TD(ENC_TAP), record);
|
||||||
return process_tap_dance(TD(ENC_TAP), record);
|
return process_tap_dance(TD(ENC_TAP), record);
|
||||||
|
} else if (keycode == USER10 && record->event.pressed) {
|
||||||
|
work_louder_config.led_level ^= true;
|
||||||
|
eeconfig_update_user(work_louder_config.raw);
|
||||||
|
layer_state_set_kb(layer_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,26 +116,99 @@ layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
writePinLow(B3);
|
writePinLow(B3);
|
||||||
writePinLow(B7);
|
writePinLow(B7);
|
||||||
|
|
||||||
switch (get_highest_layer(state)) {
|
if (work_louder_config.led_level) {
|
||||||
case 1:
|
switch (get_highest_layer(state)) {
|
||||||
writePinHigh(B2);
|
case 1:
|
||||||
break;
|
writePinHigh(B2);
|
||||||
case 2:
|
break;
|
||||||
writePinHigh(B3);
|
case 2:
|
||||||
break;
|
writePinHigh(B3);
|
||||||
case 3:
|
break;
|
||||||
writePinHigh(B7);
|
case 3:
|
||||||
break;
|
writePinHigh(B7);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENCODER_MAP_ENABLE
|
void eeconfig_init_user(void) {
|
||||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
work_louder_config.raw = 0;
|
||||||
[_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
work_louder_config.led_level = true;
|
||||||
[_LOWER] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
|
eeconfig_update_user(work_louder_config.raw);
|
||||||
[_RAISE] = { ENCODER_CCW_CW(R_M_RMOD, R_M_MOD) },
|
}
|
||||||
[_ADJUST] = { ENCODER_CCW_CW(R_M_HUI, R_M_HUD) },
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
work_louder_config.raw = eeconfig_read_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
enum via_indicator_value {
|
||||||
|
id_wl_brightness = 1,
|
||||||
|
id_wl_layer, // placeholder
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
void wl_config_set_value(uint8_t *data) {
|
||||||
|
// data = [ value_id, value_data ]
|
||||||
|
uint8_t *value_id = &(data[0]);
|
||||||
|
uint8_t *value_data = &(data[1]);
|
||||||
|
|
||||||
|
switch (*value_id) {
|
||||||
|
case id_wl_brightness:
|
||||||
|
work_louder_config.led_level = (bool)*value_data;
|
||||||
|
layer_state_set_kb(layer_state);
|
||||||
|
break;
|
||||||
|
// case id_wl_layer:
|
||||||
|
// layer_move(*value_data);
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wl_config_get_value(uint8_t *data) {
|
||||||
|
// data = [ value_id, value_data ]
|
||||||
|
uint8_t *value_id = &(data[0]);
|
||||||
|
uint8_t *value_data = &(data[1]);
|
||||||
|
|
||||||
|
switch (*value_id) {
|
||||||
|
case id_wl_brightness:
|
||||||
|
*value_data = work_louder_config.led_level;
|
||||||
|
break;
|
||||||
|
// case id_wl_layer:
|
||||||
|
// *value_data = get_highest_layer(layer_state);
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wl_config_save(void) {
|
||||||
|
eeconfig_update_user(work_louder_config.raw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
||||||
|
uint8_t *command_id = &(data[0]);
|
||||||
|
uint8_t *channel_id = &(data[1]);
|
||||||
|
uint8_t *value_id_and_data = &(data[2]);
|
||||||
|
|
||||||
|
if (*channel_id == id_custom_channel) {
|
||||||
|
switch (*command_id) {
|
||||||
|
case id_custom_set_value: {
|
||||||
|
wl_config_set_value(value_id_and_data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case id_custom_get_value: {
|
||||||
|
wl_config_get_value(value_id_and_data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case id_custom_save: {
|
||||||
|
wl_config_save();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
// Unhandled message.
|
||||||
|
*command_id = id_unhandled;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*command_id = id_unhandled;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue