From 030658e5f420fdc793d73c0b7d65043ef69a11f3 Mon Sep 17 00:00:00 2001 From: Kai Ryu Date: Tue, 11 Nov 2014 16:42:09 +0900 Subject: [PATCH] kimera: Update features for Kimera v5 + USB 6KRO + SoftPWM LED + Breathing LED + Fading LED + Typing LED + Ledmap + Ledmap in EEPROM --- keyboard/kimera/Makefile | 7 +++ keyboard/kimera/Makefile.pjrc | 9 ++- keyboard/kimera/Makefile_8M | 8 ++- keyboard/kimera/backlight.c | 104 ++++++++++++++++++++++++++++++++++ keyboard/kimera/config.h | 14 ++++- keyboard/kimera/kimera.h | 6 +- keyboard/kimera/led.c | 10 +++- keyboard/kimera/ledmap.c | 84 +++++++++++++++++++++++++++ 8 files changed, 232 insertions(+), 10 deletions(-) create mode 100644 keyboard/kimera/ledmap.c diff --git a/keyboard/kimera/Makefile b/keyboard/kimera/Makefile index e6ecf532..238e2455 100644 --- a/keyboard/kimera/Makefile +++ b/keyboard/kimera/Makefile @@ -52,6 +52,7 @@ SRC = keymap_common.c \ matrix.c \ led.c \ backlight.c \ + ledmap.c \ twimaster.c \ kimera.c @@ -136,12 +137,18 @@ CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration #SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +USB_6KRO_ENABLE = yes # USB 6key Rollover #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support #PS2_USE_BUSYWAIT = yes BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality KEYMAP_IN_EEPROM_ENABLE = yes # External keymap in eeprom #KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +SOFTPWM_LED_ENABLE = yes # Enable SoftPWM to drive backlight +FADING_LED_ENABLE = yes # Enable fading backlight BREATHING_LED_ENABLE = yes # Enable breathing backlight +LEDMAP_ENABLE = yes # Enable LED mapping +LEDMAP_IN_EEPROM_ENABLE = yes # Read LED mapping from eeprom + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/kimera/Makefile.pjrc b/keyboard/kimera/Makefile.pjrc index 140e64c4..5818baca 100644 --- a/keyboard/kimera/Makefile.pjrc +++ b/keyboard/kimera/Makefile.pjrc @@ -52,6 +52,7 @@ SRC = keymap_common.c \ matrix.c \ led.c \ backlight.c \ + ledmap.c \ twimaster.c \ kimera.c @@ -99,13 +100,17 @@ CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration #SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +USB_6KRO_ENABLE = yes # USB 6key Rollover #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support #PS2_USE_BUSYWAIT = yes BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality KEYMAP_IN_EEPROM_ENABLE = yes # External keymap in eeprom -KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +#KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +SOFTPWM_LED_ENABLE = yes # Enable SoftPWM to drive backlight +FADING_LED_ENABLE = yes # Enable fading backlight BREATHING_LED_ENABLE = yes # Enable breathing backlight - +LEDMAP_ENABLE = yes # Enable LED mapping +LEDMAP_IN_EEPROM_ENABLE = yes # Read LED mapping from eeprom # Search Path diff --git a/keyboard/kimera/Makefile_8M b/keyboard/kimera/Makefile_8M index bced6dee..fe60c6cc 100644 --- a/keyboard/kimera/Makefile_8M +++ b/keyboard/kimera/Makefile_8M @@ -52,6 +52,7 @@ SRC = keymap_common.c \ matrix.c \ led.c \ backlight.c \ + ledmap.c \ twimaster.c \ kimera.c @@ -130,12 +131,17 @@ CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration #SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +USB_6KRO_ENABLE = yes # USB 6key Rollover #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support #PS2_USE_BUSYWAIT = yes BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality KEYMAP_IN_EEPROM_ENABLE = yes # External keymap in eeprom -KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +#KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +SOFTPWM_LED_ENABLE = yes # Enable SoftPWM to drive backlight +FADING_LED_ENABLE = yes # Enable fading backlight BREATHING_LED_ENABLE = yes # Enable breathing backlight +LEDMAP_ENABLE = yes # Enable LED mapping +LEDMAP_IN_EEPROM_ENABLE = yes # Read LED mapping from eeprom # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/kimera/backlight.c b/keyboard/kimera/backlight.c index a0a6f473..1603d5d2 100644 --- a/keyboard/kimera/backlight.c +++ b/keyboard/kimera/backlight.c @@ -19,7 +19,12 @@ along with this program. If not, see . #include #include #include "backlight.h" +#ifdef SOFTPWM_LED_ENABLE +#include "softpwm_led.h" +#else #include "breathing_led.h" +#endif +#include "action.h" #include "kimera.h" #ifdef BACKLIGHT_ENABLE @@ -32,9 +37,16 @@ static const uint8_t backlight_table[] PROGMEM = { 0, 16, 128, 255 }; +#ifdef SOFTPWM_LED_ENABLE +#ifdef FADING_LED_ENABLE +static uint8_t backlight_mode; +#endif +#endif + /* Backlight pin configuration * LED4: PB6 (D10) OC1B */ +#ifndef SOFTPWM_LED_ENABLE void backlight_enable(void) { // Turn on PWM @@ -44,7 +56,9 @@ void backlight_enable(void) TCCR1B |= ((1<. #define MATRIX_SIZE 16 * 16 #define FN_ACTIONS_COUNT 32 #define KEYMAPS_COUNT 3 -#define EECONFIG_KEYMAP_IN_EEPROM 41 +#define EECONFIG_KEYMAP_IN_EEPROM 45 /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST @@ -45,11 +45,21 @@ along with this program. If not, see . /* number of backlight levels */ #ifdef BREATHING_LED_ENABLE +#ifdef FADING_LED_ENABLE +#define BACKLIGHT_LEVELS 8 +#else #define BACKLIGHT_LEVELS 6 +#endif #else #define BACKLIGHT_LEVELS 3 #endif +/* enable customized backlight logic */ +#define BACKLIGHT_CUSTOM + +/* number of leds */ +#define LED_COUNT 4 + /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE @@ -79,4 +89,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +#define NO_SUSPEND_POWER_DOWN + #endif diff --git a/keyboard/kimera/kimera.h b/keyboard/kimera/kimera.h index f46ea5bf..5ece9f84 100644 --- a/keyboard/kimera/kimera.h +++ b/keyboard/kimera/kimera.h @@ -116,9 +116,9 @@ const uint16_t PROGMEM dummy[] = { /* Matrix Mapping in EEPROM */ -#define EECONFIG_ROW_COUNT (uint8_t *)7 -#define EECONFIG_COL_COUNT (uint8_t *)8 -#define EECONFIG_ROW_COL_MAPPING (uint8_t *)9 +#define EECONFIG_ROW_COUNT (uint8_t *)11 +#define EECONFIG_COL_COUNT (uint8_t *)12 +#define EECONFIG_ROW_COL_MAPPING (uint8_t *)13 #define UNCONFIGURED 0xFF /* Functions */ diff --git a/keyboard/kimera/led.c b/keyboard/kimera/led.c index 009640d3..1b6f6a0b 100644 --- a/keyboard/kimera/led.c +++ b/keyboard/kimera/led.c @@ -20,9 +20,11 @@ along with this program. If not, see . #include "led.h" #include "kimera.h" +#ifndef LEDMAP_ENABLE + void led_set(uint8_t usb_led) { - if (usb_led & (1< + +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 . +*/ + +#include +#include "ledmap.h" +#include "kimera.h" + +#ifdef LEDMAP_ENABLE + +static const uint8_t ledmaps[LED_COUNT] PROGMEM = { + [0] = LEDMAP_NUM_LOCK, // LED1 + [1] = LEDMAP_CAPS_LOCK, // LED2 + [2] = LEDMAP_SCROLL_LOCK, // LED3 + [3] = LEDMAP_NO | LEDMAP_BACKLIGHT, // LED4 +}; + +uint8_t ledmap_get_code(uint8_t index) +{ + return pgm_read_byte(&ledmaps[index]); +} + +void ledmap_led_init(void) +{ + LED1_DDR |= (1<