[Keyboard] Add Launch Pad keymaps (#12490)
Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
		
							parent
							
								
									541e749aa8
								
							
						
					
					
						commit
						a2d5468df3
					
				
					 9 changed files with 923 additions and 246 deletions
				
			
		| 
						 | 
				
			
			@ -42,6 +42,7 @@
 | 
			
		|||
 | 
			
		||||
/* Midi Slider */
 | 
			
		||||
#define SLIDER_PIN F6
 | 
			
		||||
#define MIDI_ADVANCED
 | 
			
		||||
 | 
			
		||||
/* RGB Matrix configuration */
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -49,24 +50,63 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#define RGB_DI_PIN F7
 | 
			
		||||
#ifdef RGB_DI_PIN
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
#    define RGBLED_NUM 22
 | 
			
		||||
#    define RGBLIGHT_HUE_STEP 8
 | 
			
		||||
#    define RGBLIGHT_SAT_STEP 8
 | 
			
		||||
#    define RGBLIGHT_VAL_STEP 8
 | 
			
		||||
#    define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
 | 
			
		||||
#    define RGBLIGHT_SLEEP         /* If defined, the RGB lighting will be switched off when the host goes to sleep */
 | 
			
		||||
/*== all animations enable ==*/
 | 
			
		||||
#    define RGBLIGHT_ANIMATIONS
 | 
			
		||||
// RGB Matrix
 | 
			
		||||
#    ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
#        define DRIVER_LED_TOTAL RGBLED_NUM
 | 
			
		||||
#    endif
 | 
			
		||||
#    define DRIVER_LED_TOTAL RGBLED_NUM
 | 
			
		||||
#    define RGB_MATRIX_KEYPRESSES // reacts to keypresses
 | 
			
		||||
// #    define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
 | 
			
		||||
// #    define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
 | 
			
		||||
#    define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
 | 
			
		||||
#    define RGB_MATRIX_FRAMEBUFFER_EFFECTS
 | 
			
		||||
// #    define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
 | 
			
		||||
// #    define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
 | 
			
		||||
#    define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
 | 
			
		||||
#    define RGB_MATRIX_HUE_STEP 8
 | 
			
		||||
#    define RGB_MATRIX_SAT_STEP 8
 | 
			
		||||
#    define RGB_MATRIX_VAL_STEP 8
 | 
			
		||||
#    define RGB_MATRIX_SPD_STEP 10
 | 
			
		||||
#    define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL  // default mode
 | 
			
		||||
 | 
			
		||||
/* Reduce the firmware size by only enabling the rgb animations you desire. */
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_ALPHAS_MODS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BREATHING
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BAND_SAT
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BAND_VAL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_CYCLE_ALL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_DUAL_BEACON
 | 
			
		||||
// #    define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_RAINBOW_BEACON
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_RAINDROPS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_TYPING_HEATMAP
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_DIGITAL_RAIN
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SPLASH
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_MULTISPLASH
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_SPLASH
 | 
			
		||||
#    define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 | 
			
		||||
#define DEBOUNCE 5
 | 
			
		||||
 | 
			
		||||
#define LOCKING_RESYNC_ENABLE
 | 
			
		||||
 | 
			
		||||
#define MIDI_ADVANCED
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,37 +1,37 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard_name": "Launch Pad",
 | 
			
		||||
    "url": "",
 | 
			
		||||
    "maintainer": "luis-godinez",
 | 
			
		||||
    "width": 4,
 | 
			
		||||
    "height": 5,
 | 
			
		||||
    "layouts": {
 | 
			
		||||
        "LAYOUT_ortho_5x4": {
 | 
			
		||||
            "layout": [
 | 
			
		||||
                {"x":0, "y":0},
 | 
			
		||||
                {"x":1, "y":0},
 | 
			
		||||
                {"x":2, "y":0},
 | 
			
		||||
                {"x":3, "y":0},
 | 
			
		||||
  "keyboard_name": "Launch Pad",
 | 
			
		||||
  "url": "https://ungodly.design/products/launch-pad",
 | 
			
		||||
  "maintainer": "Ungodly Design",
 | 
			
		||||
  "width": 4,
 | 
			
		||||
  "height": 5,
 | 
			
		||||
  "layouts": {
 | 
			
		||||
    "LAYOUT_ortho_5x4": {
 | 
			
		||||
        "layout": [
 | 
			
		||||
            {"x":0, "y":0},
 | 
			
		||||
            {"x":1, "y":0},
 | 
			
		||||
            {"x":2, "y":0},
 | 
			
		||||
            {"x":3, "y":0},
 | 
			
		||||
 | 
			
		||||
                {"x":0, "y":1},
 | 
			
		||||
                {"x":1, "y":1},
 | 
			
		||||
                {"x":2, "y":1},
 | 
			
		||||
                {"x":3, "y":1},
 | 
			
		||||
            {"x":0, "y":1},
 | 
			
		||||
            {"x":1, "y":1},
 | 
			
		||||
            {"x":2, "y":1},
 | 
			
		||||
            {"x":3, "y":1},
 | 
			
		||||
 | 
			
		||||
                {"x":0, "y":2},
 | 
			
		||||
                {"x":1, "y":2},
 | 
			
		||||
                {"x":2, "y":2},
 | 
			
		||||
                {"x":3, "y":2},
 | 
			
		||||
            {"x":0, "y":2},
 | 
			
		||||
            {"x":1, "y":2},
 | 
			
		||||
            {"x":2, "y":2},
 | 
			
		||||
            {"x":3, "y":2},
 | 
			
		||||
 | 
			
		||||
                {"x":0, "y":3},
 | 
			
		||||
                {"x":1, "y":3},
 | 
			
		||||
                {"x":2, "y":3},
 | 
			
		||||
                {"x":3, "y":3},
 | 
			
		||||
            {"x":0, "y":3},
 | 
			
		||||
            {"x":1, "y":3},
 | 
			
		||||
            {"x":2, "y":3},
 | 
			
		||||
            {"x":3, "y":3},
 | 
			
		||||
 | 
			
		||||
                {"x":0, "y":4},
 | 
			
		||||
                {"x":1, "y":4},
 | 
			
		||||
                {"x":2, "y":4},
 | 
			
		||||
                {"x":3, "y":4}
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
            {"x":0, "y":4},
 | 
			
		||||
            {"x":1, "y":4},
 | 
			
		||||
            {"x":2, "y":4},
 | 
			
		||||
            {"x":3, "y":4}
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,242 +17,277 @@
 | 
			
		|||
#include "analog.h"
 | 
			
		||||
#include "qmk_midi.h"
 | 
			
		||||
 | 
			
		||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
			
		||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
			
		||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
			
		||||
// entirely and just use numbers.
 | 
			
		||||
enum layers {
 | 
			
		||||
_BL = 0,
 | 
			
		||||
_NV,
 | 
			
		||||
_FN
 | 
			
		||||
/* Force Numlock on */
 | 
			
		||||
void matrix_init_user (void) {
 | 
			
		||||
  if (!host_keyboard_led_state().num_lock) {
 | 
			
		||||
      tap_code(KC_NUMLOCK);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Custom Layer Up/Down Keystrokes */
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
    KC_LUP = SAFE_RANGE, //cycle layers in up direction
 | 
			
		||||
    KC_LDN //cycle layers in down direction
 | 
			
		||||
};
 | 
			
		||||
#define HIGHEST_LAYER 2 //replace X with your highest layer
 | 
			
		||||
static uint8_t current_layer = 0;
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
  case KC_LUP:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      if (current_layer == HIGHEST_LAYER){
 | 
			
		||||
        current_layer=0;
 | 
			
		||||
      } else {
 | 
			
		||||
        current_layer++;
 | 
			
		||||
      }
 | 
			
		||||
      layer_clear();
 | 
			
		||||
      layer_on(current_layer);
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  case KC_LDN:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      if (current_layer == 0){
 | 
			
		||||
        current_layer=HIGHEST_LAYER;
 | 
			
		||||
      } else {
 | 
			
		||||
        current_layer--;
 | 
			
		||||
      }
 | 
			
		||||
      layer_clear();
 | 
			
		||||
      layer_on(current_layer);
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  default:
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
/* Keymap _BL: (Base Layer) Default Numpad Layer
 | 
			
		||||
 * ,-------------------.
 | 
			
		||||
 * | NV | /  | *  |BK/FN|
 | 
			
		||||
 * |LAYR| /  | *  |BACK |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 7  | 8  | 9  |  -  |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 4  | 5  | 6  |  +  |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 1  | 2  | 3  |     |
 | 
			
		||||
 * |----|----|----| En  |
 | 
			
		||||
 * |    0    | .  |     |
 | 
			
		||||
 * | 1  | 2  | 3  | En  |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 0  | 0  | .  | En  |
 | 
			
		||||
 * `--------------------'
 | 
			
		||||
 */
 | 
			
		||||
 [_BL] = LAYOUT_ortho_5x4(
 | 
			
		||||
   TG(_NV),  KC_PSLS,  KC_PAST,   LT(_FN, KC_BSPC),
 | 
			
		||||
   KC_7,    KC_8,    KC_9,     KC_PMNS,
 | 
			
		||||
   KC_4,    KC_5,    KC_6,     KC_PPLS,
 | 
			
		||||
   KC_1,    KC_2,    KC_3,     KC_PENT,
 | 
			
		||||
   KC_0,    KC_0,  KC_DOT,   KC_PENT
 | 
			
		||||
 [0] = LAYOUT_ortho_5x4(
 | 
			
		||||
   KC_LUP,  KC_PSLS,  KC_PAST, LT(2, KC_BSPC),
 | 
			
		||||
   KC_P7,    KC_P8,    KC_P9,        KC_PMNS,
 | 
			
		||||
   KC_P4,    KC_P5,    KC_P6,        KC_PPLS,
 | 
			
		||||
   KC_P1,    KC_P2,    KC_P3,        KC_PENT,
 | 
			
		||||
   KC_P0,    KC_P0,  KC_PDOT,        KC_PENT
 | 
			
		||||
 ),
 | 
			
		||||
 | 
			
		||||
/* Keymap _NV: Navigation layer
 | 
			
		||||
 * ,-------------------.
 | 
			
		||||
 * |INS |HOME|PGUP|    |
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |DEL |END |PGDN|    |
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |    | UP |    |    |
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |LEFT|DOWN|RIGH|    |
 | 
			
		||||
 * |----|----|----|    |
 | 
			
		||||
 * |         |    |    |
 | 
			
		||||
 * `-------------------'
 | 
			
		||||
 */
 | 
			
		||||
  [_NV] = LAYOUT_ortho_5x4(
 | 
			
		||||
    KC_INS,   KC_HOME,  KC_PGUP,   TG(_NV),
 | 
			
		||||
    KC_DEL,   KC_END,   KC_PGDN,   XXXXXXX,
 | 
			
		||||
    XXXXXXX,  KC_UP,    XXXXXXX,   XXXXXXX,
 | 
			
		||||
    KC_LEFT,  KC_DOWN,  KC_RGHT,   XXXXXXX,
 | 
			
		||||
    XXXXXXX,  XXXXXXX,  XXXXXXX,   XXXXXXX
 | 
			
		||||
  ),
 | 
			
		||||
* ,-------------------.
 | 
			
		||||
* |LAYR|    |    |NUM |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |HOME| UP |PGUP|    |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |LEFT|    |RIGH|    |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |END |DOWN|PGDN| En |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |INS |INS |DEL | En |
 | 
			
		||||
* `-------------------'
 | 
			
		||||
*/
 | 
			
		||||
[1] = LAYOUT_ortho_5x4(
 | 
			
		||||
  KC_LUP, KC_NUMLOCK, XXXXXXX,    XXXXXXX,
 | 
			
		||||
  KC_HOME,   KC_UP,   KC_PGUP,    XXXXXXX,
 | 
			
		||||
  KC_LEFT, XXXXXXX,   KC_RGHT,    XXXXXXX,
 | 
			
		||||
  KC_END,  KC_DOWN,   KC_PGDN,    KC_PENT,
 | 
			
		||||
  KC_INS,   KC_INS,   KC_DEL,     KC_PENT
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/* Keymap _FN: RGB Function Layer
 | 
			
		||||
 * ,-------------------.
 | 
			
		||||
 * |RMOD|RGBP|RTOG| FN |
 | 
			
		||||
 * |LAYR|    |    |RTOG|
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |HUD |HUI |    |    |
 | 
			
		||||
 * |HUD |HUI |    |RGBP|
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |SAD |SAI |    |    |
 | 
			
		||||
 * |SAD |SAI |    |RMOD|
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |VAD |VAS |    |    |
 | 
			
		||||
 * |----|----|----|    |
 | 
			
		||||
 * |RST |    |    |    |
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |RST |RST |    |    |
 | 
			
		||||
 * `-------------------'
 | 
			
		||||
 */
 | 
			
		||||
  [_FN] = LAYOUT_ortho_5x4(
 | 
			
		||||
    RGB_MOD,  RGB_M_P,  RGB_TOG,   _______,
 | 
			
		||||
    RGB_HUD,  RGB_HUI,  XXXXXXX,   XXXXXXX,
 | 
			
		||||
    RGB_SAD,  RGB_SAI,  XXXXXXX,   XXXXXXX,
 | 
			
		||||
  [2] = LAYOUT_ortho_5x4(
 | 
			
		||||
    KC_LUP,  XXXXXXX,  XXXXXXX,   RGB_TOG,
 | 
			
		||||
    RGB_HUD,  RGB_HUI,  XXXXXXX,   RGB_M_P,
 | 
			
		||||
    RGB_SAD,  RGB_SAI,  XXXXXXX,   RGB_MOD,
 | 
			
		||||
    RGB_VAD,  RGB_VAI,  XXXXXXX,   XXXXXXX,
 | 
			
		||||
    RESET,    XXXXXXX,  XXXXXXX,   XXXXXXX
 | 
			
		||||
      RESET,    RESET,  XXXXXXX,   XXXXXXX
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// (Optional) Rotary Encoder, Volume Control
 | 
			
		||||
bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
  if (clockwise) {
 | 
			
		||||
      tap_code(KC_VOLU);
 | 
			
		||||
  } else {
 | 
			
		||||
      tap_code(KC_VOLD);
 | 
			
		||||
  }
 | 
			
		||||
    return true;
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Potentiometer Slider, MIDI Control
 | 
			
		||||
uint8_t divisor = 0;
 | 
			
		||||
 | 
			
		||||
void slider(void) {
 | 
			
		||||
    if (divisor++) { // only run the slider function 1/256 times it's called
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
 | 
			
		||||
void slider(void){
 | 
			
		||||
  if (divisor++) { // only run the slider function 1/256 times it's called
 | 
			
		||||
      return;
 | 
			
		||||
  }
 | 
			
		||||
  midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
    slider();
 | 
			
		||||
  slider();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 0.91" OLED, 128x32 resolution
 | 
			
		||||
#ifdef OLED_DRIVER_ENABLE
 | 
			
		||||
 | 
			
		||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
			
		||||
    return OLED_ROTATION_180;  // flips the display 270 degrees
 | 
			
		||||
	return OLED_ROTATION_180;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
 | 
			
		||||
static void render_rocket_logo(void) {
 | 
			
		||||
  static const char PROGMEM rocket_logo[]={
 | 
			
		||||
    // Rocket Screen
 | 
			
		||||
    // 'home', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
 | 
			
		||||
    0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
 | 
			
		||||
    0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
 | 
			
		||||
    0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
 | 
			
		||||
    0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
 | 
			
		||||
    0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
 | 
			
		||||
    0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
 | 
			
		||||
    0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
 | 
			
		||||
    0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
 | 
			
		||||
    0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
 | 
			
		||||
    0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(rocket_logo, sizeof(rocket_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_nav_logo(void) {
 | 
			
		||||
  static const char PROGMEM nav_logo[]={
 | 
			
		||||
    // Navigation Screen
 | 
			
		||||
    // 'navigation', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40,
 | 
			
		||||
    0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10,
 | 
			
		||||
    0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20,
 | 
			
		||||
    0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1,
 | 
			
		||||
    0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44,
 | 
			
		||||
    0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04,
 | 
			
		||||
    0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
 | 
			
		||||
    0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43,
 | 
			
		||||
    0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91,
 | 
			
		||||
    0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02,
 | 
			
		||||
    0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(nav_logo, sizeof(nav_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_light_logo(void) {
 | 
			
		||||
  static const char PROGMEM light_logo[]={
 | 
			
		||||
    // RGB Screen
 | 
			
		||||
    // 'rgb', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
 | 
			
		||||
    0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
 | 
			
		||||
    0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
 | 
			
		||||
    0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(light_logo, sizeof(light_logo));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
 | 
			
		||||
    static const char PROGMEM gui_layers[][ANIM_SIZE] = {
 | 
			
		||||
      {
 | 
			
		||||
        // Home Screen
 | 
			
		||||
        // 'layer_bl', 128x32px
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
 | 
			
		||||
        0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
        0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
 | 
			
		||||
        0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
 | 
			
		||||
        0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
 | 
			
		||||
        0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
 | 
			
		||||
        0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
 | 
			
		||||
        0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
 | 
			
		||||
        0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
        0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
 | 
			
		||||
        0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
 | 
			
		||||
        0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
 | 
			
		||||
        0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
 | 
			
		||||
        0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
 | 
			
		||||
        0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        // Navigation Screen
 | 
			
		||||
        // 'layer_nav', 128x32px
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40,
 | 
			
		||||
        0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
        0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10,
 | 
			
		||||
        0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20,
 | 
			
		||||
        0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1,
 | 
			
		||||
        0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44,
 | 
			
		||||
        0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
        0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04,
 | 
			
		||||
        0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
 | 
			
		||||
        0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43,
 | 
			
		||||
        0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91,
 | 
			
		||||
        0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02,
 | 
			
		||||
        0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        // RGB Screen
 | 
			
		||||
        // 'layer_rgb', 128x32px
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
 | 
			
		||||
        0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
 | 
			
		||||
        0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
        0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
 | 
			
		||||
        0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
        0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
 | 
			
		||||
        0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
 | 
			
		||||
        0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    switch (get_highest_layer(state)) {
 | 
			
		||||
    case _BL:
 | 
			
		||||
      oled_write_raw_P(gui_layers[0], sizeof(gui_layers[0]) );
 | 
			
		||||
void oled_task_user(void) {
 | 
			
		||||
  switch (get_highest_layer(layer_state)) {
 | 
			
		||||
    case 0:
 | 
			
		||||
      render_rocket_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    case _NV:
 | 
			
		||||
      oled_write_raw_P(gui_layers[1], sizeof(gui_layers[1]) );
 | 
			
		||||
    case 1:
 | 
			
		||||
      render_nav_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    case _FN:
 | 
			
		||||
      oled_write_raw_P(gui_layers[2], sizeof(gui_layers[2]) );
 | 
			
		||||
    case 2:
 | 
			
		||||
      render_light_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      // Or use the write_ln shortcut over adding '\n' to the end of your string
 | 
			
		||||
      oled_write_ln_P(PSTR(" UND"), false);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										293
									
								
								keyboards/ungodly/launch_pad/keymaps/via/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										293
									
								
								keyboards/ungodly/launch_pad/keymaps/via/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,293 @@
 | 
			
		|||
/* Copyright 2020 Ungodly Design <hello@ungodly.design>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
#include "analog.h"
 | 
			
		||||
#include "qmk_midi.h"
 | 
			
		||||
 | 
			
		||||
/* Force Numlock on */
 | 
			
		||||
void matrix_init_user (void) {
 | 
			
		||||
  if (!host_keyboard_led_state().num_lock) {
 | 
			
		||||
      tap_code(KC_NUMLOCK);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Custom Layer Up/Down Keystrokes */
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
    KC_LUP = SAFE_RANGE, //cycle layers in up direction
 | 
			
		||||
    KC_LDN //cycle layers in down direction
 | 
			
		||||
};
 | 
			
		||||
#define HIGHEST_LAYER 2 //replace X with your highest layer
 | 
			
		||||
static uint8_t current_layer = 0;
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
  case KC_LUP:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      if (current_layer == HIGHEST_LAYER){
 | 
			
		||||
        current_layer=0;
 | 
			
		||||
      } else {
 | 
			
		||||
        current_layer++;
 | 
			
		||||
      }
 | 
			
		||||
      layer_clear();
 | 
			
		||||
      layer_on(current_layer);
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  case KC_LDN:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      if (current_layer == 0){
 | 
			
		||||
        current_layer=HIGHEST_LAYER;
 | 
			
		||||
      } else {
 | 
			
		||||
        current_layer--;
 | 
			
		||||
      }
 | 
			
		||||
      layer_clear();
 | 
			
		||||
      layer_on(current_layer);
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  default:
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
/* Keymap _BL: (Base Layer) Default Numpad Layer
 | 
			
		||||
 * ,-------------------.
 | 
			
		||||
 * |LAYR| /  | *  |BACK |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 7  | 8  | 9  |  -  |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 4  | 5  | 6  |  +  |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 1  | 2  | 3  | En  |
 | 
			
		||||
 * |----|----|----|-----|
 | 
			
		||||
 * | 0  | 0  | .  | En  |
 | 
			
		||||
 * `--------------------'
 | 
			
		||||
 */
 | 
			
		||||
 [0] = LAYOUT_ortho_5x4(
 | 
			
		||||
   KC_LUP,  KC_PSLS,  KC_PAST, LT(2, KC_BSPC),
 | 
			
		||||
   KC_P7,    KC_P8,    KC_P9,        KC_PMNS,
 | 
			
		||||
   KC_P4,    KC_P5,    KC_P6,        KC_PPLS,
 | 
			
		||||
   KC_P1,    KC_P2,    KC_P3,        KC_PENT,
 | 
			
		||||
   KC_P0,    KC_P0,  KC_PDOT,        KC_PENT
 | 
			
		||||
 ),
 | 
			
		||||
 | 
			
		||||
/* Keymap _NV: Navigation layer
 | 
			
		||||
* ,-------------------.
 | 
			
		||||
* |LAYR|    |    |NUM |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |HOME| UP |PGUP|    |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |LEFT|    |RIGH|    |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |END |DOWN|PGDN| En |
 | 
			
		||||
* |----|----|----|----|
 | 
			
		||||
* |INS |INS |DEL | En |
 | 
			
		||||
* `-------------------'
 | 
			
		||||
*/
 | 
			
		||||
[1] = LAYOUT_ortho_5x4(
 | 
			
		||||
  KC_LUP, KC_NUMLOCK, XXXXXXX,    XXXXXXX,
 | 
			
		||||
  KC_HOME,   KC_UP,   KC_PGUP,    XXXXXXX,
 | 
			
		||||
  KC_LEFT, XXXXXXX,   KC_RGHT,    XXXXXXX,
 | 
			
		||||
  KC_END,  KC_DOWN,   KC_PGDN,    KC_PENT,
 | 
			
		||||
  KC_INS,   KC_INS,   KC_DEL,     KC_PENT
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/* Keymap _FN: RGB Function Layer
 | 
			
		||||
 * ,-------------------.
 | 
			
		||||
 * |LAYR|    |    |RTOG|
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |HUD |HUI |    |RGBP|
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |SAD |SAI |    |RMOD|
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |VAD |VAS |    |    |
 | 
			
		||||
 * |----|----|----|----|
 | 
			
		||||
 * |RST |RST |    |    |
 | 
			
		||||
 * `-------------------'
 | 
			
		||||
 */
 | 
			
		||||
  [2] = LAYOUT_ortho_5x4(
 | 
			
		||||
    KC_LUP,  XXXXXXX,  XXXXXXX,   RGB_TOG,
 | 
			
		||||
    RGB_HUD,  RGB_HUI,  XXXXXXX,   RGB_M_P,
 | 
			
		||||
    RGB_SAD,  RGB_SAI,  XXXXXXX,   RGB_MOD,
 | 
			
		||||
    RGB_VAD,  RGB_VAI,  XXXXXXX,   XXXXXXX,
 | 
			
		||||
      RESET,    RESET,  XXXXXXX,   XXXXXXX
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// (Optional) Rotary Encoder, Volume Control
 | 
			
		||||
bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
  if (clockwise) {
 | 
			
		||||
      tap_code(KC_VOLU);
 | 
			
		||||
  } else {
 | 
			
		||||
      tap_code(KC_VOLD);
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Potentiometer Slider, MIDI Control
 | 
			
		||||
uint8_t divisor = 0;
 | 
			
		||||
void slider(void){
 | 
			
		||||
  if (divisor++) { // only run the slider function 1/256 times it's called
 | 
			
		||||
      return;
 | 
			
		||||
  }
 | 
			
		||||
  midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
  slider();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 0.91" OLED, 128x32 resolution
 | 
			
		||||
#ifdef OLED_DRIVER_ENABLE
 | 
			
		||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
			
		||||
	return OLED_ROTATION_180;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void render_rocket_logo(void) {
 | 
			
		||||
  static const char PROGMEM rocket_logo[]={
 | 
			
		||||
    // Rocket Screen
 | 
			
		||||
    // 'home', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
 | 
			
		||||
    0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
 | 
			
		||||
    0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
 | 
			
		||||
    0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
 | 
			
		||||
    0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
 | 
			
		||||
    0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
 | 
			
		||||
    0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
 | 
			
		||||
    0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
 | 
			
		||||
    0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
 | 
			
		||||
    0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
 | 
			
		||||
    0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(rocket_logo, sizeof(rocket_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_nav_logo(void) {
 | 
			
		||||
  static const char PROGMEM nav_logo[]={
 | 
			
		||||
    // Navigation Screen
 | 
			
		||||
    // 'navigation', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40,
 | 
			
		||||
    0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10,
 | 
			
		||||
    0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20,
 | 
			
		||||
    0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1,
 | 
			
		||||
    0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44,
 | 
			
		||||
    0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04,
 | 
			
		||||
    0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
 | 
			
		||||
    0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43,
 | 
			
		||||
    0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91,
 | 
			
		||||
    0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02,
 | 
			
		||||
    0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(nav_logo, sizeof(nav_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_light_logo(void) {
 | 
			
		||||
  static const char PROGMEM light_logo[]={
 | 
			
		||||
    // RGB Screen
 | 
			
		||||
    // 'rgb', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
 | 
			
		||||
    0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
 | 
			
		||||
    0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
 | 
			
		||||
    0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(light_logo, sizeof(light_logo));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void oled_task_user(void) {
 | 
			
		||||
  switch (get_highest_layer(layer_state)) {
 | 
			
		||||
    case 0:
 | 
			
		||||
      render_rocket_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    case 1:
 | 
			
		||||
      render_nav_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    case 2:
 | 
			
		||||
      render_light_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      // Or use the write_ln shortcut over adding '\n' to the end of your string
 | 
			
		||||
      oled_write_ln_P(PSTR(" UND"), false);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										1
									
								
								keyboards/ungodly/launch_pad/keymaps/via/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/ungodly/launch_pad/keymaps/via/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
VIA_ENABLE = yes
 | 
			
		||||
							
								
								
									
										269
									
								
								keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,269 @@
 | 
			
		|||
/* Copyright 2020 Ungodly Design <hello@ungodly.design>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
#include "analog.h"
 | 
			
		||||
#include "qmk_midi.h"
 | 
			
		||||
 | 
			
		||||
/* Force Numlock on */
 | 
			
		||||
void matrix_init_user (void) {
 | 
			
		||||
  if (!host_keyboard_led_state().num_lock) {
 | 
			
		||||
      tap_code(KC_NUMLOCK);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Tap Dance declarations
 | 
			
		||||
enum {
 | 
			
		||||
    TD_ESC_TAB,
 | 
			
		||||
    TD_NUMLOCK_L1,
 | 
			
		||||
    TD_3_L0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Tap Dance definitions
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
    // Tap once for Escape, twice for Number 4 (armor plates in warzone)
 | 
			
		||||
    [TD_ESC_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_TAB),
 | 
			
		||||
    [TD_3_L0] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_3, 1),
 | 
			
		||||
    [TD_NUMLOCK_L1] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_NUMLOCK, 1),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  /* Keymap _BL: (Base Layer) Default Numpad Layer
 | 
			
		||||
  * ,-------------------.
 | 
			
		||||
  * | NV | /  | *  |BK/FN|
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | 7  | 8  | 9  |  -  |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | 4  | 5  | 6  |  +  |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | 1  | 2  | 3  | En  |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | 0  | 0  | .  | En  |
 | 
			
		||||
  * `--------------------'
 | 
			
		||||
  */
 | 
			
		||||
  [0] = LAYOUT_ortho_5x4(
 | 
			
		||||
   TD(TD_NUMLOCK_L1),  KC_PSLS,  KC_PAST, LT(2, KC_BSPC),
 | 
			
		||||
   KC_P7,    KC_P8,    KC_P9,        KC_PMNS,
 | 
			
		||||
   KC_P4,    KC_P5,    KC_P6,        KC_PPLS,
 | 
			
		||||
   KC_P1,    KC_P2,    KC_P3,        KC_PENT,
 | 
			
		||||
   KC_P0,    KC_P0,  KC_PDOT,        KC_PENT
 | 
			
		||||
  ),
 | 
			
		||||
  /* Keymap _WAR: (Warzone Layer) Default Numpad Layer for COD Warzone N00BS
 | 
			
		||||
  * ,-------------------.
 | 
			
		||||
  * | R  | F  | V  | Spc |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | E  | D  | C  | Alt |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | W  | S  | X  |  4  |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | Q  | A  | Z  |  3  |
 | 
			
		||||
  * |----|----|----|-----|
 | 
			
		||||
  * | Esc|Ctrl|Shift| M |
 | 
			
		||||
  * `--------------------'
 | 
			
		||||
  */
 | 
			
		||||
  [1] = LAYOUT_ortho_5x4(
 | 
			
		||||
    KC_R,    KC_F,    KC_V,     KC_SPACE,
 | 
			
		||||
    KC_E,    KC_D,    KC_C,     KC_LALT,
 | 
			
		||||
    KC_W,    KC_S,    KC_X,     KC_4,
 | 
			
		||||
    KC_Q,    KC_A,    KC_Z,     TD(TD_3_L0),
 | 
			
		||||
    TD(TD_ESC_TAB),    KC_LCTRL,  KC_LSHIFT,   KC_M
 | 
			
		||||
  ),
 | 
			
		||||
  /* Keymap _FN: RGB Function Layer
 | 
			
		||||
   * ,-------------------.
 | 
			
		||||
   * |LAYR|    |    |RTOG|
 | 
			
		||||
   * |----|----|----|----|
 | 
			
		||||
   * |HUD |HUI |    |RGBP|
 | 
			
		||||
   * |----|----|----|----|
 | 
			
		||||
   * |SAD |SAI |    |RMOD|
 | 
			
		||||
   * |----|----|----|----|
 | 
			
		||||
   * |VAD |VAS |    |    |
 | 
			
		||||
   * |----|----|----|----|
 | 
			
		||||
   * |RST |RST |    |    |
 | 
			
		||||
   * `-------------------'
 | 
			
		||||
   */
 | 
			
		||||
    [2] = LAYOUT_ortho_5x4(
 | 
			
		||||
      KC_LUP,  XXXXXXX,  XXXXXXX,   RGB_TOG,
 | 
			
		||||
      RGB_HUD,  RGB_HUI,  XXXXXXX,   RGB_M_P,
 | 
			
		||||
      RGB_SAD,  RGB_SAI,  XXXXXXX,   RGB_MOD,
 | 
			
		||||
      RGB_VAD,  RGB_VAI,  XXXXXXX,   XXXXXXX,
 | 
			
		||||
        RESET,    RESET,  XXXXXXX,   XXXXXXX
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// (Optional) Rotary Encoder, Volume Control
 | 
			
		||||
bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
  if (clockwise) {
 | 
			
		||||
      tap_code(KC_VOLU);
 | 
			
		||||
  } else {
 | 
			
		||||
      tap_code(KC_VOLD);
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Potentiometer Slider, MIDI Control
 | 
			
		||||
uint8_t divisor = 0;
 | 
			
		||||
void slider(void){
 | 
			
		||||
  if (divisor++) { // only run the slider function 1/256 times it's called
 | 
			
		||||
      return;
 | 
			
		||||
  }
 | 
			
		||||
  midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
  slider();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 0.91" OLED, 128x32 resolution
 | 
			
		||||
#ifdef OLED_DRIVER_ENABLE
 | 
			
		||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
			
		||||
	return OLED_ROTATION_180;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void render_rocket_logo(void) {
 | 
			
		||||
  static const char PROGMEM rocket_logo[]={
 | 
			
		||||
    // Rocket Screen
 | 
			
		||||
    // 'home', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
 | 
			
		||||
    0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
 | 
			
		||||
    0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
 | 
			
		||||
    0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
 | 
			
		||||
    0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
 | 
			
		||||
    0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
 | 
			
		||||
    0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
 | 
			
		||||
    0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
 | 
			
		||||
    0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
 | 
			
		||||
    0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
 | 
			
		||||
    0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(rocket_logo, sizeof(rocket_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_warzone_logo(void) {
 | 
			
		||||
  static const char PROGMEM warzone_logo[]={
 | 
			
		||||
    // Home Screen
 | 
			
		||||
    // 'warzone_bit', 128x32px
 | 
			
		||||
    0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0x00, 0xe0, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe,
 | 
			
		||||
    0xfc, 0xf0, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0x7f, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xf8, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x1f,
 | 
			
		||||
    0x07, 0x01, 0x00, 0x00, 0x00, 0x03, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0xff,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xff, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x07, 0x01, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfe, 0xff,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x01, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 | 
			
		||||
    0x00, 0x03, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f,
 | 
			
		||||
    0x1f, 0x07, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x07, 0x7f, 0x7f,
 | 
			
		||||
    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(warzone_logo, sizeof(warzone_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_light_logo(void) {
 | 
			
		||||
  static const char PROGMEM light_logo[]={
 | 
			
		||||
    // RGB Screen
 | 
			
		||||
    // 'rgb', 128x32px
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
 | 
			
		||||
    0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
 | 
			
		||||
    0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
 | 
			
		||||
    0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
 | 
			
		||||
    0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
 | 
			
		||||
    0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
  };
 | 
			
		||||
  oled_write_raw_P(light_logo, sizeof(light_logo));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void oled_task_user(void) {
 | 
			
		||||
  switch (get_highest_layer(layer_state)) {
 | 
			
		||||
    case 0:
 | 
			
		||||
      render_rocket_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    case 1:
 | 
			
		||||
      render_warzone_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    case 2:
 | 
			
		||||
      render_light_logo();
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      // Or use the write_ln shortcut over adding '\n' to the end of your string
 | 
			
		||||
      oled_write_ln_P(PSTR(" UND"), false);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										2
									
								
								keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
VIA_ENABLE = yes
 | 
			
		||||
TAP_DANCE_ENABLE = yes
 | 
			
		||||
| 
						 | 
				
			
			@ -42,20 +42,3 @@ led_config_t g_led_config = { {
 | 
			
		|||
    2, 2
 | 
			
		||||
} };
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void eeconfig_init_kb(void) {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    rgblight_enable();             // Enable RGB by default
 | 
			
		||||
    rgblight_sethsv(0, 255, 255);  // Set default HSV - red hue, full saturation, full brightness
 | 
			
		||||
#    ifdef RGBLIGHT_ANIMATIONS
 | 
			
		||||
    rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2);  // set to RGB_RAINBOW_SWIRL by default
 | 
			
		||||
#    endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
    rgb_matrix_enable();  // Enable RGB by default
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    eeconfig_update_kb(0);
 | 
			
		||||
    eeconfig_init_user();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,11 +22,9 @@ Numpad Layout             |  5x4 Layout
 | 
			
		|||
  |  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
|Reset Bootloader|   |
 | 
			
		||||
|---|---|
 | 
			
		||||
|Use tweezers to short the two bottom pins of the J-Link pinout.||
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-Godinez)
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-godinez)
 | 
			
		||||
* Hardware Supported: Launch Pad PCB
 | 
			
		||||
* Hardware Availability: [Ungodly.Design](https://ungodly.design/products/launch-pad-pcb)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -35,3 +33,59 @@ Make example for this keyboard (after setting up your build environment):
 | 
			
		|||
    make ungodly/launch_pad:default
 | 
			
		||||
 | 
			
		||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
 | 
			
		||||
 | 
			
		||||
# Firmware
 | 
			
		||||
- [v1.0](https://github.com/luis-godinez/qmk_firmware/releases/tag/launch_pad)
 | 
			
		||||
 | 
			
		||||
# Reset Bootloader
 | 
			
		||||
 | 
			
		||||
<table>
 | 
			
		||||
	<tr>
 | 
			
		||||
		<td>Use tweezers to short the two bottom pins of the J-Link pinout.</td>
 | 
			
		||||
		<td><img src="https://i.imgur.com/ArSIcK0.pngl" width="300"/></td>
 | 
			
		||||
	</tr>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
# Midi Setup
 | 
			
		||||
 | 
			
		||||
<table>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <th>Windows</th>
 | 
			
		||||
        <th>Mac</th>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
    	<td valign="top">
 | 
			
		||||
    	<ul>
 | 
			
		||||
    	    <li>Midi Mixer</li>
 | 
			
		||||
        	<ul>
 | 
			
		||||
            	<li><a href="https://github.com/jpwilliams/midi-mixer-releases/releases">Download the latest version of Midi Mixer</a></li>
 | 
			
		||||
            	<li>Run the exe to install the application.</li><li>Launch the MIDI Mixer application.</li>
 | 
			
		||||
            	<li>Navigate to the "Profiles" tab and select the "Ungodly Design Launch Pad" preset.</li>
 | 
			
		||||
            	<li>Navigate to the "Groups" tab and select the audio source you would like to control.
 | 
			
		||||
            	<br><img src="https://imgur.com/MmdDcTm.pngl" alt="Midi Mixer" width="800"></li>
 | 
			
		||||
            	<li>Optionally, Navigate to the "Settings" tab and enable/disable "Logarithmic volume curve".</li>
 | 
			
		||||
        	</ul>
 | 
			
		||||
    	</ul>
 | 
			
		||||
    	</td>
 | 
			
		||||
    	<td valign="top">
 | 
			
		||||
        	<ul>
 | 
			
		||||
            	<li><a href="https://rsjaffe.github.io/MIDI2LR/">Midi2Lightroom</a></li>
 | 
			
		||||
            	<li><a href="https://www.orderedbytes.com/controllermate/">ControllerMate</a></li>
 | 
			
		||||
        	</ul>
 | 
			
		||||
    	</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
# Custom OLED Displays
 | 
			
		||||
 | 
			
		||||
Layer | Graphic
 | 
			
		||||
:----:|:----:
 | 
			
		||||
home  |  
 | 
			
		||||
nav  |  
 | 
			
		||||
rgb  |  
 | 
			
		||||
 | 
			
		||||
* These instructions require compiling your own firmware. [Ensure that your build environenment is setup](https://beta.docs.qmk.fm/tutorial/newbs_getting_started).
 | 
			
		||||
* Use [QMK Logo Editor](https://joric.github.io/qle/) to create your own LCD graphics.
 | 
			
		||||
* Copy the generated output into your keymap ([sample code](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ungodly/launch_pad/keymaps/default/keymap.c))
 | 
			
		||||
    * Note: By default, the LCD is configured as a vertical display with a 180 degree rotation. You may need to change the `OLED_ROTATION` value in the `keymap.c` to achieve your desired effect.
 | 
			
		||||
* Compile the firmware and flash it to your launch pad.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue