summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyboards/karlb/kbic65/info.json400
-rw-r--r--keyboards/karlb/kbic65/kbic65.c4
-rw-r--r--keyboards/karlb/kbic65/kbic65.h28
-rw-r--r--keyboards/karlb/kbic65/keymaps/default/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/default/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso_full/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso_full/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/via/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/via/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/via/rules.mk3
-rw-r--r--keyboards/karlb/kbic65/readme.md31
-rw-r--r--keyboards/karlb/kbic65/rules.mk17
14 files changed, 591 insertions, 0 deletions
diff --git a/keyboards/karlb/kbic65/info.json b/keyboards/karlb/kbic65/info.json
new file mode 100644
index 0000000000..560e162a3e
--- /dev/null
+++ b/keyboards/karlb/kbic65/info.json
@@ -0,0 +1,400 @@
+{
+ "keyboard_name": "KBIC65",
+ "url": "https://karlb.eu/kbic65/",
+ "maintainer": "b-karl",
+ "diode_direction": "ROW2COL",
+ "matrix_pins": {
+ "cols": [
+ "B2",
+ "B6",
+ "B3",
+ "B1",
+ "F7",
+ "F6",
+ "F5",
+ "F4"
+ ],
+ "rows": [
+ "B5",
+ "D1",
+ "B4",
+ "D0",
+ "E6",
+ "D4",
+ "D7",
+ "C6",
+ "D2"
+ ]
+ },
+ "usb": {
+ "vid": "0x424B",
+ "pid": "0xD87A",
+ "device_ver": "0x0001"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "Esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "!",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "\"",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "£",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "$",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "%",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "^",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "&",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "*",
+ "x": 8,
+ "y": 0
+ },
+ {
+ "label": "(",
+ "x": 9,
+ "y": 0
+ },
+ {
+ "label": ")",
+ "x": 10,
+ "y": 0
+ },
+ {
+ "label": "_",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "BkSp1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "BkSp2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "Delete",
+ "x": 15.5,
+ "y": 0
+ },
+ {
+ "label": "Tab",
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 6.5,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 7.5,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 8.5,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "label": "{",
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "label": "}",
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "label": "Enter_ISO",
+ "x": 13.75,
+ "y": 1,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "label": "¬",
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "label": "Caps Lock",
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 9.75,
+ "y": 2
+ },
+ {
+ "label": ":",
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "label": "@",
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "label": "~",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "PgUp",
+ "x": 15.5,
+ "y": 2
+ },
+ {
+ "label": "Shift",
+ "x": 0,
+ "y": 3,
+ "w": 1.25
+ },
+ {
+ "label": "|",
+ "x": 1.25,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 7.25,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 8.25,
+ "y": 3
+ },
+ {
+ "label": "<",
+ "x": 9.25,
+ "y": 3
+ },
+ {
+ "label": ">",
+ "x": 10.25,
+ "y": 3
+ },
+ {
+ "label": "?",
+ "x": 11.25,
+ "y": 3
+ },
+ {
+ "label": "Shift",
+ "x": 12.25,
+ "y": 3,
+ "w": 1.75
+ },
+ {
+ "label": "PgDn",
+ "x": 15.5,
+ "y": 3
+ },
+ {
+ "label": "↑",
+ "x": 14.25,
+ "y": 3.25
+ },
+ {
+ "label": "Ctrl",
+ "x": 0,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "Win",
+ "x": 1.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "Alt",
+ "x": 2.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "Space",
+ "x": 3.75,
+ "y": 4,
+ "w": 6.25
+ },
+ {
+ "label": "AltGr",
+ "x": 10,
+ "y": 4
+ },
+ {
+ "label": "Win",
+ "x": 11,
+ "y": 4
+ },
+ {
+ "label": "Ctrl",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "←",
+ "x": 13.25,
+ "y": 4.25
+ },
+ {
+ "label": "↓",
+ "x": 14.25,
+ "y": 4.25
+ },
+ {
+ "label": "→",
+ "x": 15.25,
+ "y": 4.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/karlb/kbic65/kbic65.c b/keyboards/karlb/kbic65/kbic65.c
new file mode 100644
index 0000000000..910c2a6c72
--- /dev/null
+++ b/keyboards/karlb/kbic65/kbic65.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "kbic65.h"
diff --git a/keyboards/karlb/kbic65/kbic65.h b/keyboards/karlb/kbic65/kbic65.h
new file mode 100644
index 0000000000..112386bc60
--- /dev/null
+++ b/keyboards/karlb/kbic65/kbic65.h
@@ -0,0 +1,28 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// 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 arguements
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT( \
+ K10, K00, K11, K01, K12, K02, K13, K03, K14, K04, K15, K05, K16, K06, K17, K07, \
+ K30, K20, K31, K21, K32, K22, K33, K23, K34, K24, K35, K25, K36, K26, K37, \
+ K50, K40, K51, K41, K52, K42, K53, K43, K54, K44, K55, K45, K56, K47, \
+ K70, K60, K71, K61, K72, K62, K73, K63, K74, K64, K75, K65, K76, K66, K57, \
+ K80, K81, K82, K83, K84, K85, K86, K87, K77, K67 \
+) { \
+ {K00, K01, K02, K03, K04, K05, K06, K07}, \
+ {K10, K11, K12, K13, K14, K15, K16, K17}, \
+ {K20, K21, K22, K23, K24, K25, K26, KC_NO}, \
+ {K30, K31, K32, K33, K34, K35, K36, K37}, \
+ {K40, K41, K42, K43, K44, K45, KC_NO, K47}, \
+ {K50, K51, K52, K53, K54, K55, K56, K57}, \
+ {K60, K61, K62, K63, K64, K65, K66, K67}, \
+ {K70, K71, K72, K73, K74, K75, K76, K77}, \
+ {K80, K81, K82, K83, K84, K85, K86, K87} \
+}
+
diff --git a/keyboards/karlb/kbic65/keymaps/default/keymap.c b/keyboards/karlb/kbic65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1691cdd193
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/default/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Default ANSI keymap
+[0] = LAYOUT(
+KC_ESC, 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_HOME,
+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_PGUP,
+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_PGDN,
+KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, 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_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/default/readme.md b/keyboards/karlb/kbic65/keymaps/default/readme.md
new file mode 100644
index 0000000000..a071af6710
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# Default KBIC65 Layout
+
+This is the default layout for the KBIC65, it is recommended that you create your own keymap tailored to your specific needs. It is an ANSI keymap but uses the full KBIC65 layoutm, i.e., includes ISO backslash and split backspace but these are set to no action in this default layout. The layers are based on the KBDFans 67 rev 2 default keymap.
diff --git a/keyboards/karlb/kbic65/keymaps/iso/keymap.c b/keyboards/karlb/kbic65/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..ad2b23626f
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ISO keymap
+[0] = LAYOUT(
+KC_ESC, 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_HOME,
+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_ENT, KC_PGUP,
+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_NUHS, KC_PGDN,
+KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, 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_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/iso/readme.md b/keyboards/karlb/kbic65/keymaps/iso/readme.md
new file mode 100644
index 0000000000..8d83b91f09
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# KBIC65 ISO Layout
+
+This is a basic ISO keymap for the KBIC65. It is based on the KBDFans 67 rev 2 default keymap.
diff --git a/keyboards/karlb/kbic65/keymaps/iso_full/keymap.c b/keyboards/karlb/kbic65/keymaps/iso_full/keymap.c
new file mode 100644
index 0000000000..671cc8b8a8
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso_full/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ISO keymap
+[0] = LAYOUT(
+KC_ESC, 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_DEL, KC_HOME,
+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_ENT, KC_PGUP,
+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_NUHS, KC_PGDN,
+KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, 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_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/iso_full/readme.md b/keyboards/karlb/kbic65/keymaps/iso_full/readme.md
new file mode 100644
index 0000000000..9cd1d1c536
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso_full/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# KBIC65 ISO 70-key Layout
+
+This is a 70 key ISO keymap for the KBIC65 including split backspace, it uses the maximum amount of keys available on the KBIC65. It is recommended to modify the layout for your personal needs.
diff --git a/keyboards/karlb/kbic65/keymaps/via/keymap.c b/keyboards/karlb/kbic65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1691cdd193
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/via/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Default ANSI keymap
+[0] = LAYOUT(
+KC_ESC, 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_HOME,
+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_PGUP,
+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_PGDN,
+KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, 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_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/via/readme.md b/keyboards/karlb/kbic65/keymaps/via/readme.md
new file mode 100644
index 0000000000..50b9f63309
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/via/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# KBIC65 VIA Support
+
+VIA support for KBIC65 with same keymap as the default (ANSI).
diff --git a/keyboards/karlb/kbic65/keymaps/via/rules.mk b/keyboards/karlb/kbic65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..fcb7b9eab6
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/karlb/kbic65/readme.md b/keyboards/karlb/kbic65/readme.md
new file mode 100644
index 0000000000..43d2e5cd70
--- /dev/null
+++ b/keyboards/karlb/kbic65/readme.md
@@ -0,0 +1,31 @@
+# KBIC65
+
+![KBIC65 top-down view](https://github.com/b-karl/KBIC65/blob/main/img/photoshoot/full_keyboard_straight_above.jpg)
+
+A 65%/70 key FR4-stack open-source keyboard with some design optimizations for wireless. For more info visit the [KBIC65 website](https://karlb.eu/kbic65/) or the [GitHub repo](https://github.com/b-karl/KBIC65).
+
+* Keyboard Maintainer: [Karl Berggren](https://github.com/b-karl)
+* Hardware Supported: [KBIC65](https://github.com/b-karl/KBIC65)
+* Hardware Availability: Open-source design [available on GitHub](https://github.com/b-karl/KBIC65)
+
+Firmware and default keymap have been tested using a KBIC65 with an Elite-C rev 4 controller.
+
+## Build firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+```bash
+ qmk compile -kb karlb/kbic65 -km default
+```
+
+See the [QMK setup documentation](https://docs.qmk.fm/#/newbs_getting_started) to set up the QMK tools. I recommend flashing using
+
+```bash
+ qmk flash -kb karlb/kbic65 -km default
+```
+
+## Bootloader
+
+Since the keyboard is designed to have an exposed ProMicro the bootloader can always be entered by short circuiting the `RST` and `GND` pins on the ProMicro. If the keyboard is configured with the default keymap, the bootloader can be entered by pressing `R_GUI/FN + B`
+
+
diff --git a/keyboards/karlb/kbic65/rules.mk b/keyboards/karlb/kbic65/rules.mk
new file mode 100644
index 0000000000..f7da71aab2
--- /dev/null
+++ b/keyboards/karlb/kbic65/rules.mk
@@ -0,0 +1,17 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output