Keyboard: LED fixes for Kinesis Stapelberg controller, and keymap changes (#3564)

* Rules for vitamins_included

Added a section to disable RGB underglow for the Let's Split
   Vitamins Included board.

* fixing ortho_4x12 configs

* Using upstream/master version instead

* Additions and Corrections

Corrected the Kinesis/Stapelberg's .c file to allow LEDs to work
Removed excess cruft from my Kinesis keymap to reflect this change
Other minor tweaks and adjustments to my ortho_4x12 and 5x12 layouts

* Updated readme
This commit is contained in:
Xyverz 2018-08-04 09:01:26 -07:00 committed by Drashna Jaelre
parent f8a915a2db
commit 3e8f272873
6 changed files with 49 additions and 114 deletions

View file

@ -299,58 +299,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
};
// getting the LEDs working...
void led_set_user(uint8_t usb_led) {
DDRF |= (1<<0); // Keypad LED
if (usb_led & (1<<USB_LED_COMPOSE)) {
PORTF |= (1<<0);
} else {
PORTF &= ~(1<<0);
}
DDRF |= (1<<1); // ScrLock LED
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
PORTF |= (1<<1);
} else {
PORTF &= ~(1<<1);
}
DDRF |= (1<<2); // NumLock LED
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
PORTF |= (1<<2);
} else {
PORTF &= ~(1<<2);
}
DDRF |= (1<<3); // CapsLock LED
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
PORTF |= (1<<3);
} else {
PORTF &= ~(1<<3);
}
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
void led_set_user(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
PORTF |= (1<<2);
} else {
PORTF &= ~(1<<2);
}
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
PORTF |= (1<<3);
} else {
PORTF &= ~(1<<3);
}
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
PORTF |= (1<<1);
} else {
PORTF &= ~(1<<1);
}
}

View file

@ -10,9 +10,11 @@ The QWERTY layout shown here is based entirely on the Kinesis Advantage layout.
I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts.
As of August 4 2018, I've got the LEDs working ... mostly. Caps Lock and Num Lock LEDs work for me. The Scroll Lock LED does work on my keyboard, but I can't get it to work when I use the Scroll Lock key on my keyboard. I also have no idea how to get the Num Pad LED working when I switch to the Numpad layer.
## Still to do:
* Implement the CapsLock, NumLock, and ScrLck LEDs on the off-chance that I decide to actually solder some to the keyboard.
* Figure out how to make the Numpad and ScrLck LEDs work properly.
### Function Keys on All Layers (keypad toggles):
,-----------------------------------------------------------------.

View file

@ -27,65 +27,35 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
}
void led_init_ports() {
// * Set our LED pins as output
DDRF |= (1<<0); // Keypad LED
DDRF |= (1<<1); // ScrLock LED
DDRF |= (1<<2); // NumLock LED
DDRF |= (1<<3); // CapsLock LED
// * Set our LED pins as output
DDRF |= (1<<0); // Keypad LED
DDRF |= (1<<1); // ScrLock LED
DDRF |= (1<<2); // NumLock LED
DDRF |= (1<<3); // CapsLock LED
}
void led_set_kb(uint8_t usb_led) {
DDRF |= (1<<0); // Keypad LED
if (usb_led & (1<<USB_LED_COMPOSE)) {
PORTF |= (1<<0);
} else {
PORTF &= ~(1<<0);
}
if (usb_led & (1<<USB_LED_COMPOSE)) {
PORTF &= ~(1<<0);
} else {
PORTF |= (1<<0);
}
DDRF |= (1<<1); // ScrLock LED
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
PORTF |= (1<<1);
} else {
PORTF &= ~(1<<1);
}
DDRF |= (1<<2); // NumLock LED
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
PORTF |= (1<<2);
} else {
PORTF &= ~(1<<2);
}
DDRF |= (1<<3); // CapsLock LED
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
PORTF |= (1<<3);
} else {
PORTF &= ~(1<<3);
}
led_set_user(usb_led);
inline void kinesis_keypad_led_on(void) { DDRF |= (1<<0); PORTF |= (1<<0); }
inline void kinesis_scroll_led_on(void) { DDRF |= (1<<1); PORTF |= (1<<1); }
inline void kinesis_num_led_on(void) { DDRF |= (1<<2); PORTF |= (1<<2); }
inline void kinesis_caps_led_on(void) { DDRF |= (1<<3); PORTF |= (1<<3); }
inline void kinesis_keypad_led_off(void) { DDRF &= ~(1<<0); PORTF &= ~(1<<0); }
inline void kinesis_scroll_led_off(void) { DDRF &= ~(1<<1); PORTF &= ~(1<<1); }
inline void kinesis_num_led_off(void) { DDRF &= ~(1<<2); PORTF &= ~(1<<2); }
inline void kinesis_caps_led_off(void) { DDRF &= ~(1<<3); PORTF &= ~(1<<3); }
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
PORTF &= ~(1<<1);
} else {
PORTF |= (1<<1);
}
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
PORTF &= ~(1<<2);
} else {
PORTF |= (1<<2);
}
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
PORTF &= ~(1<<3);
} else {
PORTF |= (1<<3);
}
}
/* This is the old code that has the port information in it.
inline void kinesis_keypad_led_on(void) { DDRF |= (1<<0); PORTF |= (1<<0); }
inline void kinesis_scroll_led_on(void) { DDRF |= (1<<1); PORTF |= (1<<1); }
inline void kinesis_num_led_on(void) { DDRF |= (1<<2); PORTF |= (1<<2); }
inline void kinesis_caps_led_on(void) { DDRF |= (1<<3); PORTF |= (1<<3); }
inline void kinesis_keypad_led_off(void) { DDRF &= ~(1<<0); PORTF &= ~(1<<0); }
inline void kinesis_scroll_led_off(void) { DDRF &= ~(1<<1); PORTF &= ~(1<<1); }
inline void kinesis_num_led_off(void) { DDRF &= ~(1<<2); PORTF &= ~(1<<2); }
inline void kinesis_caps_led_off(void) { DDRF &= ~(1<<3); PORTF &= ~(1<<3); }
*/

View file

@ -15,12 +15,11 @@
#define RGBLED_NUM 12
#elif defined(KEYBOARD_lets_split_rev2)
#define RGBLED_NUM 8
#elif defined(KEYBOARD_jj40)
#define RGBLED_NUM 5
#else
#define RGBLED_NUM 1
#endif
#ifdef KEYBOARD_jj40
#define RGBLED_NUM 5
#endif
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 8

View file

@ -175,6 +175,16 @@ void persistent_default_layer_set(uint16_t default_layer) {
default_layer_set(default_layer);
}
void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
DDRD &= ~(1<<5);
PORTD &= ~(1<<5);
DDRB &= ~(1<<0);
PORTB &= ~(1<<0);
#endif
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:

View file

@ -1,5 +1,5 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
@ -7,12 +7,18 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
ifneq ("$(KEYBOARD)","nyquist")
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
else
RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = no
endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend