[INIT-MIGRATION] from qmk @ d575bf7ddcb66849a449aa5f714eb926644862ec

This commit is contained in:
Daveanand Mannie
2025-12-30 22:21:36 -05:00
commit 7642493f2c
22 changed files with 1133 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
{
"build": {
"lto": true
},
"development_board": "elite_c",
"matrix_pins": {
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"],
"rows": ["C6", "D7", "E6", "B4", "B5"]
},
"split": {
"serial": {
"pin": "D2"
}
},
"ws2812": {
"pin": "D3"
},
"encoder": {
"rotary": [
{"pin_a": "F4", "pin_b": "F5"}
]
}
}

View File

@@ -0,0 +1 @@
SRC += lib/oled.c

View File

@@ -0,0 +1,173 @@
{
"manufacturer": "Boardsource",
"keyboard_name": "lulu",
"maintainer": "waffle87",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true,
"oled": true,
"encoder": true
},
"url": "https://boardsource.xyz/projects/60de24d6847112054777bbdd",
"usb": {
"device_version": "1.0.0",
"pid": "0x7685",
"vid": "0x4273"
},
"split": {
"enabled": true
},
"rgb_matrix": {
"driver": "ws2812",
"split_count": [35, 35],
"max_brightness": 150,
"animations": {
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
"breathing": true,
"band_sat": true,
"band_val": true
},
"layout": [
{"flags": 2, "x": 86, "y": 55},
{"flags": 2, "x": 51, "y": 55},
{"flags": 2, "x": 17, "y": 40},
{"flags": 1, "x": 17, "y": 10},
{"flags": 1, "x": 51, "y": 10},
{"flags": 1, "x": 86, "y": 10},
{"flags": 4, "matrix": [0, 5], "x": 86, "y": 0},
{"flags": 4, "matrix": [0, 4], "x": 68, "y": 0},
{"flags": 4, "matrix": [0, 3], "x": 51, "y": 0},
{"flags": 4, "matrix": [0, 2], "x": 34, "y": 0},
{"flags": 4, "matrix": [0, 1], "x": 17, "y": 0},
{"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
{"flags": 1, "matrix": [1, 0], "x": 0, "y": 16},
{"flags": 4, "matrix": [1, 1], "x": 17, "y": 16},
{"flags": 4, "matrix": [1, 2], "x": 34, "y": 16},
{"flags": 4, "matrix": [1, 3], "x": 51, "y": 16},
{"flags": 4, "matrix": [1, 4], "x": 68, "y": 16},
{"flags": 4, "matrix": [1, 5], "x": 86, "y": 16},
{"flags": 4, "matrix": [2, 5], "x": 86, "y": 32},
{"flags": 4, "matrix": [2, 4], "x": 68, "y": 32},
{"flags": 4, "matrix": [2, 3], "x": 51, "y": 32},
{"flags": 4, "matrix": [2, 2], "x": 34, "y": 32},
{"flags": 4, "matrix": [2, 1], "x": 17, "y": 32},
{"flags": 1, "matrix": [2, 0], "x": 0, "y": 32},
{"flags": 1, "matrix": [3, 0], "x": 0, "y": 48},
{"flags": 4, "matrix": [3, 1], "x": 17, "y": 48},
{"flags": 4, "matrix": [3, 2], "x": 34, "y": 48},
{"flags": 4, "matrix": [3, 3], "x": 51, "y": 48},
{"flags": 4, "matrix": [3, 4], "x": 68, "y": 48},
{"flags": 4, "matrix": [3, 5], "x": 86, "y": 48},
{"flags": 4, "matrix": [4, 5], "x": 103, "y": 40},
{"flags": 1, "matrix": [4, 4], "x": 96, "y": 64},
{"flags": 1, "matrix": [4, 3], "x": 77, "y": 64},
{"flags": 1, "matrix": [4, 2], "x": 60, "y": 64},
{"flags": 1, "matrix": [4, 1], "x": 43, "y": 64},
{"flags": 2, "x": 137, "y": 55},
{"flags": 2, "x": 172, "y": 55},
{"flags": 2, "x": 206, "y": 40},
{"flags": 1, "x": 206, "y": 10},
{"flags": 1, "x": 172, "y": 10},
{"flags": 1, "x": 137, "y": 10},
{"flags": 4, "matrix": [5, 5], "x": 137, "y": 0},
{"flags": 4, "matrix": [5, 4], "x": 155, "y": 0},
{"flags": 4, "matrix": [5, 3], "x": 172, "y": 0},
{"flags": 4, "matrix": [5, 2], "x": 189, "y": 0},
{"flags": 4, "matrix": [5, 1], "x": 206, "y": 0},
{"flags": 1, "matrix": [5, 0], "x": 224, "y": 0},
{"flags": 1, "matrix": [6, 0], "x": 224, "y": 16},
{"flags": 4, "matrix": [6, 1], "x": 206, "y": 16},
{"flags": 4, "matrix": [6, 2], "x": 189, "y": 16},
{"flags": 4, "matrix": [6, 3], "x": 172, "y": 16},
{"flags": 4, "matrix": [6, 4], "x": 155, "y": 16},
{"flags": 4, "matrix": [6, 5], "x": 137, "y": 16},
{"flags": 4, "matrix": [7, 5], "x": 137, "y": 32},
{"flags": 4, "matrix": [7, 4], "x": 155, "y": 32},
{"flags": 4, "matrix": [7, 3], "x": 172, "y": 32},
{"flags": 4, "matrix": [7, 2], "x": 189, "y": 32},
{"flags": 4, "matrix": [7, 1], "x": 206, "y": 32},
{"flags": 1, "matrix": [7, 0], "x": 224, "y": 32},
{"flags": 1, "matrix": [8, 0], "x": 224, "y": 48},
{"flags": 4, "matrix": [8, 1], "x": 206, "y": 48},
{"flags": 4, "matrix": [8, 2], "x": 189, "y": 48},
{"flags": 4, "matrix": [8, 3], "x": 172, "y": 48},
{"flags": 4, "matrix": [8, 4], "x": 155, "y": 48},
{"flags": 4, "matrix": [8, 5], "x": 137, "y": 48},
{"flags": 4, "matrix": [9, 5], "x": 120, "y": 40},
{"flags": 1, "matrix": [9, 4], "x": 127, "y": 64},
{"flags": 1, "matrix": [9, 3], "x": 146, "y": 64},
{"flags": 1, "matrix": [9, 2], "x": 163, "y": 64},
{"flags": 1, "matrix": [9, 1], "x": 180, "y": 64}
]
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.5},
{"matrix": [0, 1], "x": 1, "y": 0.375},
{"matrix": [0, 2], "x": 2, "y": 0.125},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0.125},
{"matrix": [0, 5], "x": 5, "y": 0.25},
{"matrix": [5, 5], "x": 10.5, "y": 0.25},
{"matrix": [5, 4], "x": 11.5, "y": 0.125},
{"matrix": [5, 3], "x": 12.5, "y": 0},
{"matrix": [5, 2], "x": 13.5, "y": 0.125},
{"matrix": [5, 1], "x": 14.5, "y": 0.375},
{"matrix": [5, 0], "x": 15.5, "y": 0.5},
{"matrix": [1, 0], "x": 0, "y": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1.375},
{"matrix": [1, 2], "x": 2, "y": 1.125},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1.125},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [6, 5], "x": 10.5, "y": 1.25},
{"matrix": [6, 4], "x": 11.5, "y": 1.125},
{"matrix": [6, 3], "x": 12.5, "y": 1},
{"matrix": [6, 2], "x": 13.5, "y": 1.125},
{"matrix": [6, 1], "x": 14.5, "y": 1.375},
{"matrix": [6, 0], "x": 15.5, "y": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2.5},
{"matrix": [2, 1], "x": 1, "y": 2.375},
{"matrix": [2, 2], "x": 2, "y": 2.125},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2.125},
{"matrix": [2, 5], "x": 5, "y": 2.25},
{"matrix": [7, 5], "x": 10.5, "y": 2.25},
{"matrix": [7, 4], "x": 11.5, "y": 2.125},
{"matrix": [7, 3], "x": 12.5, "y": 2},
{"matrix": [7, 2], "x": 13.5, "y": 2.125},
{"matrix": [7, 1], "x": 14.5, "y": 2.375},
{"matrix": [7, 0], "x": 15.5, "y": 2.5},
{"matrix": [3, 0], "x": 0, "y": 3.5},
{"matrix": [3, 1], "x": 1, "y": 3.375},
{"matrix": [3, 2], "x": 2, "y": 3.125},
{"matrix": [3, 3], "x": 3, "y": 3},
{"matrix": [3, 4], "x": 4, "y": 3.125},
{"matrix": [3, 5], "x": 5, "y": 3.25},
{"matrix": [4, 5], "x": 6, "y": 2.75},
{"matrix": [9, 5], "x": 9.5, "y": 2.75},
{"matrix": [8, 5], "x": 10.5, "y": 3.25},
{"matrix": [8, 4], "x": 11.5, "y": 3.125},
{"matrix": [8, 3], "x": 12.5, "y": 3},
{"matrix": [8, 2], "x": 13.5, "y": 3.125},
{"matrix": [8, 1], "x": 14.5, "y": 3.375},
{"matrix": [8, 0], "x": 15.5, "y": 3.5},
{"matrix": [4, 1], "x": 2.5, "y": 4.125},
{"matrix": [4, 2], "x": 3.5, "y": 4.15},
{"matrix": [4, 3], "x": 4.5, "y": 4.25},
{"matrix": [4, 4], "h": 1.5, "x": 6, "y": 4.25},
{"matrix": [9, 4], "h": 1.5, "x": 9.5, "y": 4.25},
{"matrix": [9, 3], "x": 11, "y": 4.25},
{"matrix": [9, 2], "x": 12, "y": 4.15},
{"matrix": [9, 1], "x": 13, "y": 4.15}
]
}
}
}

