Skip to content

Commit

Permalink
Keyboard: LED fixes for Kinesis Stapelberg controller, and keymap cha…
Browse files Browse the repository at this point in the history
…nges (qmk#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
  • Loading branch information
Xyverz authored and drashna committed Aug 4, 2018
1 parent f8a915a commit 3e8f272
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 117 deletions.
52 changes: 0 additions & 52 deletions keyboards/kinesis/keymaps/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
4 changes: 3 additions & 1 deletion keyboards/kinesis/keymaps/xyverz/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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):
,-----------------------------------------------------------------.
Expand Down
86 changes: 28 additions & 58 deletions keyboards/kinesis/stapelberg/stapelberg.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

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_COMPOSE)) {
PORTF &= ~(1<<0);
} else {
PORTF |= (1<<0);
}

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); }
*/
5 changes: 2 additions & 3 deletions layouts/community/ortho_4x12/xyverz/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions layouts/community/ortho_5x12/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
12 changes: 9 additions & 3 deletions layouts/community/ortho_5x12/xyverz/rules.mk
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
# 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)
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
Expand Down

0 comments on commit 3e8f272

Please sign in to comment.