aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyboards/doro67/multi/readme.md7
-rw-r--r--keyboards/doro67/readme.md12
-rw-r--r--keyboards/doro67/regular/config.h4
-rw-r--r--keyboards/doro67/regular/readme.md6
-rw-r--r--keyboards/doro67/rgb/config.h71
-rw-r--r--keyboards/doro67/rgb/info.json82
-rw-r--r--keyboards/doro67/rgb/keymaps/default/config.h19
-rw-r--r--keyboards/doro67/rgb/keymaps/default/keymap.c62
-rw-r--r--keyboards/doro67/rgb/keymaps/default/readme.md1
-rw-r--r--keyboards/doro67/rgb/readme.md17
-rw-r--r--keyboards/doro67/rgb/rgb.c127
-rw-r--r--keyboards/doro67/rgb/rgb.h41
-rw-r--r--keyboards/doro67/rgb/rules.mk83
13 files changed, 522 insertions, 10 deletions
diff --git a/keyboards/doro67/multi/readme.md b/keyboards/doro67/multi/readme.md
index ac1484cd7..40fd53ee1 100644
--- a/keyboards/doro67/multi/readme.md
+++ b/keyboards/doro67/multi/readme.md
@@ -1,9 +1,6 @@
-Doro67 Multi PCB
-===
+# Doro67 Multi PCB
-A custom 65% keyboard with multiple layout support.
-
-Do not flash RGB firmware for this board.
+65% custom keyboard made by 80ultraman/Alf/Backprop Studios with multiple layout support. Despite the layout options available, layout is dictated by the selected integrated plate.
Keyboard Maintainer: [ShadeDream](https://github.com/shadedream)
Hardware Supported: Doro67 Multi PCB
diff --git a/keyboards/doro67/readme.md b/keyboards/doro67/readme.md
index e69de29bb..1648fbde5 100644
--- a/keyboards/doro67/readme.md
+++ b/keyboards/doro67/readme.md
@@ -0,0 +1,12 @@
+# Doro67
+
+The Doro67 is a 65% USB C, integrated plate keyboard with blocker based on the M65-a by Keyclack/Rama.
+
+The [Group Buy](https://geekhack.org/index.php?topic=97265.0) was run by 80ultraman in coordination with Alf for machining and Backprop Studios for PCB design.
+
+There were 3 different PCBs available for this group buy.
+## **Please be aware of which PCB you own and flash the correct firmware on it.**
+
+**Regular:** PCB made for the China GB which only had 1 layout.
+**Multi:** PCB made for the international GB comprising of multiple layouts. While several layouts were possible, layout was determined by the integrated plate layout chosen by the customer.
+**RGB:** PCB made for the international GB which had an identical switch matrix and layout to the regular PCB, with the addition of per key RGB LEDs. \ No newline at end of file
diff --git a/keyboards/doro67/regular/config.h b/keyboards/doro67/regular/config.h
index 9ba591cdd..8c5c670da 100644
--- a/keyboards/doro67/regular/config.h
+++ b/keyboards/doro67/regular/config.h
@@ -6,8 +6,8 @@
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER 80ultraman
-#define PRODUCT doro67
+#define MANUFACTURER Backprop Studio
+#define PRODUCT Doro67 Regular PCB
#define DESCRIPTION 65% custom keyboard
/* key matrix size */
diff --git a/keyboards/doro67/regular/readme.md b/keyboards/doro67/regular/readme.md
index 71d27ceb5..7635a40f9 100644
--- a/keyboards/doro67/regular/readme.md
+++ b/keyboards/doro67/regular/readme.md
@@ -1,8 +1,8 @@
-# Regular PCB for the Doro67
+# Doro67 Regular PCB
-Regular PCB for the Doro67 having ONLY one layout. This is not the PCB with RGB support.
+65% custom keyboard made by 80ultraman/Alf/Backprop Studios available during the China Group Buy.
-Do not flash RGB firmware for this board.
+This is not the PCB with RGB support. Do not flash RGB firmware for this board.
Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
Hardware Supported: Doro67 Regular PCB
diff --git a/keyboards/doro67/rgb/config.h b/keyboards/doro67/rgb/config.h
new file mode 100644
index 000000000..87a30e084
--- /dev/null
+++ b/keyboards/doro67/rgb/config.h
@@ -0,0 +1,71 @@
+/*
+Copyright 2019 MechMerlin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Backprop Studio
+#define PRODUCT Doro67 RGB PCB
+#define DESCRIPTION 65% custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, D4, D6, D7, B4, B5, B6, C6, C7, F5, F6, F7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN B7
+// The number of LEDs connected
+#define DRIVER_LED_TOTAL 67
+
+#define RGB_MATRIX_KEYPRESSES
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+#define RGBLED_NUM 67
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/doro67/rgb/info.json b/keyboards/doro67/rgb/info.json
new file mode 100644
index 000000000..2d9b79a23
--- /dev/null
+++ b/keyboards/doro67/rgb/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Doro 67 RGB",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 16,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 67,
+ "layout": [
+ {"label":"K00", "x":0, "y":0},
+ {"label":"K01", "x":1, "y":0},
+ {"label":"K02", "x":2, "y":0},
+ {"label":"K03", "x":3, "y":0},
+ {"label":"K04", "x":4, "y":0},
+ {"label":"K05", "x":5, "y":0},
+ {"label":"K06", "x":6, "y":0},
+ {"label":"K07", "x":7, "y":0},
+ {"label":"K08", "x":8, "y":0},
+ {"label":"K09", "x":9, "y":0},
+ {"label":"K0A", "x":10, "y":0},
+ {"label":"K0B", "x":11, "y":0},
+ {"label":"K0C", "x":12, "y":0},
+ {"label":"K0D", "x":13, "y":0, "w":2},
+ {"label":"K0E", "x":15, "y":0},
+ {"label":"K10", "x":0, "y":1, "w":1.5},
+ {"label":"K11", "x":1.5, "y":1},
+ {"label":"K12", "x":2.5, "y":1},
+ {"label":"K13", "x":3.5, "y":1},
+ {"label":"K14", "x":4.5, "y":1},
+ {"label":"K15", "x":5.5, "y":1},
+ {"label":"K16", "x":6.5, "y":1},
+ {"label":"K17", "x":7.5, "y":1},
+ {"label":"K18", "x":8.5, "y":1},
+ {"label":"K19", "x":9.5, "y":1},
+ {"label":"K1A", "x":10.5, "y":1},
+ {"label":"K1B", "x":11.5, "y":1},
+ {"label":"K1C", "x":12.5, "y":1},
+ {"label":"K1D", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1E", "x":15, "y":1},
+ {"label":"K20", "x":0, "y":2, "w":1.75},
+ {"label":"K21", "x":1.75, "y":2},
+ {"label":"K22", "x":2.75, "y":2},
+ {"label":"K23", "x":3.75, "y":2},
+ {"label":"K24", "x":4.75, "y":2},
+ {"label":"K25", "x":5.75, "y":2},
+ {"label":"K26", "x":6.75, "y":2},
+ {"label":"K27", "x":7.75, "y":2},
+ {"label":"K28", "x":8.75, "y":2},
+ {"label":"K29", "x":9.75, "y":2},
+ {"label":"K2A", "x":10.75, "y":2},
+ {"label":"K2B", "x":11.75, "y":2},
+ {"label":"K2D", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2E", "x":15, "y":2},
+ {"label":"K30", "x":0, "y":3, "w":2.25},
+ {"label":"K32", "x":2.25, "y":3},
+ {"label":"K33", "x":3.25, "y":3},
+ {"label":"K34", "x":4.25, "y":3},
+ {"label":"K35", "x":5.25, "y":3},
+ {"label":"K36", "x":6.25, "y":3},
+ {"label":"K37", "x":7.25, "y":3},
+ {"label":"K38", "x":8.25, "y":3},
+ {"label":"K39", "x":9.25, "y":3},
+ {"label":"K3A", "x":10.25, "y":3},
+ {"label":"K3B", "x":11.25, "y":3},
+ {"label":"K3C", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3D", "x":14, "y":3},
+ {"label":"K3E", "x":15, "y":3},
+ {"label":"K40", "x":0, "y":4, "w":1.25},
+ {"label":"K41", "x":1.25, "y":4, "w":1.25},
+ {"label":"K42", "x":2.5, "y":4, "w":1.25},
+ {"label":"K43", "x":3.75, "y":4, "w":6.25},
+ {"label":"K49", "x":10, "y":4, "w":1.25},
+ {"label":"K4A", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4C", "x":13, "y":4},
+ {"label":"K4D", "x":14, "y":4},
+ {"label":"K4E", "x":15, "y":4}
+ ]
+ }
+ }
+ }
+ \ No newline at end of file
diff --git a/keyboards/doro67/rgb/keymaps/default/config.h b/keyboards/doro67/rgb/keymaps/default/config.h
new file mode 100644
index 000000000..26c6d6ade
--- /dev/null
+++ b/keyboards/doro67/rgb/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/doro67/rgb/keymaps/default/keymap.c b/keyboards/doro67/rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000..d02665ae7
--- /dev/null
+++ b/keyboards/doro67/rgb/keymaps/default/keymap.c
@@ -0,0 +1,62 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT( \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+
+ [1] = LAYOUT( \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, \
+ QMKBEST, QMKURL, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKURL is released
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/doro67/rgb/keymaps/default/readme.md b/keyboards/doro67/rgb/keymaps/default/readme.md
new file mode 100644
index 000000000..4ba5eb30f
--- /dev/null
+++ b/keyboards/doro67/rgb/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for rgb
diff --git a/keyboards/doro67/rgb/readme.md b/keyboards/doro67/rgb/readme.md
new file mode 100644
index 000000000..3a527c933
--- /dev/null
+++ b/keyboards/doro67/rgb/readme.md
@@ -0,0 +1,17 @@
+# Doro67 RGB PCB
+
+65% custom keyboard made by 80ultraman/Alf/Backprop Studios with in switch RGB featuring the same switch matrix and layout as the regular PCB.
+
+Flashing the regular PCB firmware on this board will work, but will disable RGB lighting.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: Doro 67 RGB PCB
+Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=97265.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make doro67/rgb:default
+
+**RGB Note:** The WS2812 string of LEDs starts from the `K00` key connected to pin `B7` and is connected from left to right, top to bottom, following the physical layout of the board.
+
+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/doro67/rgb/rgb.c b/keyboards/doro67/rgb/rgb.c
new file mode 100644
index 000000000..6f39e00c6
--- /dev/null
+++ b/keyboards/doro67/rgb/rgb.c
@@ -0,0 +1,127 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rgb.h"
+
+// Optional override functions below.
+// You can leave any or all of these undefined.
+// These are only required if you want to perform custom actions.
+
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ setPinOutput(E6);
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+
+ matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ // put your per-action keyboard code here
+ // runs for every action, just before processing by the firmware
+
+ return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ writePinLow(E6);
+ } else {
+ writePinHigh(E6);
+ }
+ led_set_user(usb_led);
+}
+
+const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
+ {{0|(0<<4)}, {15*0, 0}, 0}, // Esc
+ {{0|(1<<4)}, {15*1, 0}, 0}, // 1
+ {{0|(2<<4)}, {15*2, 0}, 0}, // 2
+ {{0|(3<<4)}, {15*3, 0}, 0}, // 3
+ {{0|(4<<4)}, {15*4, 0}, 0}, // 4
+ {{0|(5<<4)}, {15*5, 0}, 0}, // 5
+ {{0|(6<<4)}, {15*6, 0}, 0}, // 6
+ {{0|(7<<4)}, {15*7, 0}, 0}, // 7
+ {{0|(8<<4)}, {15*8, 0}, 0}, // 8
+ {{0|(9<<4)}, {15*9, 0}, 0}, // 9
+ {{0|(10<<4)}, {15*10, 0}, 0}, // 0
+ {{0|(11<<4)}, {15*11, 0}, 0}, // -
+ {{0|(12<<4)}, {15*12, 0}, 0}, // =
+ {{0|(13<<4)}, {15*13.5, 0}, 1}, // Backspace
+ {{0|(14<<4)}, {15*15, 0}, 1}, // Ins
+
+ {{1|(0<<4)}, {15*0.5, 16}, 1}, // Tab
+ {{1|(1<<4)}, {15*1.5, 16}, 0}, // Q
+ {{1|(2<<4)}, {15*2.5, 16}, 0}, // W
+ {{1|(3<<4)}, {15*3.5, 16}, 0}, // E
+ {{1|(4<<4)}, {15*4.5, 16}, 0}, // R
+ {{1|(5<<4)}, {15*5.5, 16}, 0}, // T
+ {{1|(6<<4)}, {15*6.5, 16}, 0}, // Y
+ {{1|(7<<4)}, {15*7.5, 16}, 0}, // U
+ {{1|(8<<4)}, {15*8.5, 16}, 0}, // I
+ {{1|(9<<4)}, {15*9.5, 16}, 0}, // O
+ {{1|(10<<4)}, {15*10.5, 16}, 0}, // P
+ {{1|(11<<4)}, {15*11.5, 16}, 0}, // [
+ {{1|(12<<4)}, {15*12.5, 16}, 0}, // ]
+ {{1|(13<<4)}, {15*13.75, 16}, 1}, //
+ {{1|(14<<4)}, {15*15, 16}, 1}, // Del
+
+ {{2|(0<<4)}, {15*0.75, 32}, 1}, // Capslock
+ {{2|(1<<4)}, {15*1.75, 32}, 0}, // A
+ {{2|(2<<4)}, {15*2.75, 32}, 0}, // S
+ {{2|(3<<4)}, {15*3.75, 32}, 0}, // D
+ {{2|(4<<4)}, {15*4.75, 32}, 0}, // F
+ {{2|(5<<4)}, {15*5.75, 32}, 0}, // G
+ {{2|(6<<4)}, {15*6.75, 32}, 0}, // H
+ {{2|(7<<4)}, {15*7.75, 32}, 0}, // J
+ {{2|(8<<4)}, {15*8.75, 32}, 0}, // K
+ {{2|(9<<4)}, {15*9.75, 32}, 0}, // L
+ {{2|(10<<4)}, {15*10.75, 32}, 0}, // ;
+ {{2|(11<<4)}, {15*11.75, 32}, 0}, // '
+ {{2|(13<<4)}, {15*13.25, 32}, 1}, // Enter
+ {{2|(14<<4)}, {15*15, 32}, 1}, // Pgup
+
+ {{3|(0<<4)}, {15*1.25, 48}, 1}, // LShift
+ {{3|(2<<4)}, {15*2, 48}, 0}, // Z
+ {{3|(3<<4)}, {15*3, 48}, 0}, // X
+ {{3|(4<<4)}, {15*4, 48}, 0}, // C
+ {{3|(5<<4)}, {15*5, 48}, 0}, // V
+ {{3|(6<<4)}, {15*6, 48}, 0}, // B
+ {{3|(7<<4)}, {15*7, 48}, 0}, // N
+ {{3|(8<<4)}, {15*8, 48}, 0}, // M
+ {{3|(9<<4)}, {15*9, 48}, 0}, // ,
+ {{3|(10<<4)}, {15*10, 48}, 0}, // .
+ {{3|(11<<4)}, {15*11, 48}, 0}, // /
+ {{3|(12<<4)}, {15*12.75, 48}, 1}, // Shift
+ {{3|(13<<4)}, {15*14, 48}, 1}, // Up
+ {{3|(14<<4)}, {15*15, 48}, 1}, // Pgdn
+
+ {{4|(0<<4)}, {15*0.25, 64}, 1}, // Ctrl
+ {{4|(1<<4)}, {15*1.5, 64}, 1}, // GUI
+ {{4|(2<<4)}, {15*2.25, 64}, 1}, // Alt
+ {{4|(3<<4)}, {15*6.75, 64}, 0}, // Space
+ {{4|(9<<4)}, {15*9, 64}, 1}, // RAlt
+ {{4|(10<<4)}, {15*10.25, 64}, 1}, // FN
+ {{4|(12<<4)}, {15*13, 64}, 1}, // Left
+ {{4|(13<<4)}, {15*14, 64}, 1}, // Down
+ {{4|(14<<4)}, {15*15, 64}, 1}, // Right
+};
diff --git a/keyboards/doro67/rgb/rgb.h b/keyboards/doro67/rgb/rgb.h
new file mode 100644
index 000000000..aafba11d0
--- /dev/null
+++ b/keyboards/doro67/rgb/rgb.h
@@ -0,0 +1,41 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k49, k4A, k4C, k4D, k4E \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k49, k4A, KC_NO, k4C, k4D, k4E }, \
+}
diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk
new file mode 100644
index 000000000..6438868dc
--- /dev/null
+++ b/keyboards/doro67/rgb/rules.mk
@@ -0,0 +1,83 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# atmega32a bootloadHID
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+RGB_MATRIX_ENABLE = WS2812
+
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
11'>1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829