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<