diff options
author | cole smith <38364556+daysgobye@users.noreply.github.com> | 2022-02-11 21:02:30 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-11 20:02:30 -0800 |
commit | 19c57a2a6a7aa73dca7e06acdfe93508288ddfb0 (patch) | |
tree | 013ac3260c7a4da0c25c98f64a7bf1db93dda4c3 | |
parent | 40529e89de5a49b6d7978aedef9dd425d24f746d (diff) | |
download | qmk_firmware-19c57a2a6a7aa73dca7e06acdfe93508288ddfb0.tar.gz qmk_firmware-19c57a2a6a7aa73dca7e06acdfe93508288ddfb0.zip |
[Keyboard] Lulu keyboard by boardsource (#15951)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r-- | keyboards/boardsource/lulu/config.h | 47 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/info.json | 16 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/keymaps/default/keymap.c | 129 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/keymaps/via/keymap.c | 105 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/keymaps/via/rules.mk | 1 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/lulu.c | 280 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/lulu.h | 29 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/readme.md | 24 | ||||
-rw-r--r-- | keyboards/boardsource/lulu/rules.mk | 26 |
9 files changed, 657 insertions, 0 deletions
diff --git a/keyboards/boardsource/lulu/config.h b/keyboards/boardsource/lulu/config.h new file mode 100644 index 000000000..8cd240179 --- /dev/null +++ b/keyboards/boardsource/lulu/config.h | |||
@@ -0,0 +1,47 @@ | |||
1 | // Copyright 2022 Cole Smith <cole@boadsource.xyz> | ||
2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
3 | |||
4 | #pragma once | ||
5 | |||
6 | #include "config_common.h" | ||
7 | |||
8 | #define VENDOR_ID 0x4273 | ||
9 | #define PRODUCT_ID 0x7685 | ||
10 | #define DEVICE_VER 0x0000 | ||
11 | #define MANUFACTURER Boardsource | ||
12 | #define PRODUCT lulu | ||
13 | |||
14 | #define MATRIX_ROWS 10 | ||
15 | #define MATRIX_COLS 6 | ||
16 | #define MATRIX_ROW_PINS {C6, D7, E6, B4, B5} | ||
17 | |||
18 | // wiring of each half | ||
19 | #define MATRIX_COL_PINS {F6, F7, B1, B3, B2, B6} | ||
20 | #define USE_SERIAL | ||
21 | #define SOFT_SERIAL_PIN D2 | ||
22 | #define SPLIT_USB_DETECT | ||
23 | #define RGB_DI_PIN D3 | ||
24 | |||
25 | #define ENCODERS_PAD_A { F0 } | ||
26 | #define ENCODERS_PAD_B { F1 } | ||
27 | #define ENCODERS_PAD_A_RIGHT { F0 } | ||
28 | #define ENCODERS_PAD_B_RIGHT { F1 } | ||
29 | |||
30 | /* Set 0 if debouncing isn't needed */ | ||
31 | #define DEBOUNCE 5 | ||
32 | #define DIODE_DIRECTION COL2ROW | ||
33 | #ifdef RGB_MATRIX_ENABLE | ||
34 | #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 | ||
35 | #define RGBLED_NUM 70 // Number of LEDs | ||
36 | #define DRIVER_LED_TOTAL RGBLED_NUM | ||
37 | #define RGB_MATRIX_SPLIT { 35, 35 } | ||
38 | #define SPLIT_TRANSPORT_MIRROR | ||
39 | #define RGBLIGHT_LIMIT_VAL 150 | ||
40 | #define ENABLE_RGB_MATRIX_ALPHAS_MODS | ||
41 | #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN | ||
42 | #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT | ||
43 | #define ENABLE_RGB_MATRIX_BREATHING | ||
44 | #define ENABLE_RGB_MATRIX_BAND_SAT | ||
45 | #define ENABLE_RGB_MATRIX_BAND_VAL | ||
46 | #endif | ||
47 | |||
diff --git a/keyboards/boardsource/lulu/info.json b/keyboards/boardsource/lulu/info.json new file mode 100644 index 000000000..156a7cea9 --- /dev/null +++ b/keyboards/boardsource/lulu/info.json | |||
@@ -0,0 +1,16 @@ | |||
1 | { | ||
2 | "keyboard_name": "Lulu", | ||
3 | "url": "https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb", | ||
4 | "maintainer": "boardsource", | ||
5 | "layouts": { | ||
6 | "LAYOUT": { | ||
7 | "layout": [ | ||
8 | {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5}, | ||
9 | {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5}, | ||
10 | {"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5}, | ||
11 | {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5}, | ||
12 | {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.15} | ||
13 | ] | ||
14 | } | ||
15 | } | ||
16 | } | ||
diff --git a/keyboards/boardsource/lulu/keymaps/default/keymap.c b/keyboards/boardsource/lulu/keymaps/default/keymap.c new file mode 100644 index 000000000..8624b51b6 --- /dev/null +++ b/keyboards/boardsource/lulu/keymaps/default/keymap.c | |||
@@ -0,0 +1,129 @@ | |||
1 | // Copyright 2022 Cole Smith <cole@boadsource.xyz> | ||
2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
3 | |||
4 | #include QMK_KEYBOARD_H | ||
5 | |||
6 | enum layers { | ||
7 | _QWERTY, | ||
8 | _RAISE, | ||
9 | _LOWER, | ||
10 | _ADJUST | ||
11 | }; | ||
12 | |||
13 | #define RAISE MO(_RAISE) | ||
14 | #define LOWER MO(_LOWER) | ||
15 | |||
16 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
17 | |||
18 | /* QWERTY | ||
19 | * ,-----------------------------------------. ,-----------------------------------------. | ||
20 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | | ||
21 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
22 | * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - | | ||
23 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
24 | * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | | ||
25 | * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
26 | * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| | ||
27 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
28 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
29 | * | | | |/ / \ \ | | | | | ||
30 | * `----------------------------' '------''--------------------' | ||
31 | */ | ||
32 | |||
33 | [_QWERTY] = LAYOUT( | ||
34 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, | ||
35 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, | ||
36 | KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | ||
37 | 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, | ||
38 | KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI | ||
39 | ), | ||
40 | /* LOWER | ||
41 | * ,-----------------------------------------. ,-----------------------------------------. | ||
42 | * | | | | | | | | | | | | | | | ||
43 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
44 | * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | ||
45 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
46 | * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - | | ||
47 | * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
48 | * | | | | | | |-------| |-------| | _ | + | { | } | | | | ||
49 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
50 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
51 | * | | | |/ / \ \ | | | | | ||
52 | * `----------------------------' '------''--------------------' | ||
53 | */ | ||
54 | [_LOWER] = LAYOUT( | ||
55 | _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, | ||
56 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, | ||
57 | KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, | ||
58 | _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | ||
59 | _______, _______, _______, _______, _______, _______, _______, _______ | ||
60 | ), | ||
61 | /* RAISE | ||
62 | * ,-----------------------------------------. ,-----------------------------------------. | ||
63 | * |MOD | MODR | S+ | S- | B+ | B- | | | | | | | | | ||
64 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
65 | * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | | ||
66 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
67 | * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | | | ||
68 | * |------+------+------+------+------+------|RGB_TOG| | ] |------+------+------+------+------+------| | ||
69 | * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ | | ||
70 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
71 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
72 | * | | | |/ / \ \ | | | | | ||
73 | * `----------------------------' '------''--------------------' | ||
74 | */ | ||
75 | |||
76 | [_RAISE] = LAYOUT( | ||
77 | RGB_MOD, RGB_RMOD,RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, | ||
78 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, | ||
79 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, | ||
80 | KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | ||
81 | _______, _______, _______, _______, _______, _______, _______, _______ | ||
82 | ), | ||
83 | /* ADJUST | ||
84 | * ,-----------------------------------------. ,-----------------------------------------. | ||
85 | * | | | | | | | | | | | | | | | ||
86 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
87 | * | | | | | | | | | | | | | | | ||
88 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
89 | * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ | | ||
90 | * |------+------+------+------+------+------| | | |------+------+------+------+------+------| | ||
91 | * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- | | ||
92 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
93 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
94 | * | | | |/ / \ \ | | | | | ||
95 | * `----------------------------' '------''--------------------' | ||
96 | */ | ||
97 | [_ADJUST] = LAYOUT( | ||
98 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
99 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
100 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
101 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
102 | _______, _______, _______, _______, _______, _______, _______, _______ | ||
103 | ) | ||
104 | }; | ||
105 | |||
106 | layer_state_t layer_state_set_user(layer_state_t state) { | ||
107 | return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | ||
108 | } | ||
109 | |||
110 | #ifdef ENCODER_ENABLE | ||
111 | bool encoder_update_user(uint8_t index, bool clockwise) { | ||
112 | if (index == 0) { | ||
113 | // Volume control | ||
114 | if (clockwise) { | ||
115 | tap_code(KC_VOLU); | ||
116 | } else { | ||
117 | tap_code(KC_VOLD); | ||
118 | } | ||
119 | } else if (index == 1) { | ||
120 | // Page up/Page down | ||
121 | if (clockwise) { | ||
122 | tap_code(KC_PGDN); | ||
123 | } else { | ||
124 | tap_code(KC_PGUP); | ||
125 | } | ||
126 | } | ||
127 | return false; | ||
128 | } | ||
129 | #endif | ||
diff --git a/keyboards/boardsource/lulu/keymaps/via/keymap.c b/keyboards/boardsource/lulu/keymaps/via/keymap.c new file mode 100644 index 000000000..912ea3855 --- /dev/null +++ b/keyboards/boardsource/lulu/keymaps/via/keymap.c | |||
@@ -0,0 +1,105 @@ | |||
1 | // Copyright 2022 Cole Smith <cole@boadsource.xyz> | ||
2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
3 | |||
4 | #include QMK_KEYBOARD_H | ||
5 | |||
6 | enum layers { | ||
7 | _QWERTY, | ||
8 | _RAISE, | ||
9 | _LOWER, | ||
10 | _ADJUST | ||
11 | }; | ||
12 | |||
13 | #define RAISE MO(_RAISE) | ||
14 | #define LOWER MO(_LOWER) | ||
15 | |||
16 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
17 | |||
18 | /* QWERTY | ||
19 | * ,-----------------------------------------. ,-----------------------------------------. | ||
20 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | | ||
21 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
22 | * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - | | ||
23 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
24 | * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | | ||
25 | * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
26 | * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| | ||
27 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
28 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
29 | * | | | |/ / \ \ | | | | | ||
30 | * `----------------------------' '------''--------------------' | ||
31 | */ | ||
32 | |||
33 | [_QWERTY] = LAYOUT( | ||
34 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, | ||
35 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, | ||
36 | KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | ||
37 | 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, | ||
38 | KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI | ||
39 | ), | ||
40 | /* LOWER | ||
41 | * ,-----------------------------------------. ,-----------------------------------------. | ||
42 | * | | | | | | | | | | | | | | | ||
43 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
44 | * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | ||
45 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
46 | * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - | | ||
47 | * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
48 | * | | | | | | |-------| |-------| | _ | + | { | } | | | | ||
49 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
50 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
51 | * | | | |/ / \ \ | | | | | ||
52 | * `----------------------------' '------''--------------------' | ||
53 | */ | ||
54 | [_LOWER] = LAYOUT( | ||
55 | _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, | ||
56 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, | ||
57 | KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, | ||
58 | _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | ||
59 | _______, _______, _______, _______, _______, _______, _______, _______ | ||
60 | ), | ||
61 | /* RAISE | ||
62 | * ,-----------------------------------------. ,-----------------------------------------. | ||
63 | * |MOD | MODR | S+ | S- | B+ | B- | | | | | | | | | ||
64 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
65 | * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | | ||
66 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
67 | * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | | | ||
68 | * |------+------+------+------+------+------|RGB_TOG| | ] |------+------+------+------+------+------| | ||
69 | * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ | | ||
70 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
71 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
72 | * | | | |/ / \ \ | | | | | ||
73 | * `----------------------------' '------''--------------------' | ||
74 | */ | ||
75 | |||
76 | [_RAISE] = LAYOUT( | ||
77 | RGB_MOD, RGB_RMOD,RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, | ||
78 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, | ||
79 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, | ||
80 | KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | ||
81 | _______, _______, _______, _______, _______, _______, _______, _______ | ||
82 | ), | ||
83 | /* ADJUST | ||
84 | * ,-----------------------------------------. ,-----------------------------------------. | ||
85 | * | | | | | | | | | | | | | | | ||
86 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
87 | * | | | | | | | | | | | | | | | ||
88 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
89 | * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ | | ||
90 | * |------+------+------+------+------+------| | | |------+------+------+------+------+------| | ||
91 | * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- | | ||
92 | * `-----------------------------------------/ / \ \-----------------------------------------' | ||
93 | * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
94 | * | | | |/ / \ \ | | | | | ||
95 | * `----------------------------' '------''--------------------' | ||
96 | */ | ||
97 | [_ADJUST] = LAYOUT( | ||
98 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
99 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
100 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
101 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
102 | _______, _______, _______, _______, _______, _______, _______, _______ | ||
103 | ) | ||
104 | }; | ||
105 | |||
diff --git a/keyboards/boardsource/lulu/keymaps/via/rules.mk b/keyboards/boardsource/lulu/keymaps/via/rules.mk new file mode 100644 index 000000000..036bd6d1c --- /dev/null +++ b/keyboards/boardsource/lulu/keymaps/via/rules.mk | |||
@@ -0,0 +1 @@ | |||
VIA_ENABLE = yes \ No newline at end of file | |||
diff --git a/keyboards/boardsource/lulu/lulu.c b/keyboards/boardsource/lulu/lulu.c new file mode 100644 index 000000000..390815795 --- /dev/null +++ b/keyboards/boardsource/lulu/lulu.c | |||
@@ -0,0 +1,280 @@ | |||
1 | // Copyright 2022 Cole Smith <cole@boadsource.xyz> | ||
2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
3 | |||
4 | #include "lulu.h" | ||
5 | #ifdef RGB_MATRIX_ENABLE | ||
6 | |||
7 | led_config_t g_led_config = { { | ||
8 | {12,11,10,9 ,8 ,7 }, | ||
9 | {18,17,16,15,14,13}, | ||
10 | {24,23,22,21,20,19}, | ||
11 | {30,29,28,27,26,25}, | ||
12 | {NO_LED,35,34,33,32,31}, | ||
13 | {42,43,44,45,46,47}, | ||
14 | {48,49,50,51,52,53}, | ||
15 | {54,55,56,57,58,59}, | ||
16 | {60,61,62,63,64,65}, | ||
17 | {NO_LED,66,67,68,69,70} | ||
18 | },{ | ||
19 | |||
20 | {86,55},{51,55},{17,40},{17,10},{51,10},{86,10}, | ||
21 | {0,0}, {17,0}, {34,0}, {51,0}, {68,0}, {86,0}, | ||
22 | {0,16},{17,16},{34,16},{51,16},{68,16},{86,16}, | ||
23 | {0,32},{17,32},{34,32},{51,32},{68,32},{86,32}, | ||
24 | {0,48},{17,48},{34,48},{51,48},{68,48},{86,48},{103,48}, | ||
25 | {34,64},{51,64},{68,64},{86,64}, | ||
26 | |||
27 | |||
28 | {137,55},{172,55},{206,40},{206,10},{172,10},{137,10}, | ||
29 | {137,0}, {155,0}, {172,0}, {189,0}, {206,0}, {224,0}, | ||
30 | {137,16},{155,16},{172,16},{189,16},{206,16},{224,16}, | ||
31 | {137,32},{155,32},{172,32},{189,32},{206,32},{224,32}, | ||
32 | {137,48},{155,48},{172,48},{189,48},{155,48},{137,48},{120,48}, | ||
33 | {172,64},{189,64},{155,64},{137,64} | ||
34 | },{2,2,2,2,2,2, | ||
35 | 4,4,4,4,4,1, | ||
36 | 1,4,4,4,4,4, | ||
37 | 4,4,4,4,4,1, | ||
38 | 1,4,4,4,4,4, | ||
39 | 1,4,1,1,1, | ||
40 | 2,2,2,2,2,2, | ||
41 | 4,4,4,4,4,1, | ||
42 | 1,4,4,4,4,4, | ||
43 | 4,4,4,4,4,1, | ||
44 | 1,4,4,4,4,4, | ||
45 | 1,4,1,1,1 | ||
46 | }}; | ||
47 | |||
48 | #endif | ||
49 | |||
50 | |||
51 | |||
52 | #ifdef OLED_ENABLE | ||
53 | oled_rotation_t oled_init_kb(oled_rotation_t rotation) { | ||
54 | if (!is_keyboard_master()) { | ||
55 | return OLED_ROTATION_180; // flips the display 180 degrees if offhand | ||
56 | } | ||
57 | return rotation; | ||
58 | } | ||
59 | |||
60 | void render_layer1_logo(void){ | ||
61 | static const char PROGMEM layer_logo[] = { | ||
62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80, | ||
63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
66 | 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, | ||
67 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, | ||
68 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, | ||
69 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
70 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, | ||
71 | 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, | ||
74 | 0xfc, 0x0e, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
78 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00, | ||
79 | 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
80 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, | ||
82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60, | ||
85 | 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
86 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07, | ||
87 | 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
89 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
90 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
91 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
92 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, | ||
93 | 0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
94 | }; | ||
95 | oled_write_raw_P(layer_logo, sizeof(layer_logo)); | ||
96 | } | ||
97 | void render_layer2_logo(void){ | ||
98 | static const char PROGMEM layer_logo[] = { | ||
99 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80, | ||
100 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
102 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
103 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
104 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
105 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, | ||
106 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
107 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, | ||
108 | 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
109 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
110 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, | ||
111 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
112 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
113 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
114 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
115 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00, | ||
116 | 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
117 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
118 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, | ||
119 | 0x3f, 0x70, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
120 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
121 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60, | ||
122 | 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
123 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07, | ||
124 | 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
125 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
126 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
127 | 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | ||
128 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | ||
129 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, | ||
130 | 0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
131 | }; | ||
132 | oled_write_raw_P(layer_logo, sizeof(layer_logo)); | ||
133 | } | ||
134 | void render_layer3_logo(void){ | ||
135 | static const char PROGMEM layer_logo[] = { | ||
136 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80, | ||
137 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
138 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
139 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
140 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, | ||
143 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
144 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, | ||
145 | 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
146 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
147 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, | ||
148 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
149 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
150 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
151 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
152 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00, | ||
153 | 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | ||
154 | 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | ||
155 | 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x38, 0x1f, 0x07, | ||
156 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
157 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
158 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60, | ||
159 | 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
160 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07, | ||
161 | 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | ||
162 | 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | ||
163 | 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
164 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
166 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, | ||
167 | 0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
168 | }; | ||
169 | oled_write_raw_P(layer_logo, sizeof(layer_logo)); | ||
170 | } | ||
171 | void render_layer4_logo(void){ | ||
172 | static const char PROGMEM layer_logo[] = { | ||
173 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80, | ||
174 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, | ||
175 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, | ||
176 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, | ||
177 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
178 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
179 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, | ||
180 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
181 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, | ||
182 | 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
183 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
184 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0e, 0xfc, 0xf0, | ||
185 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
186 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
187 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
188 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
189 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00, | ||
190 | 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
191 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
192 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, | ||
193 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
194 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
195 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60, | ||
196 | 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
197 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07, | ||
198 | 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
199 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
200 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
201 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
202 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
203 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, | ||
204 | 0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
205 | }; | ||
206 | oled_write_raw_P(layer_logo, sizeof(layer_logo)); | ||
207 | } | ||
208 | |||
209 | void render_logo(void) { | ||
210 | static const char PROGMEM logo[] = { | ||
211 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
212 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, | ||
213 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
214 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
215 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
216 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
217 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0x60, | ||
218 | 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
219 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, | ||
220 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, | ||
221 | 0x00, 0xe0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, | ||
222 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
223 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
224 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xc0, | ||
226 | 0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
227 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, | ||
228 | 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, | ||
229 | 0x00, 0x1f, 0xff, 0xff, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, | ||
230 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
231 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
232 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
233 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x78, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, | ||
234 | 0x01, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0x78, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
235 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
236 | 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, | ||
237 | 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
238 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
239 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
240 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
241 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, | ||
242 | 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
243 | }; | ||
244 | oled_write_raw_P(logo, sizeof(logo)); | ||
245 | } | ||
246 | enum Layers{ | ||
247 | _QWERTY, | ||
248 | _RAISE, | ||
249 | _LOWER, | ||
250 | _ADJUST | ||
251 | }; | ||
252 | |||
253 | void process_layer_state(void) { | ||
254 | switch (get_highest_layer(layer_state)) { | ||
255 | case _QWERTY: | ||
256 | render_layer1_logo(); | ||
257 | break; | ||
258 | case _LOWER: | ||
259 | render_layer2_logo(); | ||
260 | break; | ||
261 | case _RAISE: | ||
262 | render_layer3_logo(); | ||
263 | break; | ||
264 | case _ADJUST: | ||
265 | render_layer4_logo(); | ||
266 | break; | ||
267 | } | ||
268 | } | ||
269 | |||
270 | bool oled_task_kb(void) { | ||
271 | if (!oled_task_user()) { return false; } | ||
272 | if (is_keyboard_master()) { | ||
273 | process_layer_state(); | ||
274 | } else { | ||
275 | render_logo(); | ||
276 | } | ||
277 | return false; | ||
278 | } | ||
279 | #endif | ||
280 | |||
diff --git a/keyboards/boardsource/lulu/lulu.h b/keyboards/boardsource/lulu/lulu.h new file mode 100644 index 000000000..bda65f63e --- /dev/null +++ b/keyboards/boardsource/lulu/lulu.h | |||
@@ -0,0 +1,29 @@ | |||
1 | // Copyright 2022 Cole Smith <cole@boadsource.xyz> | ||
2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
3 | |||
4 | #pragma once | ||
5 | |||
6 | #include "quantum.h" | ||
7 | #include "split_util.h" | ||
8 | #define has_usb() is_keyboard_master() | ||
9 | #define is_master is_keyboard_master() | ||
10 | #define LAYOUT( \ | ||
11 | L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ | ||
12 | L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ | ||
13 | L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ | ||
14 | L30, L31, L32, L33, L34, L35, L45, R40, R30, R31, R32, R33, R34, R35, \ | ||
15 | L41, L42, L43, L44, R41, R42, R43, R44 \ | ||
16 | ) \ | ||
17 | { \ | ||
18 | { L00, L01, L02, L03, L04, L05 }, \ | ||
19 | { L10, L11, L12, L13, L14, L15 }, \ | ||
20 | { L20, L21, L22, L23, L24, L25 }, \ | ||
21 | { L30, L31, L32, L33, L34, L35 }, \ | ||
22 | { KC_NO, L41, L42, L43, L44, L45 }, \ | ||
23 | { R05, R04, R03, R02, R01, R00 }, \ | ||
24 | { R15, R14, R13, R12, R11, R10 }, \ | ||
25 | { R25, R24, R23, R22, R21, R20 }, \ | ||
26 | { R35, R34, R33, R32, R31, R30 }, \ | ||
27 | { KC_NO, R44, R43, R42, R41, R40 } \ | ||
28 | } | ||
29 | |||
diff --git a/keyboards/boardsource/lulu/readme.md b/keyboards/boardsource/lulu/readme.md new file mode 100644 index 000000000..e7c530161 --- /dev/null +++ b/keyboards/boardsource/lulu/readme.md | |||
@@ -0,0 +1,24 @@ | |||
1 | # Lulu | ||
2 | |||
3 |  | ||
4 | |||
5 | 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. | ||
6 | |||
7 | |||
8 | * Keyboard Maintainer: [Boardsource](https://github.com/daysgobye) | ||
9 | * Hardware Supported: lulu v1 | ||
10 | * Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb) | ||
11 | |||
12 | |||
13 | Make example for this keyboard (after setting up your build environment): | ||
14 | |||
15 | make boardsource/lulu:default | ||
16 | |||
17 | Flashing example for this keyboard: | ||
18 | |||
19 | make boardsource/lulu:default:flash | ||
20 | |||
21 | Reset keyboard by holding down top left key while you plug in the usb cable. Or by pushing the reset switch on the pcb. | ||
22 | |||
23 | |||
24 | 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). | ||
diff --git a/keyboards/boardsource/lulu/rules.mk b/keyboards/boardsource/lulu/rules.mk new file mode 100644 index 000000000..06d206cb5 --- /dev/null +++ b/keyboards/boardsource/lulu/rules.mk | |||
@@ -0,0 +1,26 @@ | |||
1 | # MCU name | ||
2 | MCU = atmega32u4 | ||
3 | |||
4 | # Bootloader selection | ||
5 | BOOTLOADER = atmel-dfu | ||
6 | |||
7 | # Build Options | ||
8 | # change yes to no to disable | ||
9 | # | ||
10 | BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | ||
11 | MOUSEKEY_ENABLE = yes # Mouse keys | ||
12 | EXTRAKEY_ENABLE = yes # Audio control and System control | ||
13 | CONSOLE_ENABLE = no # Console for debug | ||
14 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
15 | NKRO_ENABLE = yes # Enable N-Key Rollover | ||
16 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
17 | RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | ||
18 | AUDIO_ENABLE = no # Audio output | ||
19 | SPLIT_KEYBOARD = yes | ||
20 | RGB_MATRIX_ENABLE = yes | ||
21 | RGB_MATRIX_DRIVER = WS2812 | ||
22 | RGB_MATRIX_SUPPORTED = yes | ||
23 | OLED_ENABLE = yes | ||
24 | OLED_DRIVER = SSD1306 | ||
25 | LTO_ENABLE = yes | ||
26 | ENCODER_ENABLE = yes | ||