[Keyboard] CannonKeys Instant60 Keyboard (#5433)
* Instant 60
* Instant60 changes again
* turn off LSE and features
* Working RGB underglow 🎉
* Add missing files
* Update keymap to have reset
* Backlighting on
* Backlight code for instant60
* Move 072 files to common folder and use it in Instant60
* Updates
* Update keyboards/cannonkeys/instant60/rules.mk
Co-Authored-By: awkannan <andrew.kannan@klaviyo.com>
This commit is contained in:
parent
3a2eb68e9e
commit
99a8628383
20 changed files with 3597 additions and 0 deletions
120
keyboards/cannonkeys/stm32f072/keyboard.c
Normal file
120
keyboards/cannonkeys/stm32f072/keyboard.c
Normal file
|
@ -0,0 +1,120 @@
|
|||
#include "keyboard.h"
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
#include "led_custom.h"
|
||||
#include "util.h"
|
||||
#include "quantum.h"
|
||||
|
||||
#include "tmk_core/common/eeprom.h"
|
||||
|
||||
#include "ws2812.h"
|
||||
|
||||
backlight_config_t kb_backlight_config = {
|
||||
.enable = true,
|
||||
.breathing = true,
|
||||
.level = BACKLIGHT_LEVELS
|
||||
};
|
||||
|
||||
|
||||
bool eeprom_is_valid(void)
|
||||
{
|
||||
return (eeprom_read_word(((void*)EEPROM_MAGIC_ADDR)) == EEPROM_MAGIC &&
|
||||
eeprom_read_byte(((void*)EEPROM_VERSION_ADDR)) == EEPROM_VERSION);
|
||||
}
|
||||
|
||||
void eeprom_set_valid(bool valid)
|
||||
{
|
||||
eeprom_update_word(((void*)EEPROM_MAGIC_ADDR), valid ? EEPROM_MAGIC : 0xFFFF);
|
||||
eeprom_update_byte(((void*)EEPROM_VERSION_ADDR), valid ? EEPROM_VERSION : 0xFF);
|
||||
}
|
||||
|
||||
void eeprom_reset(void)
|
||||
{
|
||||
eeprom_set_valid(false);
|
||||
eeconfig_disable();
|
||||
}
|
||||
|
||||
void save_backlight_config_to_eeprom(){
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CUSTOM_BACKLIGHT, kb_backlight_config.raw);
|
||||
}
|
||||
|
||||
void load_custom_config(){
|
||||
kb_backlight_config.raw = eeprom_read_byte((uint8_t*)EEPROM_CUSTOM_BACKLIGHT);
|
||||
}
|
||||
|
||||
void eeprom_init_kb(void)
|
||||
{
|
||||
// If the EEPROM has the magic, the data is good.
|
||||
// OK to load from EEPROM.
|
||||
if (eeprom_is_valid()) {
|
||||
load_custom_config();
|
||||
} else {
|
||||
// Save the magic number last, in case saving was interrupted
|
||||
eeprom_set_valid(true);
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_init_kb(void){
|
||||
eeprom_init_kb();
|
||||
/* MOSI pin*/
|
||||
palSetPadMode(PORT_WS2812, PIN_WS2812, PAL_MODE_ALTERNATE(0));
|
||||
wait_ms(500);
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
leds_init();
|
||||
#endif
|
||||
backlight_init_ports();
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void)
|
||||
{
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_task();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case BL_INC:
|
||||
if (record->event.pressed) {
|
||||
kb_backlight_config.level = kb_backlight_config.level + 1;
|
||||
if(kb_backlight_config.level > BACKLIGHT_LEVELS){
|
||||
kb_backlight_config.level = BACKLIGHT_LEVELS;
|
||||
}
|
||||
backlight_set(kb_backlight_config.level);
|
||||
save_backlight_config_to_eeprom();
|
||||
}
|
||||
return false;
|
||||
case BL_TOGG:
|
||||
if (record->event.pressed) {
|
||||
kb_backlight_config.enable = !kb_backlight_config.enable;
|
||||
if(kb_backlight_config.enable){
|
||||
backlight_set(kb_backlight_config.level);
|
||||
} else {
|
||||
backlight_set(0);
|
||||
}
|
||||
save_backlight_config_to_eeprom();
|
||||
}
|
||||
return false;
|
||||
|
||||
case BL_DEC:
|
||||
if (record->event.pressed) {
|
||||
if(kb_backlight_config.level <= 1){
|
||||
kb_backlight_config.level = 0;
|
||||
} else {
|
||||
kb_backlight_config.level = kb_backlight_config.level - 1;
|
||||
}
|
||||
backlight_set(kb_backlight_config.level);
|
||||
save_backlight_config_to_eeprom();
|
||||
}
|
||||
return false;
|
||||
case BL_BRTG:
|
||||
if (record->event.pressed) {
|
||||
kb_backlight_config.breathing = !kb_backlight_config.breathing;
|
||||
breathing_toggle();
|
||||
save_backlight_config_to_eeprom();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue