Refactor staryu to current standards and enable support for backlight keycodes (#5487)
This commit is contained in:
parent
a0270b55e1
commit
9ef21d2e1c
7 changed files with 184 additions and 170 deletions
|
@ -1,52 +0,0 @@
|
||||||
#include "backlight.h"
|
|
||||||
#include <avr/pgmspace.h>
|
|
||||||
|
|
||||||
/* backlighting */
|
|
||||||
void init_backlight_led(void)
|
|
||||||
{
|
|
||||||
DDRC |= (1<<PC2 | 1<<PC7);
|
|
||||||
DDRD |= (1<<PD5 | 1<<PD6);
|
|
||||||
DDRB |= (1<<PB0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void backlight_led_off(uint8_t index)
|
|
||||||
{
|
|
||||||
switch (index) {
|
|
||||||
case 0:
|
|
||||||
PORTC |= (1<<PC2);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
PORTC |= (1<<PC7);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
PORTD |= (1<<PD5);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
PORTD |= (1<<PD6);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
PORTB |= (1<<PB0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void backlight_led_on(uint8_t index)
|
|
||||||
{
|
|
||||||
switch (index) {
|
|
||||||
case 0:
|
|
||||||
PORTC &= ~(1<<PC2);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
PORTC &= ~(1<<PC7);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
PORTD &= ~(1<<PD5);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
PORTD &= ~(1<<PD6);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
PORTB &= ~(1<<PB0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +1,21 @@
|
||||||
#ifndef STARYU_BL
|
/*
|
||||||
#define STARYU_BL
|
Copyright 2019
|
||||||
|
|
||||||
#include <stdint.h>
|
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.
|
||||||
|
|
||||||
void init_backlight_led(void);
|
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.
|
||||||
|
|
||||||
void backlight_led_on(uint8_t index);
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
void backlight_led_off(uint8_t index);
|
// Add backwards compatibility for existing keymaps
|
||||||
|
#define backlight_led_off(i) backlight_set_value(i, 0)
|
||||||
#endif
|
#define backlight_led_on(i) backlight_set_value(i, 1)
|
|
@ -14,8 +14,7 @@ GNU General Public License for more details.
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
|
@ -32,43 +31,38 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define MATRIX_COLS 5
|
#define MATRIX_COLS 5
|
||||||
|
|
||||||
/* key matrix pins */
|
/* key matrix pins */
|
||||||
#define MATRIX_ROW_PINS { }
|
#define MATRIX_ROW_PINS { NO_PIN }
|
||||||
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4 }
|
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
// from light_ws2812_config @
|
|
||||||
// https://github.com/kairyu/tmk_keyboard_custom/tree/master/keyboard/staryu
|
|
||||||
#define RGB_DI_PIN C6
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 1 // Number of LEDs
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define RGB_DI_PIN C6
|
||||||
|
#define RGBLED_NUM 1 // Number of LEDs
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
// #ifdef RGB_DI_PIN
|
||||||
|
// #define RGBLIGHT_HUE_STEP 8
|
||||||
|
// #define RGBLIGHT_SAT_STEP 8
|
||||||
|
// #define RGBLIGHT_VAL_STEP 8
|
||||||
|
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// /*== all animations enable ==*/
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
#define BACKLIGHT_LEVELS 1 // either on/off
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 200
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
/* Set 0 if debouncing isn't needed */
|
||||||
#define DEBOUNCING_DELAY 5
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
// TODO backlighting
|
|
||||||
#define BACKLIGHT_LEVELS 10
|
|
||||||
// #define BACKLIGHT_PIN B7
|
|
||||||
/*
|
|
||||||
Backlight: C2, C7, D5, D6, B0
|
|
||||||
switch (index) {
|
|
||||||
case 0:
|
|
||||||
PORTC &= ~(1<<PC2);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
PORTC &= ~(1<<PC7);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
PORTD &= ~(1<<PD5);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
PORTD &= ~(1<<PD6);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
PORTB &= ~(1<<PB0);
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -20,62 +20,85 @@ enum layers {
|
||||||
_LAYER0,
|
_LAYER0,
|
||||||
_LAYER1,
|
_LAYER1,
|
||||||
_LAYER2,
|
_LAYER2,
|
||||||
_LAYER3
|
_LAYER3,
|
||||||
|
_LAYER4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_LAYER0] = LAYOUT(
|
||||||
|
/* ┌─────────┬─────────┬─────────┐ */
|
||||||
|
KC_UP, TO(_LAYER1),
|
||||||
|
/* ├─────────┼─────────┼─────────┤ */
|
||||||
|
KC_LEFT, KC_DOWN, KC_RIGHT
|
||||||
|
/* └─────────┴─────────┴─────────┘ */
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LAYER1] = LAYOUT(
|
||||||
|
/* ┌─────────┬─────────┬─────────┐ */
|
||||||
|
KC_PGUP, TO(_LAYER2),
|
||||||
|
/* ├─────────┼─────────┼─────────┤ */
|
||||||
|
KC_HOME, KC_PGDN, KC_END
|
||||||
|
/* └─────────┴─────────┴─────────┘ */
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LAYER2] = LAYOUT(
|
||||||
|
/* ┌─────────┬─────────┬─────────┐ */
|
||||||
|
KC_MSEL, TO(_LAYER3),
|
||||||
|
/* ├─────────┼─────────┼─────────┤ */
|
||||||
|
KC_MPRV, KC_MPLY, KC_MNXT
|
||||||
|
/* └─────────┴─────────┴─────────┘ */
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LAYER3] = LAYOUT(
|
||||||
|
/* ┌─────────┬─────────┬─────────┐ */
|
||||||
|
KC_MS_U, TO(_LAYER4),
|
||||||
|
/* ├─────────┼─────────┼─────────┤ */
|
||||||
|
KC_MS_L, KC_MS_D, KC_MS_R
|
||||||
|
/* └─────────┴─────────┴─────────┘ */
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LAYER4] = LAYOUT(
|
||||||
|
/* ┌─────────┬─────────┬─────────┐ */
|
||||||
|
XXXXXXX, TO(_LAYER0),
|
||||||
|
/* ├─────────┼─────────┼─────────┤ */
|
||||||
|
RGB_TOG, BL_TOGG, BL_STEP
|
||||||
|
/* └─────────┴─────────┴─────────┘ */
|
||||||
|
),
|
||||||
|
|
||||||
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
|
|
||||||
/* Keymap 0
|
|
||||||
* ,-----------.
|
|
||||||
* | |Up |Fn0|
|
|
||||||
* |---+---+---|
|
|
||||||
* |Lef|Dow|Rig|
|
|
||||||
* `-----------'
|
|
||||||
*/
|
|
||||||
LAYOUT( KC_UP, TO(_LAYER1), KC_LEFT,KC_DOWN,KC_RIGHT ),
|
|
||||||
/* Keymap 1
|
|
||||||
* ,-----------.
|
|
||||||
* | |PgU|Fn1|
|
|
||||||
* |---+---+---|
|
|
||||||
* |Hom|PgD|End|
|
|
||||||
* `-----------'
|
|
||||||
*/
|
|
||||||
LAYOUT( KC_PGUP,TO(_LAYER2), KC_HOME,KC_PGDN,KC_END ),
|
|
||||||
/* Keymap 2
|
|
||||||
* ,-----------.
|
|
||||||
* | |Sel|Fn2|
|
|
||||||
* |---+---+---|
|
|
||||||
* |Pre|Pla|Nex|
|
|
||||||
* `-----------'
|
|
||||||
*/
|
|
||||||
LAYOUT( KC_MSEL,TO(_LAYER3), KC_MPRV,KC_MPLY,KC_MNXT ),
|
|
||||||
/* Keymap 3
|
|
||||||
* ,-----------.
|
|
||||||
* | |MsU|Fn3|
|
|
||||||
* |---+---+---|
|
|
||||||
* |MsL|MsD|MsR|
|
|
||||||
* `-----------'
|
|
||||||
*/
|
|
||||||
LAYOUT( KC_MS_U,TO(_LAYER0), KC_MS_L,KC_MS_D,KC_MS_R ),
|
|
||||||
// /* Keymap 4
|
|
||||||
// * ,-----------.
|
|
||||||
// * | |Fn6|Fn4|
|
|
||||||
// * |---+---+---|
|
|
||||||
// * |Fn7|Fn5|Fn8|
|
|
||||||
// * `-----------'
|
|
||||||
// */
|
|
||||||
// LAYOUT( FN6, FN4, FN7, FN5, FN8 ),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
void eeconfig_init_user(void) {
|
||||||
return MACRO_NONE ;
|
// use the non noeeprom versions, to write these values to EEPROM too
|
||||||
|
rgblight_enable();
|
||||||
|
rgblight_mode(RGBLIGHT_MODE_BREATHING+1);
|
||||||
|
|
||||||
|
backlight_enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
void keyboard_post_init_user(void) {
|
||||||
|
//layer_state_set_user is not called for inital state - set it here
|
||||||
|
rgblight_sethsv_noeeprom_white();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
}
|
switch (biton32(state)) {
|
||||||
|
case _LAYER1:
|
||||||
void led_set_user(uint8_t usb_led) {
|
rgblight_sethsv_noeeprom_cyan();
|
||||||
|
break;
|
||||||
|
case _LAYER2:
|
||||||
|
rgblight_sethsv_noeeprom_magenta();
|
||||||
|
break;
|
||||||
|
case _LAYER3:
|
||||||
|
rgblight_sethsv_noeeprom_red();
|
||||||
|
break;
|
||||||
|
case _LAYER4:
|
||||||
|
rgblight_sethsv_noeeprom_orange();
|
||||||
|
break;
|
||||||
|
case _LAYER0:
|
||||||
|
default: // for any other layers, or the default layer
|
||||||
|
rgblight_sethsv_noeeprom_white();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = atmega32u2
|
MCU = atmega32u2
|
||||||
|
|
||||||
BOOTLOADER = lufa-dfu
|
|
||||||
|
|
||||||
SRC = backlight_staryu.c
|
|
||||||
|
|
||||||
# Processor frequency.
|
# Processor frequency.
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
@ -40,21 +36,43 @@ F_USB = $(F_CPU)
|
||||||
# Interrupt driven control endpoint task(+60)
|
# Interrupt driven control endpoint task(+60)
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# atmega32a bootloadHID
|
||||||
|
BOOTLOADER = lufa-dfu
|
||||||
|
|
||||||
# Boot Section Size in *bytes*
|
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
# If you don't know the bootloader type, then you can specify the
|
||||||
|
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
BACKLIGHT_ENABLE = yes # In-switch LEDs
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
AUDIO_ENABLE = no # There is no available timer or pin for audio on the NovelPad
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
RGBLIGHT_ENABLE = yes # RGB LEDs for underglow, installed and enabled by default for the NovelPad
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||||
|
|
|
@ -15,12 +15,30 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "staryu.h"
|
#include "staryu.h"
|
||||||
#include "backlight_staryu.h"
|
|
||||||
|
|
||||||
// for keyboard subdirectory level init functions
|
#ifdef BACKLIGHT_ENABLE
|
||||||
// @Override
|
|
||||||
void matrix_init_kb(void) {
|
#ifdef BACKLIGHT_PIN
|
||||||
// call user level keymaps, if any
|
#pragma error "BACKLIGHT_PIN must stay undefined otherwise software pwm is incorrectly used"
|
||||||
init_backlight_led();
|
#endif
|
||||||
matrix_init_user();
|
|
||||||
|
#define BACKLIGHT_PIN_COUNT 5
|
||||||
|
static const pin_t backlight_pins[BACKLIGHT_PIN_COUNT] = { C2, C7, D5, D6, B0 };
|
||||||
|
|
||||||
|
void backlight_init_ports(void) {
|
||||||
|
for (uint8_t index = 0; index < BACKLIGHT_PIN_COUNT; index++) {
|
||||||
|
setPinOutput(backlight_pins[index]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void backlight_set_value(uint8_t index, uint8_t level) {
|
||||||
|
writePin(backlight_pins[index], !!level);
|
||||||
|
}
|
||||||
|
|
||||||
|
void backlight_set(uint8_t level) {
|
||||||
|
for (uint8_t index = 0; index < BACKLIGHT_PIN_COUNT; index++) {
|
||||||
|
backlight_set_value(index, level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //BACKLIGHT_ENABLE
|
||||||
|
|
|
@ -14,15 +14,19 @@ GNU General Public License for more details.
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef KB_H
|
#pragma once
|
||||||
#define KB_H
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
K00, K01, \
|
K00, K01, \
|
||||||
K10, K11, K12 \
|
K10, K11, K12 \
|
||||||
) { \
|
) { \
|
||||||
{ K00, K01, K12, K11, K10 }, \
|
{ K00, K01, K12, K11, K10 }, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
|
||||||
|
void backlight_set_value(uint8_t index, uint8_t level);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue