updated keymap for new led functions
This commit is contained in:
		
							parent
							
								
									2c5b551970
								
							
						
					
					
						commit
						5df74f3ba7
					
				
					 4 changed files with 242 additions and 201 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
#include "infinity60.h"
 | 
			
		||||
#include "led_controller.h"
 | 
			
		||||
#include "keymap_jpetermans.h"
 | 
			
		||||
 | 
			
		||||
//Helpful Defines
 | 
			
		||||
#define _______ KC_TRNS
 | 
			
		||||
| 
						 | 
				
			
			@ -12,8 +11,33 @@
 | 
			
		|||
#define _MEDIA 3
 | 
			
		||||
#define _TILDE 4
 | 
			
		||||
 | 
			
		||||
//IS31 chip has 8 available led pages, using 0 for all leds and 7 for single toggles
 | 
			
		||||
#define max_pages 6 
 | 
			
		||||
 | 
			
		||||
enum ic60_keycodes {
 | 
			
		||||
  NUMPAD,
 | 
			
		||||
  FNAV,
 | 
			
		||||
  MEDIA,
 | 
			
		||||
  TILDE,
 | 
			
		||||
  CTLALTDEL,
 | 
			
		||||
  BACKLIGHT,
 | 
			
		||||
  BRIGHT,
 | 
			
		||||
  DIM,
 | 
			
		||||
  BREATH,
 | 
			
		||||
  ALL,
 | 
			
		||||
  GAME,
 | 
			
		||||
  MODE_SINGLE,
 | 
			
		||||
  MODE_PAGE,
 | 
			
		||||
  MODE_FLASH
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
uint8_t current_layer_global = 0;
 | 
			
		||||
uint8_t led_mode_global = MODE_SINGLE;
 | 
			
		||||
uint8_t backlight_status_global = 1; //init on/off state of backlight
 | 
			
		||||
uint32_t led_layer_state = 0;
 | 
			
		||||
 | 
			
		||||
/* ==================================
 | 
			
		||||
 *             KEYMAPS 
 | 
			
		||||
 *             KEYMAPS
 | 
			
		||||
 * ==================================*/
 | 
			
		||||
 | 
			
		||||
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
| 
						 | 
				
			
			@ -35,19 +59,10 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
        KC_ESC,    KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSLS,KC_NO,\
 | 
			
		||||
        KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC,KC_RBRC,KC_BSPC,   \
 | 
			
		||||
        TT(_FNAV), KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,KC_ENT,         \
 | 
			
		||||
        F(1),   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_NO,          \
 | 
			
		||||
        KC_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,F(TILDE),KC_NO,          \
 | 
			
		||||
        KC_LCTL,   KC_LGUI,KC_LALT,               KC_SPC,          KC_RALT,TG(_NUMPAD),MO(_MEDIA), KC_RCTL         \
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* F-, arrow, and media keys */
 | 
			
		||||
    [_FNAV] = KEYMAP( \
 | 
			
		||||
        KC_GRV, KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, _______,KC_NO,\
 | 
			
		||||
        KC_CAPS,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,_______,_______,KC_DEL,  \
 | 
			
		||||
        _______,M(0),KC_BTN2,_______,_______,_______,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_INS,_______,_______,     \
 | 
			
		||||
        _______,KC_APP,KC_BTN1,KC_CALC,_______,_______,KC_END,_______,_______,_______,_______,_______,KC_NO,         \
 | 
			
		||||
        _______,_______,_______,               _______,             F(0),KC_NLCK,_______,_______   \
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* numpad */
 | 
			
		||||
    [_NUMPAD] = KEYMAP( \
 | 
			
		||||
        _______,_______,_______,_______,_______,_______,_______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______,_______,_______,KC_NO,\
 | 
			
		||||
| 
						 | 
				
			
			@ -57,12 +72,21 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
        _______,_______,_______,               MO(_BASE),           _______,_______,_______,_______   \
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* F-, arrow, and media keys */
 | 
			
		||||
    [_FNAV] = KEYMAP( \
 | 
			
		||||
        KC_GRV, KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, _______,KC_NO,\
 | 
			
		||||
        KC_CAPS,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,_______,_______,KC_DEL,  \
 | 
			
		||||
        _______,M(0),KC_BTN2,_______,_______,_______,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_INS,_______,_______,     \
 | 
			
		||||
        _______,KC_APP,KC_BTN1,KC_CALC,_______,_______,KC_END,_______,_______,_______,_______,_______,KC_NO,         \
 | 
			
		||||
        _______,_______,_______,               _______,         F(CTLALTDEL),KC_NLCK,_______,_______   \
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* media */
 | 
			
		||||
    [_MEDIA] = KEYMAP( \
 | 
			
		||||
        _______,_______,_______,_______,_______,_______,_______, _______, _______, _______,KC_MUTE, KC_VOLD, KC_VOLU,_______,KC_NO,\
 | 
			
		||||
        _______,F(MODE_SINGLE),F(MODE_PAGE),F(MODE_FLASH),_______,_______,_______, _______, _______, _______,KC_MUTE, KC_VOLD, KC_VOLU,_______,KC_NO,\
 | 
			
		||||
        _______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______,_______,\
 | 
			
		||||
        _______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______,     \
 | 
			
		||||
        _______,_______,F(2),F(3),F(4),F(5),F(6),F(7), KC_MPRV, KC_MNXT,KC_MSTP, _______,KC_NO,       \
 | 
			
		||||
        _______,_______,_______,_______,_______,F(GAME),_______, _______, _______, _______,_______, _______,_______,     \
 | 
			
		||||
        _______,_______,F(ALL) ,F(BRIGHT),F(DIM),F(BACKLIGHT),_______, _______, KC_MPRV, KC_MNXT,KC_MSTP, _______,KC_NO,       \
 | 
			
		||||
        _______,_______,_______,               KC_MPLY,             _______,_______, _______,_______      \
 | 
			
		||||
    ),
 | 
			
		||||
    /* ~ */
 | 
			
		||||
| 
						 | 
				
			
			@ -91,21 +115,20 @@ enum function_id {
 | 
			
		|||
enum macro_id {
 | 
			
		||||
    ACTION_LEDS_ALL,
 | 
			
		||||
    ACTION_LEDS_GAME,
 | 
			
		||||
    ACTION_LEDS_NAV,
 | 
			
		||||
    ACTION_LEDS_MEDIA,
 | 
			
		||||
    ACTION_LEDS_NUMPAD,
 | 
			
		||||
    ACTION_LEDS_TEST
 | 
			
		||||
    ACTION_LEDS_BACKLIGHT,
 | 
			
		||||
    ACTION_LEDS_BRIGHT,
 | 
			
		||||
    ACTION_LEDS_DIM,
 | 
			
		||||
    ACTION_LEDS_BREATH,
 | 
			
		||||
    ACTION_LEDS_SINGLE,
 | 
			
		||||
    ACTION_LEDS_PAGE,
 | 
			
		||||
    ACTION_LEDS_FLASH,
 | 
			
		||||
};
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
/* ==================================
 | 
			
		||||
 *          LED MAPPING 
 | 
			
		||||
 *          LED MAPPING
 | 
			
		||||
 * ==================================*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
   Configuring led control can be done as
 | 
			
		||||
   1. full keyboard at a time - define led array, or
 | 
			
		||||
   2. individual led - send specific led address (defined in keymap.h)
 | 
			
		||||
 | 
			
		||||
    Infinity60 LED MAP
 | 
			
		||||
    11 12 13 14 15 16 17 18 21 22 23 24 25  26 27*
 | 
			
		||||
     28 31 32 33 34 35 36 37 38 41 42 43 44 45
 | 
			
		||||
| 
						 | 
				
			
			@ -113,163 +136,182 @@ enum macro_id {
 | 
			
		|||
      63 64 65 66 67 68 71 72 73 74 75      76 77*
 | 
			
		||||
    78  81  82       83         84  85  86  87
 | 
			
		||||
    *Unused in Alphabet Layout
 | 
			
		||||
 | 
			
		||||
    The full keyboard arrays map to the mcu's LED pages 
 | 
			
		||||
    (8 available) desribed in led_controller.c
 | 
			
		||||
   
 | 
			
		||||
    0x24 (pcb row 1) is first byte of PWM portion of LED page
 | 
			
		||||
    0x34 (pcb row 2) is 17th byte of PWM portion of LED page
 | 
			
		||||
    array translates to row and column positions
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
//LED Layer indicator (1 per layer 3-7)
 | 
			
		||||
const uint8_t led_single_layer[5] = {
 | 
			
		||||
  12,13,14,15,16
 | 
			
		||||
};
 | 
			
		||||
//LED Page 1 - All off
 | 
			
		||||
//LED Page 2 - All on
 | 
			
		||||
//LED Page 3 - _Nav
 | 
			
		||||
const uint8_t led_nav[33] = {
 | 
			
		||||
  11,12,13,14,15,16,17,18,21,22,23,24,25,
 | 
			
		||||
  28,                   37,38,41,42,45,
 | 
			
		||||
  46,47,48,            54,55,56,57,58,
 | 
			
		||||
     64,65,66,      71,
 | 
			
		||||
                                  84,85
 | 
			
		||||
};
 | 
			
		||||
//LED Page 4 - _Numpad
 | 
			
		||||
const uint8_t led_numpad[17] = {
 | 
			
		||||
//======== full page arrays =========
 | 
			
		||||
//LED Page 1 - _Numpad
 | 
			
		||||
//any change in array size needs to be mirrored in matrix_init_user
 | 
			
		||||
uint8_t led_numpad[16] = { 
 | 
			
		||||
  18,21,22,23,
 | 
			
		||||
  37,38,41,42,
 | 
			
		||||
  55,56,57,58,
 | 
			
		||||
  72,73,74,75,
 | 
			
		||||
           85
 | 
			
		||||
  72,73,74,75
 | 
			
		||||
};
 | 
			
		||||
//LED Page 5 - _Media
 | 
			
		||||
const uint8_t led_media[12] = {
 | 
			
		||||
             23,24,25,
 | 
			
		||||
     38,
 | 
			
		||||
  55,56,57,
 | 
			
		||||
      73,74,75,
 | 
			
		||||
  83,          86
 | 
			
		||||
//LED Page 2 - _Nav
 | 
			
		||||
uint8_t led_nav[12] = {
 | 
			
		||||
                        38,
 | 
			
		||||
  47,48,              55,56,57,
 | 
			
		||||
     64,65,66
 | 
			
		||||
};
 | 
			
		||||
//LED Page 6 - _Game
 | 
			
		||||
const uint8_t led_game[5] = {
 | 
			
		||||
  //row 1
 | 
			
		||||
//LED Page 3 - _Media
 | 
			
		||||
uint8_t led_media[15] = {
 | 
			
		||||
  12,13,14,           23,24,25,
 | 
			
		||||
     65,66,67,68,    73,74,75,
 | 
			
		||||
           83,          86
 | 
			
		||||
};
 | 
			
		||||
//LED Page 4 - _Game "WASD"
 | 
			
		||||
uint8_t led_game[5] = {
 | 
			
		||||
  11,
 | 
			
		||||
  //row 2
 | 
			
		||||
  //row 3
 | 
			
		||||
  32,
 | 
			
		||||
  //row 4
 | 
			
		||||
  47, 48,
 | 
			
		||||
  //row 5
 | 
			
		||||
  51
 | 
			
		||||
  //row 6
 | 
			
		||||
  //row 7
 | 
			
		||||
  //row 8
 | 
			
		||||
        32,
 | 
			
		||||
     47,48,51
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//======== qmk functions =========
 | 
			
		||||
const uint16_t fn_actions[] = {
 | 
			
		||||
    [0] = ACTION_KEY(LALT(LCTL(KC_DEL))),
 | 
			
		||||
    [1] = ACTION_LAYER_MODS(_TILDE, MOD_LSFT),
 | 
			
		||||
    [2] = ACTION_FUNCTION(ACTION_LEDS_ALL),
 | 
			
		||||
    [3] = ACTION_FUNCTION(ACTION_LEDS_GAME),
 | 
			
		||||
    [4] = ACTION_FUNCTION(ACTION_LEDS_MEDIA),
 | 
			
		||||
    [5] = ACTION_FUNCTION(ACTION_LEDS_NAV),
 | 
			
		||||
    [6] = ACTION_FUNCTION(ACTION_LEDS_NUMPAD),
 | 
			
		||||
    [7] = ACTION_FUNCTION(ACTION_LEDS_TEST)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    [CTLALTDEL] = ACTION_KEY(LALT(LCTL(KC_DEL))),
 | 
			
		||||
    [TILDE] = ACTION_LAYER_MODS(_TILDE, MOD_LSFT),
 | 
			
		||||
    [ALL] = ACTION_FUNCTION(ACTION_LEDS_ALL),
 | 
			
		||||
    [GAME] = ACTION_FUNCTION(ACTION_LEDS_GAME),
 | 
			
		||||
    [BACKLIGHT] = ACTION_FUNCTION(ACTION_LEDS_BACKLIGHT),
 | 
			
		||||
    [BRIGHT] = ACTION_FUNCTION(ACTION_LEDS_BRIGHT),
 | 
			
		||||
    [DIM] = ACTION_FUNCTION(ACTION_LEDS_DIM),
 | 
			
		||||
    [BREATH] = ACTION_FUNCTION(ACTION_LEDS_BREATH),
 | 
			
		||||
    [MODE_SINGLE] = ACTION_FUNCTION(ACTION_LEDS_SINGLE),
 | 
			
		||||
    [MODE_PAGE] = ACTION_FUNCTION(ACTION_LEDS_PAGE),
 | 
			
		||||
    [MODE_FLASH] = ACTION_FUNCTION(ACTION_LEDS_FLASH),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* custom action function */
 | 
			
		||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		||||
  (void)opt;
 | 
			
		||||
  msg_t msg;
 | 
			
		||||
 | 
			
		||||
  switch(id) {
 | 
			
		||||
    case ACTION_LEDS_ALL:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        // signal the LED controller thread
 | 
			
		||||
        led_mode_global = led_mode_global == ALL ? MODE_SINGLE : ALL;
 | 
			
		||||
        msg=(TOGGLE_ALL << 8) | 0;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case ACTION_LEDS_BACKLIGHT:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        backlight_status_global ^= 1;
 | 
			
		||||
        msg=(TOGGLE_BACKLIGHT << 8) | (backlight_status_global);
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case ACTION_LEDS_GAME:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        // signal the LED controller thread
 | 
			
		||||
        msg=(TOGGLE_LAYER_LEDS << 8) | 6;
 | 
			
		||||
        led_mode_global = led_mode_global == GAME ? MODE_SINGLE : GAME;
 | 
			
		||||
 | 
			
		||||
        msg=(DISPLAY_PAGE << 8) | 4;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case ACTION_LEDS_MEDIA:
 | 
			
		||||
 | 
			
		||||
    case ACTION_LEDS_BRIGHT:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        // signal the LED controller thread
 | 
			
		||||
        msg=(TOGGLE_LAYER_LEDS << 8) | 5;
 | 
			
		||||
        msg=(STEP_BRIGHTNESS << 8) | 1;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case ACTION_LEDS_NAV:
 | 
			
		||||
 | 
			
		||||
    case ACTION_LEDS_DIM:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        // signal the LED controller thread
 | 
			
		||||
        msg=(OFF_LED << 8) | 12;
 | 
			
		||||
        msg=(STEP_BRIGHTNESS << 8) | 0;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case ACTION_LEDS_NUMPAD:
 | 
			
		||||
 | 
			
		||||
    case ACTION_LEDS_BREATH:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        // signal the LED controller thread
 | 
			
		||||
        msg=(ON_LED << 8) | 12;
 | 
			
		||||
        msg=(TOGGLE_BREATH << 8) | 0;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case ACTION_LEDS_TEST:
 | 
			
		||||
      if(record->event.pressed) {
 | 
			
		||||
        // signal the LED controller thread
 | 
			
		||||
        msg=(TOGGLE_LED << 8) | 12;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    //set led_mode for matrix_scan to toggle leds
 | 
			
		||||
    case ACTION_LEDS_SINGLE:
 | 
			
		||||
      led_mode_global = MODE_SINGLE;
 | 
			
		||||
      break;
 | 
			
		||||
    case ACTION_LEDS_PAGE:
 | 
			
		||||
      led_mode_global = MODE_PAGE;
 | 
			
		||||
      break;
 | 
			
		||||
    case ACTION_LEDS_FLASH:
 | 
			
		||||
      led_mode_global = MODE_FLASH;
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		||||
{
 | 
			
		||||
    switch(id) {
 | 
			
		||||
      case 0: 
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      case 1:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Runs just one time when the keyboard initializes.
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
    xprintf("init start");
 | 
			
		||||
 | 
			
		||||
    led_controller_init();
 | 
			
		||||
 | 
			
		||||
//TODO: do pages need to be written at init or ok on demand?
 | 
			
		||||
/* Write pages */
 | 
			
		||||
    write_led_page(3, led_nav, 33);
 | 
			
		||||
    chThdSleepMilliseconds(5);
 | 
			
		||||
    // Write predefined led pages.
 | 
			
		||||
    write_led_page(_NUMPAD, led_numpad, 16);
 | 
			
		||||
    chThdSleepMilliseconds(10);
 | 
			
		||||
 | 
			
		||||
    write_led_page(4, led_numpad, 17);
 | 
			
		||||
    chThdSleepMilliseconds(5);
 | 
			
		||||
    write_led_page(_FNAV, led_nav, 12);
 | 
			
		||||
    chThdSleepMilliseconds(10);
 | 
			
		||||
 | 
			
		||||
    write_led_page(5, led_media, 12);
 | 
			
		||||
    chThdSleepMilliseconds(5);
 | 
			
		||||
    write_led_page(_MEDIA, led_media, 15);
 | 
			
		||||
    chThdSleepMilliseconds(10);
 | 
			
		||||
 | 
			
		||||
    write_led_page(6, led_game, 5);
 | 
			
		||||
    chThdSleepMilliseconds(5);
 | 
			
		||||
    write_led_page(4, led_game, 5);
 | 
			
		||||
    chThdSleepMilliseconds(1000);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Runs constantly in the background, in a loop.
 | 
			
		||||
// Loops constantly in the background.
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
  uint8_t page;
 | 
			
		||||
  uint8_t led_pin_byte;
 | 
			
		||||
  msg_t msg;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
  if (backlight_status_global == 0) {//backlight is off, skip the rest
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (led_layer_state != layer_state && led_mode_global != GAME && led_mode_global != ALL) {
 | 
			
		||||
    //check mode
 | 
			
		||||
    //Turn on layer indicator or page depending on mode
 | 
			
		||||
    switch(led_mode_global) {
 | 
			
		||||
      case MODE_FLASH: //flash preset page leds then single indicator
 | 
			
		||||
        page = biton32(layer_state) > max_pages ? 7 : biton32(layer_state);
 | 
			
		||||
        msg=(DISPLAY_PAGE << 8) | (page);
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
        chThdSleepMilliseconds(500);
 | 
			
		||||
        //flow to display single layer leds
 | 
			
		||||
 | 
			
		||||
      case MODE_SINGLE: //light layer indicators for all active layers
 | 
			
		||||
        led_pin_byte = layer_state & 0xFF;
 | 
			
		||||
        msg=(DISPLAY_PAGE << 8) | 7;
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
        msg=(1<<16) | (SET_FULL_ROW << 8) | (led_pin_byte);
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case MODE_PAGE: //display pre-defined led page
 | 
			
		||||
        page = biton32(layer_state) > max_pages ? 7 : biton32(layer_state);
 | 
			
		||||
        msg=(DISPLAY_PAGE << 8) | (page);
 | 
			
		||||
        chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
  led_layer_state = layer_state;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue