summaryrefslogtreecommitdiff
path: root/keyboards/drhigsby
diff options
context:
space:
mode:
authorpeepeetee <43021794+peepeetee@users.noreply.github.com>2022-02-01 12:36:16 +0800
committerGitHub <noreply@github.com>2022-01-31 20:36:16 -0800
commit984481ff8e17173a0faaa12c524d0b502fb438cb (patch)
treefd1bc7f040d13b352524f5c9109b0df7ffdf45cb /keyboards/drhigsby
parent3b580de0232246911bd43fffdd24243bb82e28aa (diff)
downloadqmk_firmware-984481ff8e17173a0faaa12c524d0b502fb438cb.tar.gz
qmk_firmware-984481ff8e17173a0faaa12c524d0b502fb438cb.zip
[Keyboard] move @drhigsby 's boards into /drhigsby (#16041)
Diffstat (limited to 'keyboards/drhigsby')
-rw-r--r--keyboards/drhigsby/bkf/bkf.c16
-rw-r--r--keyboards/drhigsby/bkf/bkf.h53
-rw-r--r--keyboards/drhigsby/bkf/config.h60
-rw-r--r--keyboards/drhigsby/bkf/info.json15
-rw-r--r--keyboards/drhigsby/bkf/keymaps/default/keymap.c62
-rw-r--r--keyboards/drhigsby/bkf/keymaps/default/readme.md1
-rw-r--r--keyboards/drhigsby/bkf/readme.md21
-rw-r--r--keyboards/drhigsby/bkf/rules.mk20
-rw-r--r--keyboards/drhigsby/dubba175/config.h56
-rw-r--r--keyboards/drhigsby/dubba175/dubba175.c16
-rw-r--r--keyboards/drhigsby/dubba175/dubba175.h30
-rw-r--r--keyboards/drhigsby/dubba175/info.json10
-rw-r--r--keyboards/drhigsby/dubba175/keymaps/default/config.h19
-rw-r--r--keyboards/drhigsby/dubba175/keymaps/default/keymap.c82
-rw-r--r--keyboards/drhigsby/dubba175/keymaps/default/readme.md1
-rw-r--r--keyboards/drhigsby/dubba175/keymaps/default/rules.mk1
-rw-r--r--keyboards/drhigsby/dubba175/readme.md15
-rw-r--r--keyboards/drhigsby/dubba175/rules.mk19
-rw-r--r--keyboards/drhigsby/ogurec/config.h56
-rw-r--r--keyboards/drhigsby/ogurec/info.json86
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/dack/config.h19
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/dack/keymap.c97
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/dack/readme.md3
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/default/config.h19
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/default/keymap.c76
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/default/readme.md1
-rw-r--r--keyboards/drhigsby/ogurec/keymaps/default/rules.mk1
-rw-r--r--keyboards/drhigsby/ogurec/left_pm/left_pm.h49
-rw-r--r--keyboards/drhigsby/ogurec/left_pm/readme.md13
-rw-r--r--keyboards/drhigsby/ogurec/left_pm/rules.mk0
-rw-r--r--keyboards/drhigsby/ogurec/ogurec.c16
-rw-r--r--keyboards/drhigsby/ogurec/ogurec.h24
-rw-r--r--keyboards/drhigsby/ogurec/readme.md27
-rw-r--r--keyboards/drhigsby/ogurec/right_pm/readme.md13
-rw-r--r--keyboards/drhigsby/ogurec/right_pm/right_pm.h49
-rw-r--r--keyboards/drhigsby/ogurec/right_pm/rules.mk0
-rw-r--r--keyboards/drhigsby/ogurec/rules.mk19
-rw-r--r--keyboards/drhigsby/packrat/config.h59
-rw-r--r--keyboards/drhigsby/packrat/info.json26
-rw-r--r--keyboards/drhigsby/packrat/keymaps/3uc/config.h19
-rw-r--r--keyboards/drhigsby/packrat/keymaps/3uc/keymap.c92
-rw-r--r--keyboards/drhigsby/packrat/keymaps/3uc/readme.md1
-rw-r--r--keyboards/drhigsby/packrat/keymaps/3uc/rules.mk1
-rw-r--r--keyboards/drhigsby/packrat/keymaps/default/config.h19
-rw-r--r--keyboards/drhigsby/packrat/keymaps/default/keymap.c81
-rw-r--r--keyboards/drhigsby/packrat/keymaps/default/readme.md3
-rw-r--r--keyboards/drhigsby/packrat/keymaps/default/rules.mk1
-rw-r--r--keyboards/drhigsby/packrat/packrat.c28
-rw-r--r--keyboards/drhigsby/packrat/packrat.h79
-rw-r--r--keyboards/drhigsby/packrat/readme.md25
-rw-r--r--keyboards/drhigsby/packrat/rules.mk20
51 files changed, 1519 insertions, 0 deletions
diff --git a/keyboards/drhigsby/bkf/bkf.c b/keyboards/drhigsby/bkf/bkf.c
new file mode 100644
index 0000000000..6df3ed56f6
--- /dev/null
+++ b/keyboards/drhigsby/bkf/bkf.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 "bkf.h"
diff --git a/keyboards/drhigsby/bkf/bkf.h b/keyboards/drhigsby/bkf/bkf.h
new file mode 100644
index 0000000000..3ea53e2de5
--- /dev/null
+++ b/keyboards/drhigsby/bkf/bkf.h
@@ -0,0 +1,53 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 zzzz KC_NO
+
+#define LAYOUT_625uC( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, \
+ k300, k301, k302, k306, k308, k309, k310 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \
+ { k300, k301, k302, zzzz, zzzz, zzzz, k306, zzzz, k308, k309, k310, k311 } \
+}
+
+#define LAYOUT_2x3uC( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, \
+ k300, k301, k302, k304, k306, k308, k309, k310 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \
+ { k300, k301, k302, zzzz, k304, zzzz, k306, zzzz, k308, k309, k310, k311 } \
+}
diff --git a/keyboards/drhigsby/bkf/config.h b/keyboards/drhigsby/bkf/config.h
new file mode 100644
index 0000000000..af1b2be747
--- /dev/null
+++ b/keyboards/drhigsby/bkf/config.h
@@ -0,0 +1,60 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 MANUFACTURER DrHigsby
+#define PRODUCT BKF - Base Kit Forty
+#define VENDOR_ID 0x0007
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/*
+ * 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)
+ *
+ */
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F6, F7, B1, B3 }
+#define MATRIX_COL_PINS { B6, B2, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
+#define UNUSED_PINS
+
+/* Define encoder pads */
+#define ENCODERS_PAD_A { F4 }
+#define ENCODERS_PAD_B { F5 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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
diff --git a/keyboards/drhigsby/bkf/info.json b/keyboards/drhigsby/bkf/info.json
new file mode 100644
index 0000000000..c7b109d651
--- /dev/null
+++ b/keyboards/drhigsby/bkf/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "BKF - Base Kit Forty",
+ "url": "http://www.keyboard-layout-editor.com/#/gists/8a9ebae3a5f3f601bb928f7265db0e2e",
+ "maintainer": "drhigsby",
+ "layouts": {
+ "LAYOUT_625uC": {
+ "layout": [{"label":"Tab", "x":0, "y":0, "w":1.5}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"Y", "x":6.5, "y":0}, {"label":"U", "x":7.5, "y":0}, {"label":"I", "x":8.5, "y":0}, {"label":"O", "x":9.5, "y":0}, {"label":"P", "x":10.5, "y":0}, {"label":"{", "x":11.5, "y":0}, {"label":"}", "x":12.5, "y":0}, {"label":"Caps Lock", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"S", "x":2.75, "y":1}, {"label":"D", "x":3.75, "y":1}, {"label":"F", "x":4.75, "y":1}, {"label":"G", "x":5.75, "y":1}, {"label":"H", "x":6.75, "y":1}, {"label":"J", "x":7.75, "y":1}, {"label":"K", "x":8.75, "y":1}, {"label":"L", "x":9.75, "y":1}, {"label":":", "x":10.75, "y":1}, {"label":"Control", "x":11.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":2.25}, {"label":"Z", "x":2.25, "y":2}, {"label":"X", "x":3.25, "y":2}, {"label":"C", "x":4.25, "y":2}, {"label":"V", "x":5.25, "y":2}, {"label":"B", "x":6.25, "y":2}, {"label":"N", "x":7.25, "y":2}, {"label":"M", "x":8.25, "y":2}, {"label":"<", "x":9.25, "y":2}, {"label":">", "x":10.25, "y":2}, {"label":"?", "x":11.25, "y":2}, {"label":"Shift", "x":12.25, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"label":"", "x":3.75, "y":3, "w":6.25}, {"label":"Alt", "x":10, "y":3, "w":1.25}, {"label":"Win", "x":11.25, "y":3}, {"label":"Menu", "x":12.25, "y":3, "w":1.25}]
+ },
+
+ "LAYOUT_2x3uC": {
+ "layout": [{"label":"Tab", "x":0, "y":0, "w":1.5}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"Y", "x":6.5, "y":0}, {"label":"U", "x":7.5, "y":0}, {"label":"I", "x":8.5, "y":0}, {"label":"O", "x":9.5, "y":0}, {"label":"P", "x":10.5, "y":0}, {"label":"{", "x":11.5, "y":0}, {"label":"}", "x":12.5, "y":0}, {"label":"Caps Lock", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"S", "x":2.75, "y":1}, {"label":"D", "x":3.75, "y":1}, {"label":"F", "x":4.75, "y":1}, {"label":"G", "x":5.75, "y":1}, {"label":"H", "x":6.75, "y":1}, {"label":"J", "x":7.75, "y":1}, {"label":"K", "x":8.75, "y":1}, {"label":"L", "x":9.75, "y":1}, {"label":":", "x":10.75, "y":1}, {"label":"Control", "x":11.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":2.25}, {"label":"Z", "x":2.25, "y":2}, {"label":"X", "x":3.25, "y":2}, {"label":"C", "x":4.25, "y":2}, {"label":"V", "x":5.25, "y":2}, {"label":"B", "x":6.25, "y":2}, {"label":"N", "x":7.25, "y":2}, {"label":"M", "x":8.25, "y":2}, {"label":"<", "x":9.25, "y":2}, {"label":">", "x":10.25, "y":2}, {"label":"?", "x":11.25, "y":2}, {"label":"Shift", "x":12.25, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"label":"", "x":3.75, "y":3, "w":3}, {"label":"", "x":6.75, "y":3, "w":3}, {"label":"Alt", "x":9.75, "y":3, "w":1.25}, {"label":"Win", "x":11, "y":3, "w":1.25}, {"label":"Menu", "x":12.25, "y":3, "w":1.25}]
+ }
+
+ }
+}
diff --git a/keyboards/drhigsby/bkf/keymaps/default/keymap.c b/keyboards/drhigsby/bkf/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cb047a6816
--- /dev/null
+++ b/keyboards/drhigsby/bkf/keymaps/default/keymap.c
@@ -0,0 +1,62 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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
+
+enum layers{
+ _BASE,
+ _NUM,
+ _FN
+};
+
+#define NUM MO(_NUM)
+#define FN MO(_FN)
+#define xxx KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_625uC(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, NUM, FN, KC_QUOT
+ ),
+
+
+ [_NUM] = LAYOUT_625uC(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, KC_PIPE,
+ xxx, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, xxx, xxx, xxx, xxx, xxx,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx
+ ),
+
+ [_FN] = LAYOUT_625uC(
+ xxx, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx
+ )
+
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
diff --git a/keyboards/drhigsby/bkf/keymaps/default/readme.md b/keyboards/drhigsby/bkf/keymaps/default/readme.md
new file mode 100644
index 0000000000..ea52e61583
--- /dev/null
+++ b/keyboards/drhigsby/bkf/keymaps/default/readme.md
@@ -0,0 +1 @@
+# Default BKF - Base Kit Forty Keymap
diff --git a/keyboards/drhigsby/bkf/readme.md b/keyboards/drhigsby/bkf/readme.md
new file mode 100644
index 0000000000..18742920a4
--- /dev/null
+++ b/keyboards/drhigsby/bkf/readme.md
@@ -0,0 +1,21 @@
+# BKF - Base Kit Forty
+
+![BKF](https://i.imgur.com/3vR0yeW.png)
+
+BKF, Base Kit Forty, is a 40% style keyboard that is fully compatbile with a standard base kit of keycaps with 3 different spacebar configurations. It supports both standard R3 1.75u as well as stepped R3 1.75u on the left side. The key in the top right corner also sports rotary encoder support.
+
+* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby)
+* Hardware Supported: BKF (https://github.com/drhigsby/bkf)
+* Hardware Availability: open-source stacked acrylic case design available at maintainer's github / make your own
+
+Make example for this keyboard (after setting up your build environment):
+
+ make drhigsby/bkf:default
+
+To place this keyboard into bootloader mode, press the reset button on the PCB or short the RST and GND pins on the pro micro.
+
+Flashing example for this keyboard:
+
+ make drhigsby/bkf:default:flash
+
+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/drhigsby/bkf/rules.mk b/keyboards/drhigsby/bkf/rules.mk
new file mode 100644
index 0000000000..9861cf0ad6
--- /dev/null
+++ b/keyboards/drhigsby/bkf/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # 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 = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = no # Use link time optimization
+ENCODER_ENABLE = yes
diff --git a/keyboards/drhigsby/dubba175/config.h b/keyboards/drhigsby/dubba175/config.h
new file mode 100644
index 0000000000..2eab0e2693
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2020 drhigsby
+ *
+ * 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 MANUFACTURER DrHigsby
+#define PRODUCT Dubba175
+#define VENDOR_ID 0x0420
+#define PRODUCT_ID 0x0420
+#define DEVICE_VER 0x0420
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 10
+
+/*
+ * 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)
+ *
+ */
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B1, B3, B2, B5 }
+#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 \ No newline at end of file
diff --git a/keyboards/drhigsby/dubba175/dubba175.c b/keyboards/drhigsby/dubba175/dubba175.c
new file mode 100644
index 0000000000..066e772fa2
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/dubba175.c
@@ -0,0 +1,16 @@
+/* Copyright 2020 drhigsby
+ *
+ * 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 "dubba175.h" \ No newline at end of file
diff --git a/keyboards/drhigsby/dubba175/dubba175.h b/keyboards/drhigsby/dubba175/dubba175.h
new file mode 100644
index 0000000000..0413b158d2
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/dubba175.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 drhigsby
+ *
+ * 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"
+
+#define LAYOUT( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, \
+ k302, k303, k304, k305, k306, k307 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209 }, \
+ { KC_NO, KC_NO, k302, k303, k304, k305, k306, k307, KC_NO, KC_NO } \
+}
diff --git a/keyboards/drhigsby/dubba175/info.json b/keyboards/drhigsby/dubba175/info.json
new file mode 100644
index 0000000000..e2830ff4c2
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "dubba175",
+ "url": "http://www.keyboard-layout-editor.com/#/gists/3185de74dfb973bf6d42e785994cfd4e",
+ "maintainer": "drhigsby",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"", "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":0, "y":1}, {"label":"", "x":1, "y":1}, {"label":"", "x":2, "y":1}, {"label":"", "x":3, "y":1}, {"label":"", "x":4, "y":1}, {"label":"", "x":5, "y":1}, {"label":"", "x":6, "y":1}, {"label":"", "x":7, "y":1}, {"label":"", "x":8, "y":1}, {"label":"", "x":9, "y":1}, {"label":"", "x":0, "y":2}, {"label":"", "x":1, "y":2}, {"label":"", "x":2, "y":2}, {"label":"", "x":3, "y":2}, {"label":"", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"", "x":9, "y":2}, {"label":"", "x":1.25, "y":3}, {"label":"", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":1.75}, {"x":5, "y":3, "w":1.75}, {"label":"", "x":6.75, "y":3}, {"label":"", "x":7.75, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/drhigsby/dubba175/keymaps/default/config.h b/keyboards/drhigsby/dubba175/keymaps/default/config.h
new file mode 100644
index 0000000000..7a4761b1ae
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2020 drhigsby
+ *
+ * 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 COMBO_COUNT 8
+#define COMBO_TERM 40
diff --git a/keyboards/drhigsby/dubba175/keymaps/default/keymap.c b/keyboards/drhigsby/dubba175/keymaps/default/keymap.c
new file mode 100644
index 0000000000..37bae5b435
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/keymaps/default/keymap.c
@@ -0,0 +1,82 @@
+/* Copyright 2020 drhigsby
+ *
+ * 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
+
+enum layers{
+ _BASE,
+ _NUM,
+ _FN
+};
+
+enum combo_events {
+ combo_ESC,
+ combo_BACK,
+ combo_TAB,
+ combo_DELETE,
+ combo_ENTER,
+ combo_QUOT,
+ combo_LPRN,
+ combo_RPRN,
+};
+
+const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END};
+const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END};
+const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END};
+const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END};
+const uint16_t PROGMEM quot_combo[] = {KC_K, KC_L, COMBO_END};
+const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
+const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
+
+
+combo_t key_combos[COMBO_COUNT] = {
+ [combo_ESC] = COMBO(esc_combo, KC_ESC),
+ [combo_BACK] = COMBO(bspc_combo, KC_BSPC),
+ [combo_TAB] = COMBO(tab_combo, KC_TAB),
+ [combo_DELETE] = COMBO(del_combo, KC_DEL),
+ [combo_ENTER] = COMBO(enter_combo, KC_ENT),
+ [combo_QUOT] = COMBO(quot_combo, KC_QUOT),
+ [combo_LPRN] = COMBO(lprn_combo, KC_LPRN),
+ [combo_RPRN] = COMBO(rprn_combo, KC_RPRN),
+};
+
+#define NUM MO(_NUM)
+#define FN MO(_FN)
+#define xxx KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LALT, KC_LCTL, NUM, KC_SPC, KC_RGUI, FN
+ ),
+
+ [_NUM] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT,
+ xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN
+ ),
+
+ [_FN] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
+ xxx, xxx, xxx, xxx, xxx, xxx
+ )
+
+};
diff --git a/keyboards/drhigsby/dubba175/keymaps/default/readme.md b/keyboards/drhigsby/dubba175/keymaps/default/readme.md
new file mode 100644
index 0000000000..8e5c2c528b
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/keymaps/default/readme.md
@@ -0,0 +1 @@
+# Default Dubba175 Keymap
diff --git a/keyboards/drhigsby/dubba175/keymaps/default/rules.mk b/keyboards/drhigsby/dubba175/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/keymaps/default/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/drhigsby/dubba175/readme.md b/keyboards/drhigsby/dubba175/readme.md
new file mode 100644
index 0000000000..a07da251ab
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/readme.md
@@ -0,0 +1,15 @@
+# Dubba175
+
+![Dubba175](https://i.imgur.com/nzDZuS3h.jpg)
+
+Dubba175 is a 10u wide ortholinear keyboard featuring 2x 1.75u spacebars as the bottom row layout option.
+
+* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby)
+* Hardware Supported: Dubba175 (https://github.com/drhigsby/dubba175)
+* Hardware Availability: P3DStore.com offers a stacked acrlyic case / make your own
+
+Make example for this keyboard (after setting up your build environment):
+
+ make drhigsby/dubba175: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/drhigsby/dubba175/rules.mk b/keyboards/drhigsby/dubba175/rules.mk
new file mode 100644
index 0000000000..a51132838a
--- /dev/null
+++ b/keyboards/drhigsby/dubba175/rules.mk
@@ -0,0 +1,19 @@
+# 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 = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = no # Use link time optimization
diff --git a/keyboards/drhigsby/ogurec/config.h b/keyboards/drhigsby/ogurec/config.h
new file mode 100644
index 0000000000..c5605ca645
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 MANUFACTURER DrHigsby
+#define PRODUCT ogurec
+#define VENDOR_ID 0x0007
+#define PRODUCT_ID 0x0002
+#define DEVICE_VER 0x0001
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 12
+
+/*
+ * 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)
+ *
+ */
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F6, B6, B2 }
+#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, F4, F5 }
+#define UNUSED_PINS { F7, B1, B3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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
diff --git a/keyboards/drhigsby/ogurec/info.json b/keyboards/drhigsby/ogurec/info.json
new file mode 100644
index 0000000000..1cb6823f95
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "ogurec",
+ "url": "http://www.keyboard-layout-editor.com/#/gists/f1bda3a87822868599cf6e3c4340f594",
+ "maintainer": "drhigsby",
+ "layouts": {
+ "LAYOUT_ortho_3x12": {
+ "layout": [
+ {"label":"Q", "x":0, "y":0},
+ {"label":"W", "x":1, "y":0},
+ {"label":"E", "x":2, "y":0},
+ {"label":"R", "x":3, "y":0},
+ {"label":"T", "x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"label":"Y", "x":7, "y":0},
+ {"label":"U", "x":8, "y":0},
+ {"label":"I", "x":9, "y":0},
+ {"label":"O", "x":10, "y":0},
+ {"label":"P", "x":11, "y":0},
+ {"label":"A", "x":0, "y":1},
+ {"label":"S", "x":1, "y":1},
+ {"label":"D", "x":2, "y":1},
+ {"label":"F", "x":3, "y":1},
+ {"label":"G", "x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"label":"H", "x":7, "y":1},
+ {"label":"J", "x":8, "y":1},
+ {"label":"K", "x":9, "y":1},
+ {"label":"L", "x":10, "y":1},
+ {"label":"\"", "x":11, "y":1},
+ {"label":"Z", "x":0, "y":2},
+ {"label":"X", "x":1, "y":2},
+ {"label":"C", "x":2, "y":2},
+ {"label":"V", "x":3, "y":2},
+ {"label":"B", "x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"label":"N", "x":7, "y":2},
+ {"label":"M", "x":8, "y":2},
+ {"label":"<", "x":9, "y":2},
+ {"label":">", "x":10, "y":2},
+ {"label":"?", "x":11, "y":2}]
+ },
+
+ "LAYOUT_ortho_3x12_1x2uC": {
+ "layout": [
+ {"label":"Q", "x":0, "y":0},
+ {"label":"W", "x":1, "y":0},
+ {"label":"E", "x":2, "y":0},
+ {"label":"R", "x":3, "y":0},
+ {"label":"T", "x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"label":"Y", "x":7, "y":0},
+ {"label":"U", "x":8, "y":0},
+ {"label":"I", "x":9, "y":0},
+ {"label":"O", "x":10, "y":0},
+ {"label":"P", "x":11, "y":0},
+ {"label":"A", "x":0, "y":1},
+ {"label":"S", "x":1, "y":1},
+ {"label":"D", "x":2, "y":1},
+ {"label":"F", "x":3, "y":1},
+ {"label":"G", "x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"label":"H", "x":7, "y":1},
+ {"label":"J", "x":8, "y":1},
+ {"label":"K", "x":9, "y":1},
+ {"label":"L", "x":10, "y":1},
+ {"label":"\"", "x":11, "y":1},
+ {"label":"Z", "x":0, "y":2},
+ {"label":"X", "x":1, "y":2},
+ {"label":"C", "x":2, "y":2},
+ {"label":"V", "x":3, "y":2},
+ {"label":"B", "x":4, "y":2},
+ {"x":5, "y":2, "w":2},
+ {"label":"N", "x":7, "y":2},
+ {"label":"M", "x":8, "y":2},
+ {"label":"<", "x":9, "y":2},
+ {"label":">", "x":10, "y":2},
+ {"label":"?", "x":11, "y":2}]
+ }
+
+ }
+}
diff --git a/keyboards/drhigsby/ogurec/keymaps/dack/config.h b/keyboards/drhigsby/ogurec/keymaps/dack/config.h
new file mode 100644
index 0000000000..af5d55bf6e
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/dack/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_TERM 230
+#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/drhigsby/ogurec/keymaps/dack/keymap.c b/keyboards/drhigsby/ogurec/keymaps/dack/keymap.c
new file mode 100644
index 0000000000..420ff3d88d
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/dack/keymap.c
@@ -0,0 +1,97 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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
+
+enum custom_layers {
+ _BASE,
+ _CLOSE,
+ _FAR,
+ _FUNKY,
+};
+#define CLS_SPC LT(_CLOSE, KC_SPC)
+#define FAR_F LT(_FAR, KC_F)
+#define FNK_D LT(_FUNKY, KC_D)
+#define SFT_Z LSFT_T(KC_Z)
+#define SFT_ENT RSFT_T(KC_ENT)
+#define CTL_X LCTL_T(KC_X)
+#define CTL_DOT RCTL_T(KC_DOT)
+#define WIN_C LWIN_T(KC_C)
+#define WIN_COMM RWIN_T(KC_COMM)
+#define ALT_V LALT_T(KC_V)
+#define ALT_M LALT_T(KC_M)
+#define COPY LCTL(KC_C)
+#define PASTE LCTL(KC_V)
+#define CUT LCTL(KC_X)
+#define UNDO LCTL(KC_Z)
+#define RUS_TGL RALT(KC_LSFT)
+#define LOCK LWIN(KC_L)
+#define vvv KC_TRNS
+
+enum custom_keycodes {
+ TYPEDON = SAFE_RANGE
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+ case TYPEDON:
+ SEND_STRING("[typed on an ogurec]");
+ return false;
+ }
+ }
+ return true;
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_ortho_3x12(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, FNK_D, FAR_F, KC_G, KC_GRAVE, KC_SCOLON, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
+ SFT_Z, CTL_X, WIN_C, ALT_V, KC_B, KC_BSPC, CLS_SPC, KC_N, ALT_M, WIN_COMM, CTL_DOT, SFT_ENT
+ ),
+
+ [_CLOSE] = LAYOUT_ortho_3x12(
+ KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_MINUS, KC_UNDS, KC_EQL, KC_PLUS, _______, _______, vvv, _______, KC_SCOLON, KC_COLON, KC_SLSH, KC_QUES
+ ),
+
+ [_FAR] = LAYOUT_ortho_3x12(
+ KC_ESC, TYPEDON, KC_BSLS, RUS_TGL,_______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS,
+ KC_CAPS, KC_TAB, KC_PIPE, vvv, LOCK, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL,
+ UNDO, CUT, COPY, PASTE, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______, _______, _______, _______
+ ),
+ [_FUNKY] = LAYOUT_ortho_3x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, _______, vvv, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______
+ )
+
+};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case FAR_F:
+ return TAPPING_TERM - 50;
+ case CLS_SPC:
+ return TAPPING_TERM - 50;
+ case SFT_Z:
+ return TAPPING_TERM - 80;
+ case SFT_ENT:
+ return TAPPING_TERM - 75;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/drhigsby/ogurec/keymaps/dack/readme.md b/keyboards/drhigsby/ogurec/keymaps/dack/readme.md
new file mode 100644
index 0000000000..adffe1797f
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/dack/readme.md
@@ -0,0 +1,3 @@
+# Dack's Ogurec Keymap
+
+This is Dack's personal ogurec keymap and it is for left-sided PM placement
diff --git a/keyboards/drhigsby/ogurec/keymaps/default/config.h b/keyboards/drhigsby/ogurec/keymaps/default/config.h
new file mode 100644
index 0000000000..9ff2d89acc
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 COMBO_COUNT 7
+#define COMBO_TERM 40
diff --git a/keyboards/drhigsby/ogurec/keymaps/default/keymap.c b/keyboards/drhigsby/ogurec/keymaps/default/keymap.c
new file mode 100644
index 0000000000..691f5c95a1
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/default/keymap.c
@@ -0,0 +1,76 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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
+
+enum layers{
+ _BASE,
+ _NUM,
+ _FN
+};
+
+enum combo_events {
+ combo_ESC,
+ combo_BACK,
+ combo_TAB,
+ combo_DELETE,
+ combo_ENTER,
+ combo_LPRN,
+ combo_RPRN,
+};
+
+const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END};
+const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END};
+const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END};
+const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END};
+const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
+const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
+
+
+combo_t key_combos[COMBO_COUNT] = {
+ [combo_ESC] = COMBO(esc_combo, KC_ESC),
+ [combo_BACK] = COMBO(bspc_combo, KC_BSPC),
+ [combo_TAB] = COMBO(tab_combo, KC_TAB),
+ [combo_DELETE] = COMBO(del_combo, KC_DEL),
+ [combo_ENTER] = COMBO(enter_combo, KC_ENT),
+ [combo_LPRN] = COMBO(lprn_combo, KC_LPRN),
+ [combo_RPRN] = COMBO(rprn_combo, KC_RPRN),
+};
+
+#define NUM MO(_NUM)
+#define FN MO(_FN)
+#define xxx KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_ortho_3x12(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, FN, KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, NUM, KC_SPC, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH)
+ ),
+
+ [_NUM] = LAYOUT_ortho_3x12(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME, KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_END, KC_PGDN, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LCBR, KC_LT, KC_GT, KC_RCBR, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT
+ ),
+
+ [_FN] = LAYOUT_ortho_3x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
+ KC_VOLD, KC_VOLU, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_MRWD, KC_MFFD, xxx, xxx, xxx
+ )
+
+};
diff --git a/keyboards/drhigsby/ogurec/keymaps/default/readme.md b/keyboards/drhigsby/ogurec/keymaps/default/readme.md
new file mode 100644
index 0000000000..3be288eeeb
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/default/readme.md
@@ -0,0 +1 @@
+# default ogurec keymap
diff --git a/keyboards/drhigsby/ogurec/keymaps/default/rules.mk b/keyboards/drhigsby/ogurec/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/keymaps/default/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/drhigsby/ogurec/left_pm/left_pm.h b/keyboards/drhigsby/ogurec/left_pm/left_pm.h
new file mode 100644
index 0000000000..ecf87a2a49
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/left_pm/left_pm.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 "ogurec.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_ortho_3x12( \
+ k011, k010, k009, k008, k007, k006, k005, k004, k003, k002, k001, k000, \
+ k111, k110, k109, k108, k107, k106, k105, k104, k103, k102, k101, k100, \
+ k211, k210, k209, k208, k207, k206, k205, k204, k203, k202, k201, k200 \
+) \
+{ \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 } \
+}
+
+#define LAYOUT_ortho_3x12_1x2uC( \
+ k011, k010, k009, k008, k007, k006, k005, k004, k003, k002, k001, k000, \
+ k111, k110, k109, k108, k107, k106, k105, k104, k103, k102, k101, k100, \
+ k211, k210, k209, k208, k207, k205, k204, k203, k202, k201, k200 \
+) \
+{ \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, KC_NO, k207, k208, k209, k210, k211 } \
+}
diff --git a/keyboards/drhigsby/ogurec/left_pm/readme.md b/keyboards/drhigsby/ogurec/left_pm/readme.md
new file mode 100644
index 0000000000..c9d0cddb3b
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/left_pm/readme.md
@@ -0,0 +1,13 @@
+# ogurec keymap for left-sided PM placement
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ogurec/left_pm:default
+
+Flashing example for this keyboard:
+
+ make ogurec/left_pm:default:flash
+
+To place the keyboard into bootloader mode, solder a reset switch onto the PCB and press it OR short the GND and RST pins on the pro micro.
+
+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/drhigsby/ogurec/left_pm/rules.mk b/keyboards/drhigsby/ogurec/left_pm/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/left_pm/rules.mk
diff --git a/keyboards/drhigsby/ogurec/ogurec.c b/keyboards/drhigsby/ogurec/ogurec.c
new file mode 100644
index 0000000000..6b2efa56b6
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/ogurec.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 "ogurec.h"
diff --git a/keyboards/drhigsby/ogurec/ogurec.h b/keyboards/drhigsby/ogurec/ogurec.h
new file mode 100644
index 0000000000..154d5d6cfe
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/ogurec.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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"
+
+#if defined(KEYBOARD_drhigsby_ogurec_left_pm)
+# include "left_pm.h"
+#elif defined(KEYBOARD_drhigsby_ogurec_right_pm)
+# include "right_pm.h"
+#endif
diff --git a/keyboards/drhigsby/ogurec/readme.md b/keyboards/drhigsby/ogurec/readme.md
new file mode 100644
index 0000000000..909db6787e
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/readme.md
@@ -0,0 +1,27 @@
+# ogurec
+
+![ogurec](https://i.imgur.com/OJ5UnXT.png)
+
+ogurec is a reversible 12u x 3u ortholinear keyboard that offers left-sided and right-sided PM placement.
+
+The default ogurec keymap is for left-sided PM placement.
+
+When flashing ogurec with the PM soldered onto the right side, follow the second example below and use: make ogure/right_pm:default
+
+* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby)
+* Hardware Supported: ogurec (https://github.com/drhigsby/ogurec)
+* Hardware Availability: open source 3DP case available here https://github.com/drhigsby (case creator: https://github.com/dpalka15)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make drhigsby/ogurec:default
+ make drhigsby/ogurec/right_pm:default
+
+To place the keyboard into bootloader mode, solder a reset switch onto the PCB and press it OR short the GND and RST pins on the pro micro.
+
+Flashing example for this keyboard:
+
+ make drhigsby/ogurec:default:flash
+ make drhigsby/ogurec/right_pm:default:flash
+
+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/drhigsby/ogurec/right_pm/readme.md b/keyboards/drhigsby/ogurec/right_pm/readme.md
new file mode 100644
index 0000000000..54efcecfe1
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/right_pm/readme.md
@@ -0,0 +1,13 @@
+# ogurec keymap for right-sided PM placement
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ogurec/right_pm:default
+
+Flashing example for this keyboard:
+
+ make ogurec/right_pm:default:flash
+
+To place the keyboard into bootloader mode, solder a reset switch onto the PCB and press it OR short the GND and RST pins on the pro micro.
+
+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/drhigsby/ogurec/right_pm/right_pm.h b/keyboards/drhigsby/ogurec/right_pm/right_pm.h
new file mode 100644
index 0000000000..e413a835bc
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/right_pm/right_pm.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 "ogurec.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_ortho_3x12( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 \
+) \
+{ \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 } \
+}
+
+#define LAYOUT_ortho_3x12_1x2uC( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k207, k208, k209, k210, k211 \
+) \
+{ \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, KC_NO, k207, k208, k209, k210, k211 } \
+}
diff --git a/keyboards/drhigsby/ogurec/right_pm/rules.mk b/keyboards/drhigsby/ogurec/right_pm/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/right_pm/rules.mk
diff --git a/keyboards/drhigsby/ogurec/rules.mk b/keyboards/drhigsby/ogurec/rules.mk
new file mode 100644
index 0000000000..11587edf86
--- /dev/null
+++ b/keyboards/drhigsby/ogurec/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # 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 = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+DEFAULT_FOLDER = drhigsby/ogurec/left_pm
diff --git a/keyboards/drhigsby/packrat/config.h b/keyboards/drhigsby/packrat/config.h
new file mode 100644
index 0000000000..c69ecdafcb
--- /dev/null
+++ b/keyboards/drhigsby/packrat/config.h
@@ -0,0 +1,59 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 MANUFACTURER DrHigsby
+#define PRODUCT Packrat
+#define VENDOR_ID 0x0007
+#define PRODUCT_ID 0x0004
+#define DEVICE_VER 0x0001
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 11
+
+/*
+ * 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)
+ *
+ */
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F7, B1, B6, B2 }
+#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B3 }
+#define UNUSED_PINS { F6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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
+
+#define ENCODERS_PAD_A { F5 }
+#define ENCODERS_PAD_B { F4 }
diff --git a/keyboards/drhigsby/packrat/info.json b/keyboards/drhigsby/packrat/info.json
new file mode 100644
index 0000000000..e4e3d869f1
--- /dev/null
+++ b/keyboards/drhigsby/packrat/info.json
@@ -0,0 +1,26 @@
+{
+ "keyboard_name": "packrat",
+ "url": "http://www.keyboard-layout-editor.com/#/gists/43d838a3b2e0344d75dd67abfc508038",
+ "maintainer": "drhigsby",
+ "layouts": {
+ "LAYOUT_3uc": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3, "w":1.25}, {"label":"Alt", "x":1.75, "y":3, "w":1.25}, {"label":"Raise", "x":3, "y":3}, {"label":"", "x":4, "y":3, "w":3}, {"label":"Lower", "x":7, "y":3}, {"label":"Win", "x":8, "y":3, "w":1.25}, {"label":"Fn", "x":9.25, "y":3, "w":1.25}]
+ },
+
+ "LAYOUT_2x2uc": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3, "w":1.25}, {"label":"Alt", "x":1.75, "y":3, "w":1.25}, {"label":"", "x":3, "y":3, "w":2}, {"label":"Any", "x":5, "y":3}, {"label":"", "x":6, "y":3, "w":2}, {"label":"Win", "x":8, "y":3, "w":1.25}, {"label":"Fn", "x":9.25, "y":3, "w":1.25}]
+ },
+
+ "LAYOUT_7uc": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3, "w":1.5}, {"label":"", "x":2, "y":3, "w":7}, {"label":"Alt", "x":9, "y":3, "w":1.5}]
+ },
+
+ "LAYOUT_2x3uc": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3}, {"label":"Alt", "x":1.5, "y":3}, {"label":"", "x":2.5, "y":3, "w":3}, {"label":"", "x":5.5, "y":3, "w":3}, {"label":"Win", "x":8.5, "y":3}, {"label":"Fn", "x":9.5, "y":3}]
+ },
+
+ "LAYOUT_6uc": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3}, {"label":"Alt", "x":1.5, "y":3}, {"label":"", "x":2.5, "y":3, "w":6}, {"label":"Win", "x":8.5, "y":3}, {"label":"Fn", "x":9.5, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/drhigsby/packrat/keymaps/3uc/config.h b/keyboards/drhigsby/packrat/keymaps/3uc/config.h
new file mode 100644
index 0000000000..9ff2d89acc
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/3uc/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 COMBO_COUNT 7
+#define COMBO_TERM 40
diff --git a/keyboards/drhigsby/packrat/keymaps/3uc/keymap.c b/keyboards/drhigsby/packrat/keymaps/3uc/keymap.c
new file mode 100644
index 0000000000..f037a47acb
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/3uc/keymap.c
@@ -0,0 +1,92 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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
+
+enum layers{
+ _BASE,
+ _CODE,
+ _MATH,
+ _FUNC
+};
+
+enum combo_events {
+ combo_ESC,
+ combo_BACK,
+ combo_TAB,
+ combo_DELETE,
+ combo_ENTER,
+ combo_LPRN,
+ combo_RPRN,
+};
+
+const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END};
+const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END};
+const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END};
+const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END};
+const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
+const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
+
+
+combo_t key_combos[COMBO_COUNT] = {
+ [combo_ESC] = COMBO(esc_combo, KC_ESC),
+ [combo_BACK] = COMBO(bspc_combo, KC_BSPC),
+ [combo_TAB] = COMBO(tab_combo, KC_TAB),
+ [combo_DELETE] = COMBO(del_combo, KC_DEL),
+ [combo_ENTER] = COMBO(enter_combo, KC_ENT),
+ [combo_LPRN] = COMBO(lprn_combo, KC_LPRN),
+ [combo_RPRN] = COMBO(rprn_combo, KC_RPRN),
+};
+
+#define BASE TO(_BASE)
+#define CODE MO(_CODE)
+#define MATH TG(_MATH)
+#define FUNC MO(_FUNC)
+#define xxx KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_3uc(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, MATH, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LALT, KC_LCTL, CODE, KC_SPC, CODE, KC_RGUI, FUNC
+ ),
+
+ [_CODE] = LAYOUT_3uc(
+ KC_1, KC_2, KC_3, KC_4, KC_5, xxx, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PGUP, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, xxx, KC_PGDN, xxx, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT,
+ xxx, xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN
+ ),
+
+ [_MATH] = LAYOUT_3uc(
+ xxx, xxx, xxx, xxx, xxx, BASE, xxx, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_P4, KC_P5, KC_P6, KC_PCMM,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ xxx, xxx, xxx, xxx, KC_P0, KC_PDOT, KC_PENT
+
+ ),
+
+ [_FUNC] = LAYOUT_3uc(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, xxx, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx
+ )
+
+};
+
diff --git a/keyboards/drhigsby/packrat/keymaps/3uc/readme.md b/keyboards/drhigsby/packrat/keymaps/3uc/readme.md
new file mode 100644
index 0000000000..603f82a812
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/3uc/readme.md
@@ -0,0 +1 @@
+# Centered 3uC Packrat Keymap
diff --git a/keyboards/drhigsby/packrat/keymaps/3uc/rules.mk b/keyboards/drhigsby/packrat/keymaps/3uc/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/3uc/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/drhigsby/packrat/keymaps/default/config.h b/keyboards/drhigsby/packrat/keymaps/default/config.h
new file mode 100644
index 0000000000..9ff2d89acc
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 COMBO_COUNT 7
+#define COMBO_TERM 40
diff --git a/keyboards/drhigsby/packrat/keymaps/default/keymap.c b/keyboards/drhigsby/packrat/keymaps/default/keymap.c
new file mode 100644
index 0000000000..74df6a73e6
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/default/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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
+
+enum layers{
+ _BASE,
+ _CODE,
+ _FUNC
+};
+
+enum combo_events {
+ combo_ESC,
+ combo_BACK,
+ combo_TAB,
+ combo_DELETE,
+ combo_ENTER,
+ combo_LPRN,
+ combo_RPRN,
+};
+
+const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END};
+const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END};
+const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END};
+const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END};
+const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
+const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
+
+
+combo_t key_combos[COMBO_COUNT] = {
+ [combo_ESC] = COMBO(esc_combo, KC_ESC),
+ [combo_BACK] = COMBO(bspc_combo, KC_BSPC),
+ [combo_TAB] = COMBO(tab_combo, KC_TAB),
+ [combo_DELETE] = COMBO(del_combo, KC_DEL),
+ [combo_ENTER] = COMBO(enter_combo, KC_ENT),
+ [combo_LPRN] = COMBO(lprn_combo, KC_LPRN),
+ [combo_RPRN] = COMBO(rprn_combo, KC_RPRN),
+};
+
+#define CODE MO(_CODE)
+#define FUNC MO(_FUNC)
+#define xxx KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_2x3uc(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LCTL, KC_LALT, CODE, KC_SPC, KC_RGUI, FUNC
+ ),
+
+ [_CODE] = LAYOUT_2x3uc(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CAPS, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, xxx, xxx, xxx, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT,
+ xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN
+ ),
+
+ [_FUNC] = LAYOUT_2x3uc(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, xxx, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12,
+ xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
+ xxx, xxx, xxx, xxx, xxx, xxx
+ )
+
+};
+
diff --git a/keyboards/drhigsby/packrat/keymaps/default/readme.md b/keyboards/drhigsby/packrat/keymaps/default/readme.md
new file mode 100644
index 0000000000..3e6ed27b57
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default Packrat Keymap
+
+The default Packrat Keymap uses the 2x3uC layout.
diff --git a/keyboards/drhigsby/packrat/keymaps/default/rules.mk b/keyboards/drhigsby/packrat/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/drhigsby/packrat/keymaps/default/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/drhigsby/packrat/packrat.c b/keyboards/drhigsby/packrat/packrat.c
new file mode 100644
index 0000000000..0f4a479956
--- /dev/null
+++ b/keyboards/drhigsby/packrat/packrat.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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 "packrat.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
diff --git a/keyboards/drhigsby/packrat/packrat.h b/keyboards/drhigsby/packrat/packrat.h
new file mode 100644
index 0000000000..91d0af7b7a
--- /dev/null
+++ b/keyboards/drhigsby/packrat/packrat.h
@@ -0,0 +1,79 @@
+/* Copyright 2021 drhigsby
+ *
+ * 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"
+
+#define LAYOUT_3uc( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
+ k301, k302, k303, k305, k307, k308, k309 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210 }, \
+ { KC_NO, k301, k302, k303, KC_NO, k305, KC_NO, k307, k308, k309 } \
+}
+
+#define LAYOUT_2x2uc( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
+ k301, k302, k303, k305, k307, k308, k309 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210 }, \
+ { KC_NO, k301, k302, k303, KC_NO, k305, KC_NO, k307, k308, k309 } \
+}
+
+#define LAYOUT_7uc( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
+ k301, k305, k309 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210 }, \
+ { KC_NO, k301, KC_NO, KC_NO, KC_NO, k305, KC_NO, KC_NO, KC_NO, k309 } \
+}
+
+#define LAYOUT_2x3uc( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
+ k301, k302, k303, k307, k308, k309 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210 }, \
+ { KC_NO, k301, k302, k303, KC_NO, KC_NO, KC_NO, k307, k308, k309 } \
+}
+
+#define LAYOUT_6uc( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
+ k301, k302, k305, k308, k309 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210 }, \
+ { KC_NO, k301, k302, KC_NO, KC_NO, k305, KC_NO, KC_NO, k308, k309 } \
+}
diff --git a/keyboards/drhigsby/packrat/readme.md b/keyboards/drhigsby/packrat/readme.md
new file mode 100644
index 0000000000..98b12543dc
--- /dev/null
+++ b/keyboards/drhigsby/packrat/readme.md
@@ -0,0 +1,25 @@
+# Packrat
+
+![Packrat](https://i.imgur.com/t6vWYIbh.jpeg)
+
+Full Gallery: https://imgur.com/gallery/fZklCG6
+
+Packrat is an 11u wide ortholinear keyboard featuring multiple bottom row options and top-centered rotary encoder support.
+
+* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby)
+* Hardware Supported: Packrat (https://github.com/drhigsby/packrat)
+* Hardware Availability: cases available at TBD / make your own
+
+Make example for this keyboard (after setting up your build environment):
+
+ make drhigsby/packrat: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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/drhigsby/packrat/rules.mk b/keyboards/drhigsby/packrat/rules.mk
new file mode 100644
index 0000000000..fc0608c07f
--- /dev/null
+++ b/keyboards/drhigsby/packrat/rules.mk
@@ -0,0 +1,20 @@
+# 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 = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = no # Use link time optimization
+ENCODER_ENABLE = yes