9b07098dbd63fcd7b69eadfa91b5b01724e80e78

Author
nrtkbb <nrtkbb@gmail.com>
Committer
Drashna Jaelre <drashna@live.com>
Date

Message

[Keyboard] Add uzu42 keyboard (#6842)

* initial commit

* OLEDに表示するロゴをuzuのものに差し替えた

* delete undefault keymaps

* delete info.json

* delete pro_micro.h

* remove USE_Link_Time_Optimization check

* Moved constant defined for each keymap.c to rev1.h

* update layer_state_reader.c

* Rename Uzu42 to uzu42

* remove bootloader.h include

* LAYOUT_kc to LAYOUT

* delete keymap level rules.mk

* update readme.md

* remove persistent_default_layer_set function.

* try refactor to use split_common and use OLED driver

* Revert "try refactor to use split_common and use OLED driver"

This reverts commit 5a9afceacb450ca9eca8a146b64c24d0e0925dd8.

* Update keyboards/uzu42/rev1/config.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/uzu42/rev1/rev1.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/uzu42/rev1/rev1.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/uzu42/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Remove lines already defined in QMK

* Update keyboards/uzu42/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/uzu42/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/uzu42/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* replaced comment block

* Update keyboards/uzu42/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Revert "Revert "try refactor to use split_common and use OLED driver""

This reverts commit a7849216f49a411558d4cfdcfbf3e202defe892a.

* fix setting for RGBLED

* The default of OLED_DRIVER_ENABLE has been changed to no.

* Delete unuse block.

* Remove unnecessary keycode definitions.

* Remove unuse custom keycode.

* Remove not needed code.

* Remove not called code.

* Remove code overwritten by the core.

* Remove LAYOUT_kc macro.

* Moved the definition of the layer block to keymap.c.

* Removed unuse variable.

* Remove code overwritten by the core too.

* incorporate layer changes

* Moved src rule to keymap from rev1.

* Removed rgb_state_reader.c from lib folder and the code move to the keymap.c

* Removed layer_state_reader.c from lib folder and the code move to the keymap.c

* Removed logo_reader.c from lib folder and the code move to the keymap.c

* Removed keylogger.c from lib folder and the code move to the keymap.c

* Moved glcdfont_uzu42.c from lib folder to the default keymaps folder.

* Removed unused files.

Diff

This diff is truncated to protect this page.

  1diff --git a/keyboards/uzu42/config.h b/keyboards/uzu42/config.h
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..45f497d782152c7b8de3e8b0bcd97d7672fa8ffe
  4--- /dev/null
  5+++ b/keyboards/uzu42/config.h
  6@@ -0,0 +1,29 @@
  7+/*
  8+Copyright 2012 Jun Wako <wakojun@gmail.com>
  9+Copyright 2015 Jack Humbert
 10+
 11+This program is free software: you can redistribute it and/or modify
 12+it under the terms of the GNU General Public License as published by
 13+the Free Software Foundation, either version 2 of the License, or
 14+(at your option) any later version.
 15+
 16+This program is distributed in the hope that it will be useful,
 17+but WITHOUT ANY WARRANTY; without even the implied warranty of
 18+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 19+GNU General Public License for more details.
 20+
 21+You should have received a copy of the GNU General Public License
 22+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 23+*/
 24+
 25+#pragma once
 26+
 27+#include "config_common.h"
 28+
 29+#ifndef SOFT_SERIAL_PIN
 30+#define SOFT_SERIAL_PIN D2
 31+#define SERIAL_USE_MULTI_TRANSACTION
 32+#endif
 33+
 34+#define NO_ACTION_MACRO
 35+#define NO_ACTION_FUNCTION
 36diff --git a/keyboards/uzu42/keymaps/default/config.h b/keyboards/uzu42/keymaps/default/config.h
 37new file mode 100644
 38index 0000000000000000000000000000000000000000..bc7897f501082a3285d60da893c11dd9af862a79
 39--- /dev/null
 40+++ b/keyboards/uzu42/keymaps/default/config.h
 41@@ -0,0 +1,47 @@
 42+/*
 43+This is the c configuration file for the keymap
 44+
 45+Copyright 2012 Jun Wako <wakojun@gmail.com>
 46+Copyright 2015 Jack Humbert
 47+
 48+This program is free software: you can redistribute it and/or modify
 49+it under the terms of the GNU General Public License as published by
 50+the Free Software Foundation, either version 2 of the License, or
 51+(at your option) any later version.
 52+
 53+This program is distributed in the hope that it will be useful,
 54+but WITHOUT ANY WARRANTY; without even the implied warranty of
 55+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 56+GNU General Public License for more details.
 57+
 58+You should have received a copy of the GNU General Public License
 59+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 60+*/
 61+
 62+#pragma once
 63+
 64+//#define USE_MATRIX_I2C
 65+
 66+/* Select hand configuration */
 67+
 68+#define MASTER_LEFT
 69+// #define MASTER_RIGHT
 70+// #define EE_HANDS
 71+
 72+#define SSD1306OLED
 73+
 74+#define USE_SERIAL_PD2
 75+
 76+#define TAPPING_FORCE_HOLD
 77+#define TAPPING_TERM 200
 78+
 79+#undef RGBLED_NUM
 80+#define RGBLIGHT_ANIMATIONS
 81+#define RGBLED_NUM 54
 82+#define RGBLIGHT_LIMIT_VAL 120
 83+#define RGBLIGHT_HUE_STEP 10
 84+#define RGBLIGHT_SAT_STEP 17
 85+#define RGBLIGHT_VAL_STEP 17
 86+
 87+// Use the lily version to get the uzu42 logo instead of the qmk logo
 88+#define OLED_FONT_H "keymaps/default/glcdfont_uzu42.c"
 89diff --git a/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c b/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c
 90new file mode 100644
 91index 0000000000000000000000000000000000000000..f5524ec73710a2939538654edb8592d4348b224a
 92--- /dev/null
 93+++ b/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c
 94@@ -0,0 +1,243 @@
 95+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
 96+// See gfxfont.h for newer custom bitmap font info.
 97+
 98+#ifndef FONT5X7_H
 99+#define FONT5X7_H
100+
101+#ifdef __AVR__
102+ #include <avr/io.h>
103+ #include <avr/pgmspace.h>
104+#elif defined(ESP8266)
105+ #include <pgmspace.h>
106+#else
107+ #define PROGMEM
108+#endif
109+
110+// Standard ASCII 5x7 font
111+const unsigned char font[] PROGMEM = {
112+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
113+0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
114+0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
115+0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
116+0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
117+0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
118+0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
119+0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
120+0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
121+0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
122+0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
123+0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
124+0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
125+0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
126+0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
127+0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
128+0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
129+0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
130+0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
131+0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
132+0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
133+0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
134+0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
135+0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
136+0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
137+0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
138+0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
139+0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
140+0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
141+0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
142+0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
143+0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
144+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
145+0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
146+0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
147+0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
148+0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
149+0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
150+0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
151+0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
152+0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
153+0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
154+0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
155+0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
156+0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
157+0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
158+0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
159+0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
160+0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
161+0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
162+0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
163+0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
164+0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
165+0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
166+0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
167+0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
168+0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
169+0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
170+0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
171+0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
172+0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
173+0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
174+0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
175+0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
176+0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00,
177+0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
178+0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
179+0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
180+0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
181+0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
182+0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
183+0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
184+0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
185+0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
186+0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
187+0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
188+0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
189+0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
190+0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
191+0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
192+0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
193+0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
194diff --git a/keyboards/uzu42/keymaps/default/keymap.c b/keyboards/uzu42/keymaps/default/keymap.c
195new file mode 100644
196index 0000000000000000000000000000000000000000..bb439971dc5543c904fb6f3ef5b04f7e24cf2e93
197--- /dev/null
198+++ b/keyboards/uzu42/keymaps/default/keymap.c
199@@ -0,0 +1,292 @@
200+#include QMK_KEYBOARD_H
201+#include "uzu42.h"
202+#ifdef PROTOCOL_LUFA
203+  #include "lufa.h"
204+  #include "split_util.h"
205+#endif
206+#ifdef SSD1306OLED
207+  #include "ssd1306.h"
208+#endif
209+
210+extern keymap_config_t keymap_config;
211+
212+#ifdef RGBLIGHT_ENABLE
213+#include <stdio.h>
214+//Following line allows macro to read current RGB settings
215+extern rgblight_config_t rgblight_config;
216+#endif
217+
218+// Each layer gets a name for readability, which is then used in the keymap matrix below.
219+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
220+// Layer names don't all need to be of the same length, obviously, and you can also skip them
221+// entirely and just use numbers.
222+enum layer_number {
223+  _QWERTY = 0,
224+  _LOWER,
225+  _RAISE,
226+  _ADJUST,
227+};
228+
229+enum custom_keycodes {
230+  QWERTY = SAFE_RANGE,
231+  LOWER,
232+  RAISE,
233+  ADJUST,
234+  RGBRST
235+};
236+
237+#define KC_CTES  CTL_T(KC_ESC)
238+#define KC_SFSP  SFT_T(KC_SPC)
239+#define KC_ALBS  ALT_T(KC_BSPC)
240+
241+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
242+  [_QWERTY] = LAYOUT( \
243+  //,---------------------------------------.                  ,---------------------------------------.
244+        KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,                      KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,\
245+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
246+        KC_A,   KC_S,   KC_D,   KC_F,   KC_G,                      KC_H,   KC_J,   KC_K,   KC_L, KC_ENT,\
247+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
248+        KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,                      KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH,\
249+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
250+     KC_LSFT, KC_SPC,KC_LALT,KC_LGUI,  LOWER,KC_CTES,   KC_SFSP,  RAISE,KC_ALBS,KC_RCTL,KC_LGUI,XXXXXXX \
251+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
252+  ),
253+
254+  [_LOWER] = LAYOUT( \
255+  //,---------------------------------------.                  ,---------------------------------------.
256+        KC_1,   KC_2,   KC_3,   KC_4,   KC_5,                      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,\
257+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
258+      KC_TAB,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,                   KC_LEFT,KC_DOWN,  KC_UP,KC_RGHT, KC_ENT,\
259+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
260+     KC_LCTL, KC_SPC,KC_LSFT,KC_LALT, KC_DEL,                   KC_BSPC,KC_HOME, KC_END,XXXXXXX,XXXXXXX,\
261+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
262+     _______,_______,_______,_______,_______,_______,   _______,_______,_______,_______,_______,_______ \
263+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
264+  ),
265+
266+  [_RAISE] = LAYOUT( \
267+  //,---------------------------------------.                  ,---------------------------------------.
268+     KC_EXLM,  KC_AT,KC_HASH, KC_DLR,KC_PERC,                   KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,\
269+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
270+      KC_TAB,KC_UNDS,KC_PLUS,KC_PIPE,KC_TILD,                   KC_COLN,KC_DQUO,  KC_GT,KC_LCBR,KC_RCBR,\
271+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
272+     KC_LCTL,KC_MINS, KC_EQL,KC_BSLS, KC_GRV,                   KC_SCLN,KC_QUOT,  KC_LT,KC_LBRC,KC_RBRC,\
273+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
274+     _______,_______,_______,_______,_______,_______,   _______,_______,_______,_______,_______,_______ \
275+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
276+  ),
277+
278+  [_ADJUST] = LAYOUT( \
279+  //,---------------------------------------.                  ,---------------------------------------.
280+       KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,                     KC_F6,  KC_F7,  KC_F8,  KC_F9, KC_F10,\
281+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
282+      KC_F11, KC_F12,  RESET,KC_PSCR, KC_INS,                   RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,XXXXXXX,\
283+  //|-------+-------+-------+-------+-------|                  |-------+-------+-------+-------+-------|
284+     XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,                   RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,RGBRST,\
285+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
286+     _______,_______,_______,_______,_______,_______,   _______,_______,_______,_______,_______,_______ \
287+  //|-------+-------+-------+-------+-------+-------|  |-------+-------+-------+-------+-------+-------|
288+  )
289+};
290+
291+int RGB_current_mode;
292+
293+// Setting ADJUST layer RGB back to default
294+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
295+  if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
296+    layer_on(layer3);
297+  } else {
298+    layer_off(layer3);
299diff --git a/keyboards/uzu42/readme.md b/keyboards/uzu42/readme.md
300new file mode 100644
301index 0000000000000000000000000000000000000000..9e287931b9bb2305c4f4fee8835f8be62cba89fd
302--- /dev/null
303+++ b/keyboards/uzu42/readme.md
304@@ -0,0 +1,15 @@
305+# uzu42
306+
307+[![uzu42](https://i.imgur.com/CQTfebZ.jpg)](https://imgur.com/gallery/aKOKBgq)
308+
309+A split keyboard with 4x5 vertically staggered keys and 1 thumb keys.
310+
311+Keyboard Maintainer: [nrtkbb](https://github.com/nrtkbb/) [@nrtkbb](https://twitter.com/nrtkbb)  
312+Hardware Supported: uzu42 PCB, Pro Micro  
313+Hardware Availability: https://nrtkbb.booth.pm/ 
314+
315+Make example for this keyboard (after setting up your build environment):
316+
317+    make uzu42:default
318+
319diff --git a/keyboards/uzu42/rev1/config.h b/keyboards/uzu42/rev1/config.h
320new file mode 100644
321index 0000000000000000000000000000000000000000..8f86d22bf15d965123203f324a9c0cc2daeef5fe
322--- /dev/null
323+++ b/keyboards/uzu42/rev1/config.h
324@@ -0,0 +1,77 @@
325+/*
326+Copyright 2012 Jun Wako <wakojun@gmail.com>
327+Copyright 2015 Jack Humbert
328+
329+This program is free software: you can redistribute it and/or modify
330+it under the terms of the GNU General Public License as published by
331+the Free Software Foundation, either version 2 of the License, or
332+(at your option) any later version.
333+
334+This program is distributed in the hope that it will be useful,
335+but WITHOUT ANY WARRANTY; without even the implied warranty of
336+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
337+GNU General Public License for more details.
338+
339+You should have received a copy of the GNU General Public License
340+along with this program.  If not, see <http://www.gnu.org/licenses/>.
341+*/
342+
343+#pragma once
344+
345+/* USB Device descriptor parameter */
346+#define VENDOR_ID       0xFEED
347+#define PRODUCT_ID      0x3060
348+#define DEVICE_VER      0x0001
349+#define MANUFACTURER    nrtkbb
350+#define PRODUCT         uzu42
351+#define DESCRIPTION     A split keyboard with 4x5 vertically staggered keys and 1 thumb keys
352+
353+/* key matrix size */
354+// Rows are doubled-up
355+#define MATRIX_ROWS 8
356+#define MATRIX_COLS 6
357+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
358+
359+// wiring of each half
360+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
361+// #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
362+
363+/* define if matrix has ghost */
364+//#define MATRIX_HAS_GHOST
365+
366+/* number of backlight levels */
367+// #define BACKLIGHT_LEVELS 3
368+
369+/* Set 0 if debouncing isn't needed */
370+#define DEBOUNCE 5
371+
372+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
373+//#define LOCKING_SUPPORT_ENABLE
374+/* Locking resynchronize hack */
375+//#define LOCKING_RESYNC_ENABLE
376+
377+/* ws2812 RGB LED */
378+#define RGB_DI_PIN D3
379+
380+#ifdef RGBLIGHT_ENABLE
381+#   define RGBLED_NUM 54    // Number of LEDs
382+#   define RGBLED_SPLIT { 27, 27 }
383+#endif
384+
385+/*
386+ * Feature disable options
387+ *  These options are also useful to firmware size reduction.
388+ */
389+
390+/* disable debug print */
391+// #define NO_DEBUG
392+
393+/* disable print */
394+// #define NO_PRINT
395+
396+/* disable action features */
397+//#define NO_ACTION_LAYER
398+//#define NO_ACTION_TAPPING
399+//#define NO_ACTION_ONESHOT
400+//#define NO_ACTION_MACRO
401+//#define NO_ACTION_FUNCTION
402diff --git a/keyboards/uzu42/rev1/rev1.c b/keyboards/uzu42/rev1/rev1.c
403new file mode 100644
404index 0000000000000000000000000000000000000000..0bfac6bd9351bf344155cbd9eafd5854362a3cd1
405--- /dev/null
406+++ b/keyboards/uzu42/rev1/rev1.c
407@@ -0,0 +1,2 @@
408+#include "uzu42.h"
409+
410diff --git a/keyboards/uzu42/rev1/rev1.h b/keyboards/uzu42/rev1/rev1.h
411new file mode 100644
412index 0000000000000000000000000000000000000000..7b9c7d59911e9208ab8525cd2b1a841617cf1c4c
413--- /dev/null
414+++ b/keyboards/uzu42/rev1/rev1.h
415@@ -0,0 +1,36 @@
416+#pragma once
417+
418+#include "../uzu42.h"
419+
420+#include "quantum.h"
421+
422+#ifdef RGBLIGHT_ENABLE
423+//rgb led driver
424+#include "ws2812.h"
425+#endif
426+
427+#ifdef USE_I2C
428+#include <stddef.h>
429+#ifdef __AVR__
430+	#include <avr/io.h>
431+	#include <avr/interrupt.h>
432+#endif
433+#endif
434+
435+#define LAYOUT( \
436+  L00, L01, L02, L03, L04,           R00, R01, R02, R03, R04, \
437+  L10, L11, L12, L13, L14,           R10, R11, R12, R13, R14, \
438+  L20, L21, L22, L23, L24,           R20, R21, R22, R23, R24, \
439+  L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
440+  ) \
441+  { \
442+    { L00, L01, L02, L03, L04 }, \
443+    { L10, L11, L12, L13, L14 }, \
444+    { L20, L21, L22, L23, L24 }, \
445+    { L30, L31, L32, L33, L34, L35 }, \
446+    { R04, R03, R02, R01, R00 }, \
447+    { R14, R13, R12, R11, R10 }, \
448+    { R24, R23, R22, R21, R20 }, \
449+    { R35, R34, R33, R32, R31, R30 } \
450+  }
451+
452diff --git a/keyboards/uzu42/rev1/rules.mk b/keyboards/uzu42/rev1/rules.mk
453new file mode 100644
454index 0000000000000000000000000000000000000000..9d0da7e0f86db6fab974fc764c3a81b281932fa0
455--- /dev/null
456+++ b/keyboards/uzu42/rev1/rules.mk
457@@ -0,0 +1,20 @@
458+# Build Options
459+#   change to "no" to disable the options, or define them in the Makefile in
460+#   the appropriate keymap folder that will get included automatically
461+#
462+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
463+MOUSEKEY_ENABLE = no        # Mouse keys(+4700)
464+EXTRAKEY_ENABLE = no        # Audio control and System control(+450)
465+CONSOLE_ENABLE = no         # Console for debug(+400)
466+COMMAND_ENABLE = no         # Commands for debug and configuration
467+NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
468+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
469+MIDI_ENABLE = no            # MIDI controls
470+AUDIO_ENABLE = no           # Audio output on port C6
471+UNICODE_ENABLE = no         # Unicode
472+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
473+RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
474+SWAP_HANDS_ENABLE = no      # Enable one-hand typing
475+
476+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
477+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
478diff --git a/keyboards/uzu42/rev1/serial_config.h b/keyboards/uzu42/rev1/serial_config.h
479new file mode 100644
480index 0000000000000000000000000000000000000000..4fab8e8ddfcfbd980d98339021c9df508e3eafe5
481--- /dev/null
482+++ b/keyboards/uzu42/rev1/serial_config.h
483@@ -0,0 +1,4 @@
484+#ifndef SOFT_SERIAL_PIN
485+#define SOFT_SERIAL_PIN D2
486+#define SERIAL_USE_MULTI_TRANSACTION
487+#endif
488diff --git a/keyboards/uzu42/rev1/serial_config_simpleapi.h b/keyboards/uzu42/rev1/serial_config_simpleapi.h
489new file mode 100644
490index 0000000000000000000000000000000000000000..0e1dd9e4acb2ae2d0323f3df7af1869ac94b5c0e
491--- /dev/null
492+++ b/keyboards/uzu42/rev1/serial_config_simpleapi.h
493@@ -0,0 +1,5 @@
494+#pragma once
495+
496+#undef SERIAL_USE_MULTI_TRANSACTION
497+#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
498+#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
499diff --git a/keyboards/uzu42/rules.mk b/keyboards/uzu42/rules.mk
500new file mode 100644
501index 0000000000000000000000000000000000000000..ff69431d439a910a1a5ce3dbb3ce1e986af8124c
502--- /dev/null
503+++ b/keyboards/uzu42/rules.mk
504@@ -0,0 +1,40 @@
505+# if firmware size over limit, try this option
506+# CFLAGS += -flto
507+
508+# MCU name
509+MCU = atmega32u4
510+
511+# Bootloader selection
512+#   Teensy       halfkay
513+#   Pro Micro    caterina
514+#   Atmel DFU    atmel-dfu
515+#   LUFA DFU     lufa-dfu
516+#   QMK DFU      qmk-dfu
517+#   ATmega32A    bootloadHID
518+#   ATmega328P   USBasp
519+BOOTLOADER = caterina
520+
521+# Use split_common libraries
522+SPLIT_KEYBOARD = yes
523+
524+DEFAULT_FOLDER = uzu42/rev1
525+
526+# Build Options
527+#   change to "no" to disable the options, or define them in the Makefile in
528+#   the appropriate keymap folder that will get included automatically
529+#
530+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
531+MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
532+EXTRAKEY_ENABLE = no       # Audio control and System control(+450)
533+CONSOLE_ENABLE = no         # Console for debug(+400)
534+COMMAND_ENABLE = no        # Commands for debug and configuration
535+NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
536+BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality
537+MIDI_ENABLE = no            # MIDI controls
538+AUDIO_ENABLE = no           # Audio output on port C6
539+UNICODE_ENABLE = no         # Unicode
540+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
541+RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight. 
542+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
543+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
544+OLED_DRIVER_ENABLE = no      # OLED display
545diff --git a/keyboards/uzu42/uzu42.c b/keyboards/uzu42/uzu42.c
546new file mode 100644
547index 0000000000000000000000000000000000000000..0eb8c5f3aa3579beb0b365626fdd6b209899fee2
548--- /dev/null
549+++ b/keyboards/uzu42/uzu42.c
550@@ -0,0 +1,5 @@
551+#include "uzu42.h"
552+
553+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
554+  return process_record_user(keycode, record);
555+}
556diff --git a/keyboards/uzu42/uzu42.h b/keyboards/uzu42/uzu42.h
557new file mode 100644
558index 0000000000000000000000000000000000000000..dd944e37506f1c62e0586651b9107feb90d81933
559--- /dev/null
560+++ b/keyboards/uzu42/uzu42.h
561@@ -0,0 +1,5 @@
562+#pragma once
563+
564+#ifdef KEYBOARD_uzu42_rev1
565+  #include "rev1.h"
566+#endif