diff --git a/keyboard/RedScarfII/Makefile b/keyboard/RedScarfII/Makefile index d007c36e..2ad34c63 100644 --- a/keyboard/RedScarfII/Makefile +++ b/keyboard/RedScarfII/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) @@ -127,12 +128,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_EX_ENABLE = yes # External keymap in eeprom -KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +KEYMAP_IN_EEPROM_ENABLE = yes # Read keymap from 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/RedScarfII/Makefile.pjrc b/keyboard/RedScarfII/Makefile.pjrc index 3bfcc23f..ba0137ec 100644 --- a/keyboard/RedScarfII/Makefile.pjrc +++ b/keyboard/RedScarfII/Makefile.pjrc @@ -39,7 +39,7 @@ #---------------------------------------------------------------------------- # Target file name (without extension). -TARGET = RedScarfII__pjrc +TARGET = RedScarfII_pjrc # Directory common source filess exist TOP_DIR = ../.. @@ -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) @@ -99,9 +100,13 @@ COMMAND_ENABLE = yes # Commands for debug and configuration #NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -KEYMAP_EX_ENABLE = yes # External keymap in eeprom -KEYMAP_SECTION_ENABLE = yes # Fixed address keymap for keymap editor +KEYMAP_IN_EEPROM_ENABLE = yes # Read keymap from 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 # Search Path diff --git a/keyboard/RedScarfII/backlight.c b/keyboard/RedScarfII/backlight.c index 63931eff..e49d33e5 100644 --- a/keyboard/RedScarfII/backlight.c +++ b/keyboard/RedScarfII/backlight.c @@ -19,33 +19,49 @@ 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 -void backlight_enable(void); -void backlight_disable(void); -inline void backlight_set_raw(uint8_t raw); +static uint8_t backlight_mode; static const uint8_t backlight_table[] PROGMEM = { 0, 16, 128, 255 }; +void backlight_enable(void); +void backlight_disable(void); +inline void backlight_set_raw(uint8_t raw); + /* Backlight pin configuration * PWM: PB7(OC1C) */ void backlight_enable(void) { +#ifdef SOFTPWM_LED_ENABLE + DDRB |= (1<. /* 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 +#define LED_COUNT 4 + /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/RedScarfII/keymap_common.c b/keyboard/RedScarfII/keymap_common.c index ae934eea..6ab88064 100644 --- a/keyboard/RedScarfII/keymap_common.c +++ b/keyboard/RedScarfII/keymap_common.c @@ -19,7 +19,7 @@ along with this program. If not, see . /* translates key to keycode */ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) { -#ifndef KEYMAP_EX_ENABLE +#ifndef KEYMAP_IN_EEPROM_ENABLE return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); #else return eeconfig_read_keymap_key(layer, key.row, key.col); @@ -30,7 +30,7 @@ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) action_t keymap_fn_to_action(uint8_t keycode) { return (action_t) { -#ifndef KEYMAP_EX_ENABLE +#ifndef KEYMAP_IN_EEPROM_ENABLE .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) #else .code = eeconfig_read_keymap_fn_action(FN_INDEX(keycode)) @@ -38,7 +38,7 @@ action_t keymap_fn_to_action(uint8_t keycode) }; } -#ifdef KEYMAP_EX_ENABLE +#ifdef KEYMAP_IN_EEPROM_ENABLE const uint8_t* keymaps_pointer(void) { return (const uint8_t*)keymaps; } diff --git a/keyboard/RedScarfII/keymap_common.h b/keyboard/RedScarfII/keymap_common.h index d478042b..d3bef5bd 100644 --- a/keyboard/RedScarfII/keymap_common.h +++ b/keyboard/RedScarfII/keymap_common.h @@ -28,7 +28,7 @@ along with this program. If not, see . #include "print.h" #include "debug.h" #include "keymap.h" -#include "keymap_ex.h" +#include "keymap_in_eeprom.h" extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; diff --git a/keyboard/RedScarfII/keymap_default.c b/keyboard/RedScarfII/keymap_default.c index aa3011f3..e8b39626 100644 --- a/keyboard/RedScarfII/keymap_default.c +++ b/keyboard/RedScarfII/keymap_default.c @@ -81,7 +81,7 @@ const uint16_t fn_actions[] PROGMEM = { [4] = ACTION_LAYER_TOGGLE(2) }; -#ifdef KEYMAP_EX_ENABLE +#ifdef KEYMAP_IN_EEPROM_ENABLE uint16_t keys_count(void) { return sizeof(keymaps) / sizeof(keymaps[0]) * MATRIX_ROWS * MATRIX_COLS; } diff --git a/keyboard/RedScarfII/led.c b/keyboard/RedScarfII/led.c index 40e85e3f..4d4439e9 100644 --- a/keyboard/RedScarfII/led.c +++ b/keyboard/RedScarfII/led.c @@ -19,6 +19,8 @@ along with this program. If not, see . #include "stdint.h" #include "led.h" +#ifndef LEDMAP_ENABLE + /* LED pin configuration * CapsLock: PC7 * NumLock: PE6 @@ -56,3 +58,5 @@ void led_set(uint8_t usb_led) PORTC &= ~(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 uint8_t ledmaps[LED_COUNT] PROGMEM = { + [0] = LEDMAP_CAPS_LOCK | LEDMAP_BACKLIGHT, // CapsLock + [1] = LEDMAP_NUM_LOCK | LEDMAP_BACKLIGHT, // NumLock + [2] = LEDMAP_SCROLL_LOCK | LEDMAP_BACKLIGHT, // Logo + [3] = LEDMAP_BACKLIGHT, // Backlight +}; + +uint8_t ledmap_get_code(uint8_t index) +{ + return pgm_read_byte(&ledmaps[index]); +} + +/* LED pin configration + * CapsLock: PC7 + * NumLock: PE6 + * Logo: PC6 + * Backlight: PB7 + */ +void ledmap_led_init(void) +{ + DDRC |= (1<