diff --git a/keyboard/lr94/Makefile b/keyboard/lr94/Makefile
index 5cd80c52..4236bce1 100644
--- a/keyboard/lr94/Makefile
+++ b/keyboard/lr94/Makefile
@@ -51,7 +51,8 @@ TARGET_DIR = .
SRC = keymap_common.c \
matrix.c \
led.c \
- backlight.c
+ backlight.c \
+ ledmap.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
@@ -131,8 +132,12 @@ USB_6KRO_ENABLE = yes # USB 6key Rollover
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
KEYMAP_IN_EEPROM_ENABLE = yes # Read keymap from 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"
diff --git a/keyboard/lr94/Makefile.pjrc b/keyboard/lr94/Makefile.pjrc
index 8de0a556..8605134a 100644
--- a/keyboard/lr94/Makefile.pjrc
+++ b/keyboard/lr94/Makefile.pjrc
@@ -51,7 +51,8 @@ TARGET_DIR = .
SRC = keymap_common.c \
matrix.c \
led.c \
- backlight.c
+ backlight.c \
+ ledmap.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
@@ -101,8 +102,12 @@ USB_6KRO_ENABLE = yes # USB 6key Rollover
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
KEYMAP_IN_EEPROM_ENABLE = yes # Read keymap from 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/lr94/backlight.c b/keyboard/lr94/backlight.c
index beaabd88..ee6f6ebc 100644
--- a/keyboard/lr94/backlight.c
+++ b/keyboard/lr94/backlight.c
@@ -19,7 +19,14 @@ 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"
+
+#ifdef BACKLIGHT_ENABLE
static const uint8_t backlight_table[] PROGMEM = {
0, 16, 128, 255
@@ -27,9 +34,16 @@ static const uint8_t backlight_table[] PROGMEM = {
inline void backlight_set_raw(uint8_t raw);
+#ifdef SOFTPWM_LED_ENABLE
+#ifdef FADING_LED_ENABLE
+static uint8_t backlight_mode;
+#endif
+#endif
+
/* Backlight pin configuration
* PWM: PC6(OC3A)
*/
+#ifndef SOFTPWM_LED_ENABLE
void backlight_enable(void)
{
// Turn on PWM
@@ -48,29 +62,76 @@ void backlight_disable(void)
TCCR3B &= ~( (1<.
#define DEBOUNCE 5
/* number of backlight levels */
+#ifdef SOFTPWM_LED_ENABLE
+#ifdef BREATHING_LED_ENABLE
+#ifdef FADING_LED_ENABLE
+#define BACKLIGHT_LEVELS 8
+#else
+#define BACKLIGHT_LEVELS 6
+#endif
+#else
+#define BACKLIGHT_LEVELS 3
+#endif
+#else
#ifdef BREATHING_LED_ENABLE
#define BREATHING_LED_TIMER1
#define BACKLIGHT_LEVELS 6
#else
#define BACKLIGHT_LEVELS 3
#endif
+#endif
#define BACKLIGHT_CUSTOM
+/* number of leds */
+#define LED_COUNT 2
+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboard/lr94/keymap_common.c b/keyboard/lr94/keymap_common.c
index 6ab88064..5d03cffe 100644
--- a/keyboard/lr94/keymap_common.c
+++ b/keyboard/lr94/keymap_common.c
@@ -17,7 +17,7 @@ along with this program. If not, see .
#include "keymap_common.h"
/* translates key to keycode */
-uint8_t keymap_key_to_keycode(uint8_t layer, key_t key)
+uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
#ifndef KEYMAP_IN_EEPROM_ENABLE
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
diff --git a/keyboard/lr94/keymap_default.c b/keyboard/lr94/keymap_default.c
index cf5a4da8..e8429dfb 100644
--- a/keyboard/lr94/keymap_default.c
+++ b/keyboard/lr94/keymap_default.c
@@ -99,3 +99,18 @@ uint16_t fn_actions_count(void) {
return sizeof(fn_actions) / sizeof(fn_actions[0]);
}
#endif
+
+enum macro_id {
+ KEYPAD_00 = 0,
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch (id) {
+ case KEYPAD_00:
+ return (record->event.pressed ?
+ MACRO( T(P0), T(P0), END ) :
+ MACRO_NONE );
+ }
+ return MACRO_NONE;
+}
diff --git a/keyboard/lr94/led.c b/keyboard/lr94/led.c
index 5899603f..a028040e 100644
--- a/keyboard/lr94/led.c
+++ b/keyboard/lr94/led.c
@@ -20,6 +20,8 @@ along with this program. If not, see .
#include "led.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"
+
+
+#ifdef LEDMAP_ENABLE
+
+static const uint16_t ledmaps[LED_COUNT] PROGMEM = {
+ [0] = LEDMAP_CAPS_LOCK, // CapsLock - PB2
+ [1] = LEDMAP_BACKLIGHT, // PWM - PC6
+};
+
+ledmap_t ledmap_get_code(uint8_t index)
+{
+ return (ledmap_t) { .code = pgm_read_word(&ledmaps[index]) };
+}
+
+void ledmap_led_init(void)
+{
+ DDRB |= (1<