~ruther/qmk_firmware

4a6cfb06c5aafb353ddfa056bfa69ae82b5fc894 — Joe Wasson 5 years ago a9a2817
TMO50: use layer_state_set_kb at keyboard level (#10150)

* Change TMO to use layer_state_set_kb as is customary at the keyboard level.

This also factors out `process_indicator_led` to a separate method.
2 files changed, 31 insertions(+), 11 deletions(-)

M keyboards/tmo50/tmo50.c
M keyboards/tmo50/tmo50.h
M keyboards/tmo50/tmo50.c => keyboards/tmo50/tmo50.c +27 -10
@@ 51,34 51,51 @@ void led_set_kb(uint8_t usb_led) {
	led_set_user(usb_led);
}

uint32_t layer_state_set_user(uint32_t state)
layer_state_t layer_state_set_kb(layer_state_t state)
{
  // if on layer 0, turn on B0 LED, otherwise off.
    if (biton32(state) == 0) {
  state = layer_state_set_user(state);
  process_indicator_led_kb(state);

  return state;
}

__attribute__((weak))
bool process_indicator_led_user(layer_state_t state){
  return true;
}

bool process_indicator_led_kb(layer_state_t state)
{
  if(process_indicator_led_user(state))
  {
    // if on layer 0, turn on B0 LED, otherwise off.
    if (get_highest_layer(state) == 0) {
        PORTB &= ~(1<<PB0);
    } else {
        PORTB |= (1<<PB0);
    }

  // if on layer 1, turn on B1 LED, otherwise off.
    if (biton32(state) == 1) {
    // if on layer 1, turn on B1 LED, otherwise off.
    if (get_highest_layer(state) == 1) {
        PORTB &= ~(1<<PB1);
    } else {
        PORTB |= (1<<PB1);
    }
  // if on layer 2, turn on B2 LED, otherwise off.
    if (biton32(state) == 2) {

    // if on layer 2, turn on B2 LED, otherwise off.
    if (get_highest_layer(state) == 2) {
        PORTB &= ~(1<<PB2);
    } else {
        PORTB |= (1<<PB2);
    }

  // if on layer 3, turn on B3 LED, otherwise off.
    if (biton32(state) == 3) {
    // if on layer 3, turn on B3 LED, otherwise off.
    if (get_highest_layer(state) == 3) {
        PORTB &= ~(1<<PB3);
    } else {
        PORTB |= (1<<PB3);
    }
  }

    return state;
  return true;
}

M keyboards/tmo50/tmo50.h => keyboards/tmo50/tmo50.h +4 -1
@@ 17,6 17,10 @@

#include "quantum.h"

bool process_indicator_led_kb(layer_state_t state);
__attribute__((weak))
bool process_indicator_led_user(layer_state_t state);

/* This a shortcut to help you visually see your layout.
 *
 * The first section contains all of the arguments representing the physical


@@ 51,4 55,3 @@
	{ K20, K21, K22, K23, K24,   K25,   K26,   K27, K28,   K29,   K2A, K2B,   K2C,   K2D },   \
	{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, KC_NO, KC_NO, K3A, KC_NO, KC_NO, KC_NO }  \
}