summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/jorne/config.h6
-rw-r--r--keyboards/jorne/info.json240
-rw-r--r--keyboards/jorne/jorne.c70
-rw-r--r--keyboards/jorne/jorne.h31
-rw-r--r--keyboards/jorne/keymaps/default/config.h25
-rw-r--r--keyboards/jorne/keymaps/default/keymap.c84
-rw-r--r--keyboards/jorne/keymaps/via/config.h24
-rw-r--r--keyboards/jorne/keymaps/via/keymap.c84
-rw-r--r--keyboards/jorne/keymaps/via/rules.mk1
-rw-r--r--keyboards/jorne/post_config.h29
-rw-r--r--keyboards/jorne/readme.md25
-rw-r--r--keyboards/jorne/rev1/config.h46
-rw-r--r--keyboards/jorne/rev1/rev1.c3
-rw-r--r--keyboards/jorne/rev1/rev1.h31
-rw-r--r--keyboards/jorne/rev1/rules.mk2
-rw-r--r--keyboards/jorne/rules.mk21
16 files changed, 722 insertions, 0 deletions
diff --git a/keyboards/jorne/config.h b/keyboards/jorne/config.h
new file mode 100644
index 0000000000..7717194431
--- /dev/null
+++ b/keyboards/jorne/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "config_common.h"
+
diff --git a/keyboards/jorne/info.json b/keyboards/jorne/info.json
new file mode 100644
index 0000000000..a28af0a320
--- /dev/null
+++ b/keyboards/jorne/info.json
@@ -0,0 +1,240 @@
+{
+ "keyboard_name": "Jorne",
+ "url": "https://github.com/joric/jorne/wiki",
+ "maintainer": "joric",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "GUI",
+ "x": 0,
+ "y": 2.13
+ },
+ {
+ "label": "~",
+ "x": 1,
+ "y": 1.38
+ },
+ {
+ "label": "Q",
+ "x": 2,
+ "y": 1.38
+ },
+ {
+ "label": "W",
+ "x": 3,
+ "y": 1.13
+ },
+ {
+ "label": "E",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 5,
+ "y": 1.13
+ },
+ {
+ "label": "T",
+ "x": 6,
+ "y": 1.25
+ },
+
+ {
+ "label": "Y",
+ "x": 10.5,
+ "y": 1.25
+ },
+ {
+ "label": "U",
+ "x": 11.5,
+ "y": 1.125
+ },
+ {
+ "label": "I",
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 13.5,
+ "y": 1.125
+ },
+ {
+ "label": "P",
+ "x": 14.5,
+ "y": 1.375
+ },
+ {
+ "label": "{[",
+ "x": 15.5,
+ "y": 1.375
+ },
+ {
+ "label": "}]",
+ "x": 16.5,
+ "y": 2.13
+ },
+
+ {
+ "label": "Ctrl",
+ "x": 1,
+ "y": 2.38
+ },
+ {
+ "label": "A",
+ "x": 2,
+ "y": 2.38
+ },
+ {
+ "label": "S",
+ "x": 3,
+ "y": 2.13
+ },
+ {
+ "label": "D",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 5,
+ "y": 2.13
+ },
+ {
+ "label": "G",
+ "x": 6,
+ "y": 2.25
+ },
+
+ {
+ "label": "H",
+ "x": 10.5,
+ "y": 2.25
+ },
+ {
+ "label": "J",
+ "x": 11.5,
+ "y": 2.13
+ },
+ {
+ "label": "K",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 13.5,
+ "y": 2.125
+ },
+ {
+ "label": ":;",
+ "x": 14.5,
+ "y": 2.375
+ },
+ {
+ "label": "\"'",
+ "x": 15.5,
+ "y": 2.375
+ },
+
+ {
+ "label": "Alt",
+ "x": 1,
+ "y": 3.38
+ },
+ {
+ "label": "Z",
+ "x": 2,
+ "y": 3.38
+ },
+ {
+ "label": "X",
+ "x": 3,
+ "y": 3.13
+ },
+ {
+ "label": "C",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5,
+ "y": 3.13
+ },
+ {
+ "label": "B",
+ "x": 6,
+ "y": 3.25
+ },
+
+ {
+ "label": "N",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "M",
+ "x": 11.5,
+ "y": 3.13
+ },
+ {
+ "label": "<,",
+ "x": 12.5,
+ "y": 3
+ },
+ {
+ "label": ">.",
+ "x": 13.5,
+ "y": 3.13
+ },
+ {
+ "label": "?/",
+ "x": 14.5,
+ "y": 3.38
+ },
+ {
+ "label": "|\\",
+ "x": 15.5,
+ "y": 3.38
+ },
+
+ {
+ "label": "Rise",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "Space",
+ "x": 6,
+ "y": 5
+ },
+ {
+ "label": "Lower",
+ "x": 7,
+ "y": 4.5,
+ "h": 1.5
+ },
+
+ {
+ "label": "Lower",
+ "x": 9.5,
+ "y": 4.5,
+ "h": 1.5
+ },
+ {
+ "label": "Bcs",
+ "x": 10.5,
+ "y": 5
+ },
+ {
+ "label": "Rise",
+ "x": 11.5,
+ "y": 5
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/jorne/jorne.c b/keyboards/jorne/jorne.c
new file mode 100644
index 0000000000..fec24d476c
--- /dev/null
+++ b/keyboards/jorne/jorne.c
@@ -0,0 +1,70 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "jorne.h"
+
+#ifdef OLED_ENABLE
+static void render_logo(void) {
+ static const char PROGMEM raw_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 192, 224, 240, 240, 240, 240, 240, 240, 240, 224,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 224, 240, 0, 0, 240, 252, 254, 255, 255, 255, 1, 240, 252, 255,
+ 255, 255, 255, 255, 255, 255, 255, 127, 31, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 0, 0, 240,
+ 248, 252, 30, 14, 14, 14, 14, 14, 14, 30, 252, 248, 240, 0, 0, 254, 254, 252, 28, 14, 14, 14, 14, 0, 0, 254, 254, 252, 28, 14, 14,
+ 14, 14, 30, 252, 248, 240, 0, 0, 240, 248, 252, 222, 206, 206, 206, 206, 206, 206, 222, 252, 248, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 193, 128, 128, 128, 192, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 255, 255, 255, 0, 0,
+ 15, 31, 63, 120, 112, 112, 112, 112, 112, 112, 120, 63, 31, 15, 0, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 0, 0,
+ 0, 0, 0, 127, 127, 127, 0, 0, 15, 31, 63, 121, 113, 113, 113, 113, 113, 113, 121, 61, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 3, 1, 1, 3, 3, 7, 7, 7, 3, 3, 1, 3, 7, 7, 7, 7, 7, 7, 7, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0
+ };
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+static void render_status(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise\n"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adjust\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undefined\n"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_left()) {
+ render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_logo();
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/jorne/jorne.h b/keyboards/jorne/jorne.h
new file mode 100644
index 0000000000..0158032e5e
--- /dev/null
+++ b/keyboards/jorne/jorne.h
@@ -0,0 +1,31 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#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( \
+L33, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R33, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L33, KC_NO, KC_NO, L30, L31, L32 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { R33, KC_NO, KC_NO, R32, R31, R30 } \
+ }
diff --git a/keyboards/jorne/keymaps/default/config.h b/keyboards/jorne/keymaps/default/config.h
new file mode 100644
index 0000000000..2fb5ca4c4f
--- /dev/null
+++ b/keyboards/jorne/keymaps/default/config.h
@@ -0,0 +1,25 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define OLED_DISPLAY_128X32
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+// #define SPLIT_USB_DETECT
+// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/jorne/keymaps/default/keymap.c b/keyboards/jorne/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cd7eab1709
--- /dev/null
+++ b/keyboards/jorne/keymaps/default/keymap.c
@@ -0,0 +1,84 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+
+enum custom_keycodes {
+ RGBRST = SAFE_RANGE
+};
+
+#define RBR_RGU MT(MOD_RGUI, KC_RBRC)
+#define F12_RGU MT(MOD_RGUI, KC_F12)
+#define PLS_LCT MT(MOD_LCTL, KC_PPLS)
+#define EQL_LCT MT(MOD_LCTL, KC_PEQL)
+#define APP_LCT MT(MOD_LCTL, KC_APP)
+#define EQL_RCT MT(MOD_RCTL, KC_PEQL)
+#define QUO_RCT MT(MOD_RCTL, KC_QUOT)
+#define APP_RCT MT(MOD_RCTL, KC_APP)
+#define MIN_RCT MT(MOD_RCTL, KC_MINS)
+#define EQL_LAL MT(MOD_LALT, KC_EQL)
+#define BSL_RAL MT(MOD_RALT, KC_BSLS)
+#define BSP_LSH MT(MOD_LSFT, KC_BSPC)
+#define SPC_RSH MT(MOD_RSFT, KC_SPC)
+#define DEL_RSE LT(_RAISE, KC_DEL)
+#define TAB_RSE LT(_RAISE, KC_TAB)
+#define ENT_LWR LT(_LOWER, KC_ENT)
+#define ESC_LWR LT(_LOWER, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+ KC_LGUI, KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, RGUI_T(KC_RBRC),
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RCTL_T(KC_QUOT),
+ KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, BSL_RAL,
+ TAB_RSE, SPC_RSH, ENT_LWR, ESC_LWR, BSP_LSH, DEL_RSE
+),
+
+[_LOWER] = LAYOUT(
+ _______, KC_UNDS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, F12_RGU,
+ PLS_LCT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, MIN_RCT,
+ EQL_LAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_RAISE] = LAYOUT(
+ _______, KC_NLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SLCK, KC_CAPS, _______,
+ EQL_LCT, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_MUTE, KC_LEFT, KC_UP, KC_RGHT, KC_INS, APP_RCT,
+ _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_VOLD, KC_END, KC_DOWN, KC_PGDN, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_ADJUST] = LAYOUT(
+ RESET, RGBRST, KC_ASUP, KC_ASTG, KC_ASDN, _______, _______, _______, _______, KC_ASDN, KC_ASTG, KC_ASUP, RGBRST, RESET,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, RGB_VAI, RGB_SAI, RGB_HUI, RGB_TOG,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_MOD,
+ _______, SH_TG, _______, _______, SH_TG, _______
+),
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/jorne/keymaps/via/config.h b/keyboards/jorne/keymaps/via/config.h
new file mode 100644
index 0000000000..0b25d4a0b8
--- /dev/null
+++ b/keyboards/jorne/keymaps/via/config.h
@@ -0,0 +1,24 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define OLED_DISPLAY_128X32
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+// #define SPLIT_USB_DETECT
+// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/jorne/keymaps/via/keymap.c b/keyboards/jorne/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cd7eab1709
--- /dev/null
+++ b/keyboards/jorne/keymaps/via/keymap.c
@@ -0,0 +1,84 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+
+enum custom_keycodes {
+ RGBRST = SAFE_RANGE
+};
+
+#define RBR_RGU MT(MOD_RGUI, KC_RBRC)
+#define F12_RGU MT(MOD_RGUI, KC_F12)
+#define PLS_LCT MT(MOD_LCTL, KC_PPLS)
+#define EQL_LCT MT(MOD_LCTL, KC_PEQL)
+#define APP_LCT MT(MOD_LCTL, KC_APP)
+#define EQL_RCT MT(MOD_RCTL, KC_PEQL)
+#define QUO_RCT MT(MOD_RCTL, KC_QUOT)
+#define APP_RCT MT(MOD_RCTL, KC_APP)
+#define MIN_RCT MT(MOD_RCTL, KC_MINS)
+#define EQL_LAL MT(MOD_LALT, KC_EQL)
+#define BSL_RAL MT(MOD_RALT, KC_BSLS)
+#define BSP_LSH MT(MOD_LSFT, KC_BSPC)
+#define SPC_RSH MT(MOD_RSFT, KC_SPC)
+#define DEL_RSE LT(_RAISE, KC_DEL)
+#define TAB_RSE LT(_RAISE, KC_TAB)
+#define ENT_LWR LT(_LOWER, KC_ENT)
+#define ESC_LWR LT(_LOWER, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+ KC_LGUI, KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, RGUI_T(KC_RBRC),
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RCTL_T(KC_QUOT),
+ KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, BSL_RAL,
+ TAB_RSE, SPC_RSH, ENT_LWR, ESC_LWR, BSP_LSH, DEL_RSE
+),
+
+[_LOWER] = LAYOUT(
+ _______, KC_UNDS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, F12_RGU,
+ PLS_LCT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, MIN_RCT,
+ EQL_LAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_RAISE] = LAYOUT(
+ _______, KC_NLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SLCK, KC_CAPS, _______,
+ EQL_LCT, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_MUTE, KC_LEFT, KC_UP, KC_RGHT, KC_INS, APP_RCT,
+ _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_VOLD, KC_END, KC_DOWN, KC_PGDN, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_ADJUST] = LAYOUT(
+ RESET, RGBRST, KC_ASUP, KC_ASTG, KC_ASDN, _______, _______, _______, _______, KC_ASDN, KC_ASTG, KC_ASUP, RGBRST, RESET,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, RGB_VAI, RGB_SAI, RGB_HUI, RGB_TOG,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_MOD,
+ _______, SH_TG, _______, _______, SH_TG, _______
+),
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/jorne/keymaps/via/rules.mk b/keyboards/jorne/keymaps/via/rules.mk
new file mode 100644
index 0000000000..824642767a
--- /dev/null
+++ b/keyboards/jorne/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/jorne/post_config.h b/keyboards/jorne/post_config.h
new file mode 100644
index 0000000000..8da923087e
--- /dev/null
+++ b/keyboards/jorne/post_config.h
@@ -0,0 +1,29 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifndef BOOTMAGIC_LITE_ROW
+# define BOOTMAGIC_LITE_ROW 0
+#endif
+#ifndef BOOTMAGIC_LITE_COLUMN
+# define BOOTMAGIC_LITE_COLUMN 1
+#endif
+
+#ifndef BOOTMAGIC_LITE_ROW_RIGHT
+# define BOOTMAGIC_LITE_ROW_RIGHT 4
+#endif
+#ifndef BOOTMAGIC_LITE_COLUMN_RIGHT
+# define BOOTMAGIC_LITE_COLUMN_RIGHT 1
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+# ifndef RGBLIGHT_LIMIT_VAL
+# define RGBLIGHT_LIMIT_VAL 120
+# endif
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+# ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+# endif
+#endif
diff --git a/keyboards/jorne/readme.md b/keyboards/jorne/readme.md
new file mode 100644
index 0000000000..71c698e67e
--- /dev/null
+++ b/keyboards/jorne/readme.md
@@ -0,0 +1,25 @@
+# Jorne
+
+<img src="https://i.imgur.com/ywDcw2w.jpg" data-canonical-src="Jorne" width="600"/>
+
+Jorne is essentially [Corne](https://github.com/foostan/crkbd) but with an extra keys for brackets and international layouts (44 keys instead of 42).
+
+* Keyboard Maintainer: [joric](https://github.com/joric)
+* Hardware Supported: Jorne 2.1, 3.0
+* Layout: [keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/#/gists/df19fba80500d1179dfda8c41b9f221a)
+* Hardware Availability: [wiki](https://github.com/joric/jorne/wiki)
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the reset button on the PCB
+* **Keycode in layout**: Press the key mapped to `RESET`
+
+## Make
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jorne/rev1:default
+
+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/jorne/rev1/config.h b/keyboards/jorne/rev1/config.h
new file mode 100644
index 0000000000..7144d9fe0a
--- /dev/null
+++ b/keyboards/jorne/rev1/config.h
@@ -0,0 +1,46 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4753
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER joric
+#define PRODUCT Jorne Keyboard
+
+/* key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2
+
+#define RGB_DI_PIN D3
+#define RGBLED_SPLIT { 28, 28 }
+#define RGBLED_NUM 56
+
+/* 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
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
diff --git a/keyboards/jorne/rev1/rev1.c b/keyboards/jorne/rev1/rev1.c
new file mode 100644
index 0000000000..f120ef87f8
--- /dev/null
+++ b/keyboards/jorne/rev1/rev1.c
@@ -0,0 +1,3 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "rev1.h"
diff --git a/keyboards/jorne/rev1/rev1.h b/keyboards/jorne/rev1/rev1.h
new file mode 100644
index 0000000000..af4ef8e3b3
--- /dev/null
+++ b/keyboards/jorne/rev1/rev1.h
@@ -0,0 +1,31 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "jorne.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( \
+L33, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R33, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L33, KC_NO, KC_NO, L30, L31, L32 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { R33, KC_NO, KC_NO, R32, R31, R30 } \
+ }
diff --git a/keyboards/jorne/rev1/rules.mk b/keyboards/jorne/rev1/rules.mk
new file mode 100644
index 0000000000..52a6de4da9
--- /dev/null
+++ b/keyboards/jorne/rev1/rules.mk
@@ -0,0 +1,2 @@
+OLED_ENABLE = yes # Enable OLED
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/jorne/rules.mk b/keyboards/jorne/rules.mk
new file mode 100644
index 0000000000..cb35ae6cff
--- /dev/null
+++ b/keyboards/jorne/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes # Split common
+LTO_ENABLE = yes
+
+DEFAULT_FOLDER = jorne/rev1