summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2020-09-17 00:41:55 -0700
committerGitHub <noreply@github.com>2020-09-17 00:41:55 -0700
commitf37a134f712891db64b1391a250b0d752206f520 (patch)
tree5067c94b61510d1e1f8db5cabad41d48147724e1
parentf650b03fb77530eb6aa7eab541f6a28c98e0ced6 (diff)
[Keyboard] Convert Corne Keyboard to Split Common (#6001)
* [Keyboard] Convert Corne Keyboard to Split Common * Add VIA Support * Makes sure that ol(e)d and new OLED implementation can't coexist * Add licensing header to files * Add changes based on feedback from foostan * Fixes
-rw-r--r--keyboards/crkbd/config.h54
-rw-r--r--keyboards/crkbd/crkbd.c26
-rw-r--r--keyboards/crkbd/crkbd.h21
-rw-r--r--keyboards/crkbd/keymaps/default/keymap.c18
-rw-r--r--keyboards/crkbd/keymaps/oled_sample/config.h48
-rw-r--r--keyboards/crkbd/keymaps/oled_sample/keymap.c208
-rw-r--r--keyboards/crkbd/keymaps/oled_sample/rules.mk7
-rw-r--r--keyboards/crkbd/rev1/common/common.c21
-rw-r--r--keyboards/crkbd/rev1/common/common.h24
-rw-r--r--keyboards/crkbd/rev1/common/config.h30
-rw-r--r--keyboards/crkbd/rev1/common/keymaps/via/config.h46
-rw-r--r--keyboards/crkbd/rev1/common/keymaps/via/keymap.c193
-rw-r--r--keyboards/crkbd/rev1/common/keymaps/via/rules.mk5
-rw-r--r--keyboards/crkbd/rev1/common/rules.mk2
-rw-r--r--keyboards/crkbd/rev1/common/ssd1306.c360
-rw-r--r--keyboards/crkbd/rev1/config.h61
-rw-r--r--keyboards/crkbd/rev1/legacy/config.h23
-rw-r--r--keyboards/crkbd/rev1/legacy/i2c.c (renamed from keyboards/crkbd/i2c.c)2
-rw-r--r--keyboards/crkbd/rev1/legacy/i2c.h (renamed from keyboards/crkbd/i2c.h)0
-rw-r--r--keyboards/crkbd/rev1/legacy/legacy.c19
-rw-r--r--keyboards/crkbd/rev1/legacy/legacy.h21
-rw-r--r--keyboards/crkbd/rev1/legacy/matrix.c (renamed from keyboards/crkbd/rev1/matrix.c)0
-rw-r--r--keyboards/crkbd/rev1/legacy/post_config.h27
-rw-r--r--keyboards/crkbd/rev1/legacy/rules.mk7
-rw-r--r--keyboards/crkbd/rev1/legacy/serial.c (renamed from keyboards/crkbd/serial.c)0
-rw-r--r--keyboards/crkbd/rev1/legacy/serial.h (renamed from keyboards/crkbd/serial.h)0
-rw-r--r--keyboards/crkbd/rev1/legacy/serial_config.h22
-rw-r--r--keyboards/crkbd/rev1/legacy/serial_config_simpleapi.h23
-rw-r--r--keyboards/crkbd/rev1/legacy/split_scomm.c (renamed from keyboards/crkbd/rev1/split_scomm.c)18
-rw-r--r--keyboards/crkbd/rev1/legacy/split_scomm.h (renamed from keyboards/crkbd/rev1/split_scomm.h)18
-rw-r--r--keyboards/crkbd/rev1/legacy/split_util.c (renamed from keyboards/crkbd/rev1/split_util.c)22
-rw-r--r--keyboards/crkbd/rev1/legacy/split_util.h37
-rw-r--r--keyboards/crkbd/rev1/legacy/ssd1306.c (renamed from keyboards/crkbd/ssd1306.c)12
-rw-r--r--keyboards/crkbd/rev1/rev1.c32
-rw-r--r--keyboards/crkbd/rev1/rev1.h42
-rw-r--r--keyboards/crkbd/rev1/rules.mk6
-rw-r--r--keyboards/crkbd/rev1/serial_config.h4
-rw-r--r--keyboards/crkbd/rev1/serial_config_simpleapi.h5
-rw-r--r--keyboards/crkbd/rev1/split_util.h19
-rw-r--r--keyboards/crkbd/rev1/ssd1306.h (renamed from keyboards/crkbd/ssd1306.h)0
-rw-r--r--keyboards/crkbd/rules.mk8
41 files changed, 1359 insertions, 132 deletions
diff --git a/keyboards/crkbd/config.h b/keyboards/crkbd/config.h
index fb1cdf3962..a2dd710714 100644
--- a/keyboards/crkbd/config.h
+++ b/keyboards/crkbd/config.h
@@ -1,6 +1,6 @@
/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
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
@@ -19,9 +19,55 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-#include <serial_config.h>
-#define USE_I2C
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4653
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER foostan
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+
+// wiring of each half
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+// #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
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 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
+
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
#define USE_SERIAL
#define NO_ACTION_MACRO
diff --git a/keyboards/crkbd/crkbd.c b/keyboards/crkbd/crkbd.c
index 7417ad6047..af0ef8a345 100644
--- a/keyboards/crkbd/crkbd.c
+++ b/keyboards/crkbd/crkbd.c
@@ -1,9 +1,19 @@
-#include "crkbd.h"
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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.
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
-#ifdef SSD1306OLED
- return process_record_gfx(keycode,record) && process_record_user(keycode, record);
-#else
- return process_record_user(keycode, record);
-#endif
-}
+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 "crkbd.h"
diff --git a/keyboards/crkbd/crkbd.h b/keyboards/crkbd/crkbd.h
index 73f2a3f074..4ba9397043 100644
--- a/keyboards/crkbd/crkbd.h
+++ b/keyboards/crkbd/crkbd.h
@@ -1,5 +1,24 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
#ifdef KEYBOARD_crkbd_rev1
- #include "rev1.h"
+# include "rev1.h"
#endif
+
+#include "quantum.h"
diff --git a/keyboards/crkbd/keymaps/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c
index 4dd0be8992..a3a9d95351 100644
--- a/keyboards/crkbd/keymaps/default/keymap.c
+++ b/keyboards/crkbd/keymaps/default/keymap.c
@@ -1,3 +1,21 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
diff --git a/keyboards/crkbd/keymaps/oled_sample/config.h b/keyboards/crkbd/keymaps/oled_sample/config.h
new file mode 100644
index 0000000000..41568c5916
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oled_sample/config.h
@@ -0,0 +1,48 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
+
+//#define USE_MATRIX_I2C
+#ifdef KEYBOARD_crkbd_rev1_common
+# undef USE_I2C
+# define USE_SERIAL
+#endif
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 27
+#define RGBLIGHT_LIMIT_VAL 120
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/oled_sample/keymap.c b/keyboards/crkbd/keymaps/oled_sample/keymap.c
new file mode 100644
index 0000000000..f2d5770b63
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oled_sample/keymap.c
@@ -0,0 +1,208 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum crkbd_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+#define CTLTB CTL_T(KC_TAB)
+#define GUIEI GUI_T(KC_LANG2)
+#define ALTKN ALT_T(KC_LANG1)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTLTB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN
+ ),
+
+ [_LOWER] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ CTLTB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
+ KC_LSFT, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX,
+ GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN
+ ),
+
+ [_RAISE] = LAYOUT(
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ CTLTB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
+ GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN
+
+ ),
+
+ [_ADJUST] = LAYOUT(
+ RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN
+ )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+ return state;
+}
+
+
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ } else {
+ return rotation;
+ }
+}
+
+void render_crkbd_logo(void) {
+ static const char PROGMEM crkbd_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ oled_write_P(crkbd_logo, false);
+}
+
+# define KEYLOG_LEN 5
+char keylog_str[KEYLOG_LEN] = {};
+uint8_t keylogs_str_idx = 0;
+uint16_t log_timer = 0;
+
+const char code_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+void add_keylog(uint16_t keycode) {
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+ keycode = keycode & 0xFF;
+ }
+
+ for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
+ keylog_str[i] = keylog_str[i - 1];
+ }
+ if (keycode < 60) {
+ keylog_str[0] = code_to_name[keycode];
+ }
+ keylog_str[KEYLOG_LEN - 1] = 0;
+
+ log_timer = timer_read();
+}
+
+void update_log(void) {
+ if (timer_elapsed(log_timer) > 750) {
+ add_keylog(0);
+ }
+}
+
+void render_keylogger_status(void) {
+ oled_write_P(PSTR("KLogr"), false);
+ oled_write(keylog_str, false);
+}
+
+void render_default_layer_state(void) {
+ oled_write_P(PSTR("Lyout"), false);
+ switch (get_highest_layer(default_layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" QRTY"), false);
+ break;
+ }
+}
+
+void render_layer_state(void) {
+ oled_write_P(PSTR("LAYER"), false);
+ oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
+ oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
+}
+
+void render_keylock_status(uint8_t led_usb_state) {
+ oled_write_P(PSTR("Lock:"), false);
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("N"), led_usb_state & (1 << USB_LED_NUM_LOCK));
+ oled_write_P(PSTR("C"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
+ oled_write_ln_P(PSTR("S"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
+}
+
+void render_mod_status(uint8_t modifiers) {
+ oled_write_P(PSTR("Mods:"), false);
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
+ oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
+ oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
+ oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
+}
+
+void render_bootmagic_status(void) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+ oled_write_P(PSTR("BTMGK"), false);
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(logo[0][0], !keymap_config.swap_lctl_lgui);
+ oled_write_P(logo[1][0], keymap_config.swap_lctl_lgui);
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(logo[0][1], !keymap_config.swap_lctl_lgui);
+ oled_write_P(logo[1][1], keymap_config.swap_lctl_lgui);
+ oled_write_P(PSTR(" NKRO"), keymap_config.nkro);
+}
+
+void render_status_main(void) {
+ /* Show Keyboard Layout */
+ render_default_layer_state();
+ render_keylock_status(host_keyboard_leds());
+ render_mod_status(get_mods());
+ render_bootmagic_status();
+
+ render_keylogger_status();
+}
+
+void oled_task_user(void) {
+ update_log();
+ if (is_master) {
+ render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_crkbd_logo();
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ add_keylog(keycode);
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/crkbd/keymaps/oled_sample/rules.mk b/keyboards/crkbd/keymaps/oled_sample/rules.mk
new file mode 100644
index 0000000000..fb480bba88
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oled_sample/rules.mk
@@ -0,0 +1,7 @@
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+OLED_DRIVER_ENABLE = yes
diff --git a/keyboards/crkbd/rev1/common/common.c b/keyboards/crkbd/rev1/common/common.c
new file mode 100644
index 0000000000..5ea7347de8
--- /dev/null
+++ b/keyboards/crkbd/rev1/common/common.c
@@ -0,0 +1,21 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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 "common.h"
+
+uint8_t is_master;
diff --git a/keyboards/crkbd/rev1/common/common.h b/keyboards/crkbd/rev1/common/common.h
new file mode 100644
index 0000000000..af1795f480
--- /dev/null
+++ b/keyboards/crkbd/rev1/common/common.h
@@ -0,0 +1,24 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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 "rev1.h"
+
+#define has_usb() is_keyboard_master()
+extern uint8_t is_master;
diff --git a/keyboards/crkbd/rev1/common/config.h b/keyboards/crkbd/rev1/common/config.h
new file mode 100644
index 0000000000..12f5f75766
--- /dev/null
+++ b/keyboards/crkbd/rev1/common/config.h
@@ -0,0 +1,30 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
+
+#define PRODUCT Corne Keyboard Rev.1 (Split Common)
+
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D2
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_SPLIT { 27, 27 }
+#endif
+
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/crkbd/rev1/common/keymaps/via/config.h b/keyboards/crkbd/rev1/common/keymaps/via/config.h
new file mode 100644
index 0000000000..aa2d45e56d
--- /dev/null
+++ b/keyboards/crkbd/rev1/common/keymaps/via/config.h
@@ -0,0 +1,46 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
+
+//#define USE_MATRIX_I2C
+#ifdef KEYBOARD_crkbd_rev1_legacy
+# undef USE_I2C
+# define USE_SERIAL
+#endif
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 27
+#define RGBLIGHT_LIMIT_VAL 120
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/rev1/common/keymaps/via/keymap.c b/keyboards/crkbd/rev1/common/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a3b2e52ce5
--- /dev/null
+++ b/keyboards/crkbd/rev1/common/keymaps/via/keymap.c
@@ -0,0 +1,193 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_3x6_3( \
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, FN_MO13, KC_SPC, KC_ENT, FN_MO23, KC_RALT
+ //`--------------------------' `--------------------------'
+
+ ),
+
+ [1] = LAYOUT_split_3x6_3( \
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT\
+ //`--------------------------' `--------------------------'
+ ),
+
+ [2] = LAYOUT_split_3x6_3( \
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [3] = LAYOUT_split_3x6_3( \
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|