View File

@@ -0,0 +1,16 @@
// Copyright 2024 Daveanand Mannie <daveanandmannie@gmail.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// RGB Matrix defaults
#define RGB_MATRIX_DEFAULT_VAL 150
#define RGB_MATRIX_DEFAULT_SAT 255
#define RGB_MATRIX_DEFAULT_HUE 220
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_ALPHAS_MODS
#define RGB_MATRIX_DEFAULT_SPD 25
#define RGB_MATRIX_HZ 100
// Oneshot settings
#define TAPPING_TOGGLE 2
#define ONESHOT_TAP_TOGGLE 5
#define ONESHOT_TIMEOUT 1500

View File

@@ -0,0 +1,170 @@
// Copyright 2022 Cole Smith <cole@boadsource.xyz>
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_BASE,
_FIRST,
_SECOND,
_THIRD
};
#define SPD_BASE 25
#define SPD_FIRST 76
#define SPD_SECOND 120
#define SPD_THIRD 160
#define SPD_SHFT 40
void layer_handler(uint8_t layer) {
// Handler for changing alpha mode spd == hue
switch (layer) {
case _BASE:
rgb_matrix_set_speed(SPD_BASE);
break;
case _FIRST:
rgb_matrix_set_speed(SPD_FIRST);
break;
case _SECOND:
rgb_matrix_set_speed(SPD_SECOND);
break;
case _THIRD:
rgb_matrix_set_speed(SPD_THIRD);
break;
default:
rgb_matrix_set_speed(SPD_BASE);
break;
}
}
layer_state_t layer_state_set_user(layer_state_t state) {
// [callback] change mod row colours based on active layer
uint8_t layer = get_highest_layer(state);
layer_handler(layer);
return state;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LALT:
case KC_RALT:
if (record->event.pressed) {
rgb_matrix_set_speed(201);
} else {
uint8_t layer = get_highest_layer(layer_state);
layer_handler(layer);
}
break;
case KC_LCTL:
case KC_RCTL:
if (record->event.pressed) {
rgb_matrix_set_speed(240);
} else {
uint8_t layer = get_highest_layer(layer_state);
layer_handler(layer);
}
break;
case KC_LSFT:
case KC_RSFT:
if (record->event.pressed) {
rgb_matrix_set_speed(SPD_SHFT);
} else {
uint8_t layer = get_highest_layer(layer_state);
layer_handler(layer);
}
break;
}
return true;
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE
* ,-----------------------------------------. ,-----------------------------------------.
* | BackSP| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | = |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |Escape| A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| mo 3 | | tg l2 |------+------+------+------+------+------|
* |OSM-sft| Z | X | C | V | B |-------| |-------| N | M | , | . | / |OSM-sft|
* `-----------------------------------------/ osl / \ \-----------------------------------------'
* | Win | Lctrl| L-alt| / first / \space \ |Enter |R-ctrl| Ralt |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_BASE] = LAYOUT(
KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_THIRD), TG(_SECOND), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LWIN, KC_LCTL, KC_LALT, OSL(_FIRST), KC_SPC, KC_ENT, KC_RCTL, KC_RALT
),
/* FIRST
* ,-----------------------------------------. ,-----------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | \ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | del |-------. ,-------| left | down | up | right| ` | _ |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | | | | |-------| |-------| | _ | + | { | } | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / / \ \ | | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_FIRST] = LAYOUT(
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_BSLS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
_______, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, KC_UNDS,
_______, _______, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
/* SECOND
* ,-----------------------------------------. ,-----------------------------------------.
* | | | S+ | S- | B+ | B- | |nkrotg| | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | prvs | msup | next | mwup | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | mslt | msdn |msrght| mwdn |-------. ,-------| wback| copy | paste| wfwd | | |
* |------+------+------+------+------+------|RGB_TOG| | |------+------+------+------+------+------|
* | | | vold | mute | volu | play |-------| |-------| | | | acl2 | acl0 | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / / \Enter \ |mbtn1 |mbtn2 | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_SECOND] = LAYOUT(
KC_NO, KC_NO, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, NK_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_MPRV, MS_UP, KC_MNXT, MS_WHLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______,
KC_NO, KC_NO, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, KC_WBAK, KC_COPY, KC_PSTE, KC_WFWD, KC_NO, XXXXXXX,
_______, KC_NO, KC_VOLD, KC_MUTE, KC_VOLU, KC_MPLY, RGB_TOG, _______, KC_NO, KC_NO, KC_NO, MS_ACL2, MS_ACL0, _______,
_______, _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______
),
/* THIRD
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | 7 | 8 | 9 | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| 4 | 5 | 6 | | | |
* |------+------+------+------+------+------| | | 0 |------+------+------+------+------+------|
* | | | | | | |-------| |-------| 1 | 2 | 3 | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / / \ \ | | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_THIRD] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_0, KC_1, KC_2, KC_3, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1,108 @@
// Copyright 2022 Cole Smith <cole@boadsource.xyz>
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_QWERTY,
_RAISE,
_LOWER,
_ADJUST
};
#define RAISE MO(_RAISE)
#define LOWER MO(_LOWER)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_QWERTY] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
* | | | | | | |-------| |-------| | _ | + | { | } | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_LOWER] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
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_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, _______, _______, _______, _______, _______, _______, _______
),
/* RAISE
* ,-----------------------------------------. ,-----------------------------------------.
* |MOD | MODR | S+ | S- | B+ | B- | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
* |------+------+------+------+------+------|RM_TOGG| | ] |------+------+------+------+------+------|
* | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_RAISE] = LAYOUT(
RM_NEXT, RM_PREV, RM_SATU, RM_SATD, RM_VALU, RM_VALD, _______, _______, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RM_TOGG, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, _______
),
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_ADJUST] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______
)
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

View File

@@ -0,0 +1,45 @@
// Copyright 2022 Cole Smith <cole@boadsource.xyz>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#include "lib/oled.h"
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else if (index == 1) {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
return true;
}
#endif
#ifdef OLED_ENABLE
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
if (!is_keyboard_master()) {
return OLED_ROTATION_180;
}
return rotation;
}
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
if (is_keyboard_master()) {
render_layer_state();
} else {
oled_write_raw_P(bs_logo_img, sizeof(bs_logo_img));
}
return false;
}
#endif

View File

@@ -0,0 +1,31 @@
# Lulu
![boardsource Lulu](https://i.imgur.com/tjvUoXTh.png)
The lulu is what the ergo community has needed for a long time, a high-end aesthetic split ergo 60%. With this project we not only tried to create a beautiful product but we also wanted to unify the some what split 60% community. With hotswap, per key rgb & underglow, swappable encoder and adjustable tenting with out giving up anything.
* Keyboard Maintainer: [Boardsource](https://github.com/daysgobye)
* Hardware Supported: lulu v1/v2, lily pad v2
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/products/lily-pad-pcb)
Make example for this keyboard (after setting up your build environment):
make boardsource/lulu/rp2040:default
make boardsource/lulu/avr:default
Flashing example for this keyboard:
make boardsource/lulu/rp2040:default:flash
make boardsource/lulu/avr:default:flash
Compile `rp2040` firmware if you purchased PCB in lulu group buy or lily pad (integrated microcontroller).
Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro.
Enter bootloader by holding down the upper outer key while you plug in the usb cable, or by pushing the reset switch on the pcb.
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).

View File

@@ -0,0 +1,23 @@
// Copyright 2022 jack (@waffle87)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP0
#define SERIAL_USART_RX_PIN GP1
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP22
#define I2C1_SCL_PIN GP23
#define RGB_MATRIX_DEFAULT_VAL 150
#define RGB_MATRIX_DEFAULT_SAT 255
#define RGB_MATRIX_DEFAULT_HUE 220
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_ALPHAS_MODS
#define RGB_MATRIX_DEFAULT_SPD 25
#define RGB_MATRIX_HZ 100
#define TAPPING_TOGGLE 2 // for tt
#define ONESHOT_TAP_TOGGLE 5
#define ONESHOT_TIMEOUT 1500 // ms

View File

@@ -0,0 +1,5 @@
// Copyright 2022 jack (@waffle87)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,22 @@
{
"bootloader": "rp2040",
"matrix_pins": {
"cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"],
"rows": ["GP14", "GP15", "GP16", "GP17", "GP18"]
},
"processor": "RP2040",
"encoder": {
"rotary": [
{"pin_a": "GP8", "pin_b": "GP9"}
]
},
"split": {
"serial": {
"driver": "vendor"
}
},
"ws2812": {
"pin": "GP29",
"driver": "vendor"
}
}

View File

@@ -0,0 +1,6 @@
// Copyright 2022 jack (@waffle87)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 TRUE

View File

@@ -0,0 +1 @@
SRC += lib/oled.c