mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-22 11:29:26 +00:00
Moving LT(0, x) overrides to keymap level
This commit is contained in:
parent
7bf782d9d6
commit
60f6f30808
@ -28,95 +28,8 @@ The pixel graphics used here are from a combination of sources;
|
|||||||
3. Key press indicator graphics were commissioned for this project and were designed by the
|
3. Key press indicator graphics were commissioned for this project and were designed by the
|
||||||
amazing https://corteximplant.com/@jadedtwin / https://www.jadedtwin.com/
|
amazing https://corteximplant.com/@jadedtwin / https://www.jadedtwin.com/
|
||||||
*/
|
*/
|
||||||
#include "daisy_v2.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
enum my_keycodes {
|
|
||||||
ENCODER_PRESS = QK_USER,
|
|
||||||
};
|
|
||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t max_layer = 3;
|
|
||||||
uint8_t current_display_mode = 0;
|
|
||||||
|
|
||||||
bool hidden = false;
|
|
||||||
|
|
||||||
uint8_t key_pressed = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/* EEPROM Stuct and function to allow init / saving of OLED mode */
|
|
||||||
typedef union {
|
|
||||||
uint32_t raw;
|
|
||||||
struct {
|
|
||||||
uint8_t oled_mode :8;
|
|
||||||
};
|
|
||||||
} kb_config_t;
|
|
||||||
|
|
||||||
kb_config_t kb_config;
|
|
||||||
|
|
||||||
void eeconfig_init_kb(void) {
|
|
||||||
//Init initial value and save to EEPROM.
|
|
||||||
kb_config.raw = 0;
|
|
||||||
eeconfig_update_kb(kb_config.raw);
|
|
||||||
}
|
|
||||||
/* End */
|
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
|
||||||
//Read user value and set current_display_mode.
|
|
||||||
kb_config.oled_mode = eeconfig_read_kb();
|
|
||||||
current_display_mode = kb_config.oled_mode;
|
|
||||||
|
|
||||||
//This is an adjustment to resolve the issue that occurs when there is a
|
|
||||||
//static colour underglow the first LED can be a different colour on first init.
|
|
||||||
rgblight_disable_noeeprom();
|
|
||||||
rgblight_enable_noeeprom();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
if (!process_record_user(keycode, record)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
key_pressed++;
|
|
||||||
} else {
|
|
||||||
if (key_pressed)
|
|
||||||
key_pressed--;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
switch(keycode) {
|
|
||||||
case LT(0, ENCODER_PRESS):
|
|
||||||
if (record->event.pressed) {
|
|
||||||
// on tap
|
|
||||||
if (record->tap.count) {
|
|
||||||
tap_code(KC_MUTE);
|
|
||||||
}
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
// on hold
|
|
||||||
else {
|
|
||||||
hidden = false;
|
|
||||||
current_display_mode = (current_display_mode + 1) % 5;
|
|
||||||
// When mode changes update EEPROM.
|
|
||||||
kb_config.oled_mode = current_display_mode;
|
|
||||||
eeconfig_update_kb(kb_config.raw);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
uint32_t flash_timer = 0;
|
|
||||||
bool layer_changed = false;
|
|
||||||
|
|
||||||
// when the layer is changed, flash the layer number on the screen
|
|
||||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
|
||||||
flash_timer = timer_read();
|
|
||||||
layer_changed = true;
|
|
||||||
return layer_state_set_user(state);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
/*Copyright 2024 Blake Drayson / Draytronics
|
|
||||||
|
|
||||||
Contact info@draytronics.co.uk
|
|
||||||
|
|
||||||
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/>.
|
|
||||||
|
|
||||||
This code is inspired by and adapted from the code used in the Printed Pad by Noah Beidelman (@noahbei)
|
|
||||||
|
|
||||||
It also references the concept of glitching animations from Aleks (@aleksbrgt)
|
|
||||||
|
|
||||||
The pixel graphics used here are from a combination of sources;
|
|
||||||
|
|
||||||
1. Layer indicators are created by myself and free to use by anyone.
|
|
||||||
2. "Revengeday", "Cyber Cafe", "Cortex Implant" logos are used with kind permission of OBEY THE SYSTEM.
|
|
||||||
A collective of Fediverse instances and creatives. https://git.cyberwa.re/obey-the-system.
|
|
||||||
They are licenced as Non-Commercial and for use by members of the network, with attribution.
|
|
||||||
3. Key press indicator graphics were commissioned for this project and were designed by the
|
|
||||||
amazing https://corteximplant.com/@jadedtwin / https://www.jadedtwin.com/
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "quantum.h"
|
|
||||||
|
|
||||||
//for oled key press
|
|
||||||
extern uint8_t key_pressed;
|
|
||||||
|
|
||||||
// for changing oled display mode
|
|
||||||
extern uint8_t current_display_mode;
|
|
||||||
|
|
||||||
// for hidden animation toggle
|
|
||||||
extern bool hidden;
|
|
||||||
|
|
||||||
//for determining when the layer is changed and having a timer for how long we flash the layer
|
|
||||||
extern uint32_t flash_timer;
|
|
||||||
extern bool layer_changed;
|
|
@ -90,3 +90,29 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
|||||||
[_CODE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
[_CODE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch(keycode) {
|
||||||
|
case LT(0, ENCODER_PRESS):
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// on tap
|
||||||
|
if (record->tap.count) {
|
||||||
|
tap_code(KC_MUTE);
|
||||||
|
}
|
||||||
|
#ifdef OLED_ENABLE
|
||||||
|
// on hold
|
||||||
|
else {
|
||||||
|
void oled_display_mode_step(void);
|
||||||
|
oled_display_mode_step();
|
||||||
|
// hidden = false;
|
||||||
|
// current_display_mode = (current_display_mode + 1) % 5;
|
||||||
|
// // When mode changes update EEPROM.
|
||||||
|
// kb_config.oled_mode = current_display_mode;
|
||||||
|
// eeconfig_update_kb(kb_config.raw);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@ -28,9 +28,21 @@ The pixel graphics used here are from a combination of sources;
|
|||||||
3. Key press indicator graphics were commissioned for this project and were designed by the
|
3. Key press indicator graphics were commissioned for this project and were designed by the
|
||||||
amazing https://corteximplant.com/@jadedtwin / https://www.jadedtwin.com/
|
amazing https://corteximplant.com/@jadedtwin / https://www.jadedtwin.com/
|
||||||
*/
|
*/
|
||||||
#include "daisy_v2.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#ifdef OLED_ENABLE
|
#ifdef OLED_ENABLE
|
||||||
|
|
||||||
|
static uint8_t key_pressed = 0;
|
||||||
|
|
||||||
|
// for changing oled display mode
|
||||||
|
static uint8_t current_display_mode = 0;
|
||||||
|
|
||||||
|
// for hidden animation toggle
|
||||||
|
static bool hidden = false;
|
||||||
|
|
||||||
|
static uint32_t flash_timer = 0;
|
||||||
|
static bool layer_changed = false;
|
||||||
|
|
||||||
static void flash_current_layer(void);
|
static void flash_current_layer(void);
|
||||||
|
|
||||||
uint8_t FRAME_DURATION = 100;
|
uint8_t FRAME_DURATION = 100;
|
||||||
@ -41,6 +53,34 @@ uint8_t current_frame = 0;
|
|||||||
static bool glitch = true;
|
static bool glitch = true;
|
||||||
static bool dirty = false;
|
static bool dirty = false;
|
||||||
|
|
||||||
|
/* EEPROM Stuct and function to allow init / saving of OLED mode */
|
||||||
|
typedef union {
|
||||||
|
uint32_t raw;
|
||||||
|
struct {
|
||||||
|
uint8_t oled_mode :8;
|
||||||
|
};
|
||||||
|
} kb_config_t;
|
||||||
|
|
||||||
|
kb_config_t kb_config;
|
||||||
|
|
||||||
|
void eeconfig_init_kb(void) {
|
||||||
|
//Init initial value and save to EEPROM.
|
||||||
|
kb_config.raw = 0;
|
||||||
|
eeconfig_update_kb(kb_config.raw);
|
||||||
|
}
|
||||||
|
/* End */
|
||||||
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
//Read user value and set current_display_mode.
|
||||||
|
kb_config.oled_mode = eeconfig_read_kb();
|
||||||
|
current_display_mode = kb_config.oled_mode;
|
||||||
|
|
||||||
|
//This is an adjustment to resolve the issue that occurs when there is a
|
||||||
|
//static colour underglow the first LED can be a different colour on first init.
|
||||||
|
rgblight_disable_noeeprom();
|
||||||
|
rgblight_enable_noeeprom();
|
||||||
|
}
|
||||||
|
|
||||||
static void render_CortexImplant_animation(void){
|
static void render_CortexImplant_animation(void){
|
||||||
|
|
||||||
// 'CortexImplant_Clean', 128x32px
|
// 'CortexImplant_Clean', 128x32px
|
||||||
@ -2310,6 +2350,13 @@ static void render_daisy_logo(void){
|
|||||||
|
|
||||||
bool logo_rendered = false;
|
bool logo_rendered = false;
|
||||||
|
|
||||||
|
void oled_display_mode_step(void) {
|
||||||
|
hidden = false;
|
||||||
|
current_display_mode = (current_display_mode + 1) % 5;
|
||||||
|
kb_config.oled_mode = current_display_mode;
|
||||||
|
eeconfig_update_kb(kb_config.raw);
|
||||||
|
}
|
||||||
|
|
||||||
bool oled_task_kb(void) {
|
bool oled_task_kb(void) {
|
||||||
if (!oled_task_user()) {
|
if (!oled_task_user()) {
|
||||||
return false;
|
return false;
|
||||||
@ -2353,4 +2400,18 @@ bool oled_task_kb(void) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
key_pressed = record->event.pressed;
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
// when the layer is changed, flash the layer number on the screen
|
||||||
|
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||||
|
flash_timer = timer_read();
|
||||||
|
layer_changed = true;
|
||||||
|
return layer_state_set_user(state);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user