summaryrefslogtreecommitdiff
path: root/keyboards/handwired
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/handwired')
-rw-r--r--keyboards/handwired/dygma/raise/ansi/ansi.c14
-rw-r--r--keyboards/handwired/dygma/raise/config.h30
-rw-r--r--keyboards/handwired/dygma/raise/iso/iso.c16
-rw-r--r--keyboards/handwired/dygma/raise/leds.c53
-rw-r--r--keyboards/handwired/dygma/raise/leds.h6
-rw-r--r--keyboards/handwired/dygma/raise/post_rules.mk3
-rw-r--r--keyboards/handwired/dygma/raise/raise.c1
-rw-r--r--keyboards/handwired/dygma/raise/rules.mk4
-rw-r--r--keyboards/handwired/hwpm87/config.h29
-rw-r--r--keyboards/handwired/hwpm87/hwpm87.c4
-rw-r--r--keyboards/handwired/hwpm87/hwpm87.h24
-rw-r--r--keyboards/handwired/hwpm87/info.json105
-rw-r--r--keyboards/handwired/hwpm87/keymaps/default/keymap.c26
-rw-r--r--keyboards/handwired/hwpm87/readme.md35
-rw-r--r--keyboards/handwired/hwpm87/rules.mk20
-rw-r--r--keyboards/handwired/jscotto/scotto9/info.json48
-rw-r--r--keyboards/handwired/jscotto/scotto9/keymaps/default/keymap.c27
-rw-r--r--keyboards/handwired/jscotto/scotto9/readme.md25
-rw-r--r--keyboards/handwired/jscotto/scotto9/rules.mk1
-rw-r--r--keyboards/handwired/osborne1/config.h24
-rw-r--r--keyboards/handwired/osborne1/info.json88
-rw-r--r--keyboards/handwired/osborne1/keymaps/default/keymap.c36
-rw-r--r--keyboards/handwired/osborne1/readme.md25
-rw-r--r--keyboards/handwired/osborne1/rules.mk2
24 files changed, 595 insertions, 51 deletions
diff --git a/keyboards/handwired/dygma/raise/ansi/ansi.c b/keyboards/handwired/dygma/raise/ansi/ansi.c
index 652b6551d2..8c88ced12f 100644
--- a/keyboards/handwired/dygma/raise/ansi/ansi.c
+++ b/keyboards/handwired/dygma/raise/ansi/ansi.c
@@ -28,7 +28,7 @@ const uint8_t led_map[DRIVER_LED_TOTAL] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 0xff, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 68, 69,
// right side - 36 keys includes LP
- 0 + LPH, 1 + LPH, 2 + LPH, 3 + LPH, 4 + LPH, 5 + LPH, 6 + LPH, 15 + LPH, 8 + LPH, 9 + LPH, 10 + LPH, 11 + LPH, 12 + LPH, 13 + LPH, 14 + LPH, 7 + LPH, 16 + LPH, 17 + LPH, 18 + LPH, 19 + LPH,
+ 0 + LPH, 1 + LPH, 2 + LPH, 3 + LPH, 4 + LPH, 5 + LPH, 6 + LPH, 7 + LPH, 8 + LPH, 9 + LPH, 10 + LPH, 11 + LPH, 12 + LPH, 13 + LPH, 14 + LPH, 15 + LPH, 16 + LPH, 17 + LPH, 18 + LPH, 19 + LPH,
20 + LPH, 21 + LPH, 22 + LPH, 23 + LPH, 24 + LPH, 25 + LPH, 26 + LPH, 27 + LPH, 28 + LPH, 29 + LPH, 30 + LPH, 31 + LPH, 32 + LPH, 33 + LPH, 68 + LPH, 69 + LPH,
// left under glow - 30
@@ -50,11 +50,11 @@ led_config_t g_led_config = { {
{ 26 , 27 , 28 , 29 , 30 , NO_LED , 31 , 32 } ,
// right hand
- { NO_LED , 6 + LHK , 5 + LHK , 4 + LHK , 3 + LHK , 2 + LHK , 1 + LHK , 0 + LHK } ,
- { 14 + LHK , 13 + LHK , 12 + LHK , 11 + LHK , 10 + LHK , 9 + LHK , 8 + LHK , 7 + LHK } ,
- { NO_LED , 21 + LHK , 20 + LHK , 19 + LHK , 18 + LHK , 17 + LHK , 16 + LHK , 15 + LHK } ,
- { NO_LED , NO_LED , 27 + LHK , 26 + LHK , 25 + LHK , 24 + LHK , 23 + LHK , 22 + LHK } ,
- { 35 + LHK , 34 + LHK , 33 + LHK , 32 + LHK , 31 + LHK , 30 + LHK , 29 + LHK , 28 + LHK }
+ { 33 , 34 , 35 , 36 , 37 , 38 , 39 , NO_LED } ,
+ { 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 } ,
+ { 48 , 49 , 50 , 51 , 52 , 53 , 54 , NO_LED } ,
+ { 55 , 56 , 57 , 58 , 59 , 60 , NO_LED , NO_LED } ,
+ { 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 }
}, {
// generated from the svg image of the keyboard, see create-led-config.js
{82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
@@ -72,7 +72,7 @@ led_config_t g_led_config = { {
{173, 63}, {177, 59}, {178, 49}, {179, 40}, {179, 31}, {177, 25}, {175, 20}, {175, 15}, {123, 54}
}, {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 0,
+ 0,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
diff --git a/keyboards/handwired/dygma/raise/config.h b/keyboards/handwired/dygma/raise/config.h
index 64c6bad8e8..1596807ae3 100644
--- a/keyboards/handwired/dygma/raise/config.h
+++ b/keyboards/handwired/dygma/raise/config.h
@@ -25,3 +25,33 @@
#define DEBOUNCE 0
#define DRIVER_LED_TOTAL 132
+
+#ifdef RGB_MATRIX_ENABLE
+// At the default flush limit of 16ms (~62.5 fps), the matrix scan rate is approximately
+// ~140 scans per second under full load (when changes are being made to the LED state).
+// Such a low scan rate will have impact the keyboard's accuracy for faster typists.
+//
+// With RGB completely disabled, the matrix scan rate is ~660 scans per second, and typing
+// accuracy feels on par with the Dygma Raise Neuron.
+//
+// At 100ms (10 fps), the matrix scan rate is ~355 scans per second under full load, and typing
+// accuracy is reasonably good.
+#define RGB_MATRIX_LED_FLUSH_LIMIT 100
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#endif
diff --git a/keyboards/handwired/dygma/raise/iso/iso.c b/keyboards/handwired/dygma/raise/iso/iso.c
index ec2607d06c..596b678638 100644
--- a/keyboards/handwired/dygma/raise/iso/iso.c
+++ b/keyboards/handwired/dygma/raise/iso/iso.c
@@ -50,21 +50,21 @@ led_config_t g_led_config = { {
{ 26 , 27 , 28 , 29 , 30 , NO_LED , 31 , 32 } ,
// right hand
- { NO_LED , 6 + LHK , 5 + LHK , 4 + LHK , 3 + LHK , 2 + LHK , 1 + LHK , 0 + LHK } ,
- { 14 + LHK , 13 + LHK , 12 + LHK , 11 + LHK , 10 + LHK , 9 + LHK , 8 + LHK , 7 + LHK } ,
- { NO_LED , 21 + LHK , 20 + LHK , 19 + LHK , 18 + LHK , 17 + LHK , 16 + LHK , 15 + LHK } ,
- { NO_LED , NO_LED , 27 + LHK , 26 + LHK , 25 + LHK , 24 + LHK , 23 + LHK , 22 + LHK } ,
- { 35 + LHK , 34 + LHK , 33 + LHK , 32 + LHK , 31 + LHK , 30 + LHK , 29 + LHK , 28 + LHK }
+ { 33 , 34 , 35 , 36 , 37 , 38 , 39 , NO_LED } ,
+ { 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 } ,
+ { 48 , 49 , 50 , 51 , 52 , 53 , 54 , NO_LED } ,
+ { 55 , 56 , 57 , 58 , 59 , 60 , NO_LED , NO_LED } ,
+ { 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 }
}, {
// generated from the svg image of the keyboard, see create-led-config.js
- {82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
+ {82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
{115, 10}, {84, 16}, {92, 16}, {98, 16}, {104, 16}, {110, 16}, {116, 16}, {82, 22}, {88, 22}, {94, 22}, {100, 22},
{106, 22}, {112, 22}, {118, 22}, {83, 28}, {90, 28}, {98, 28}, {106, 28}, {116, 28}, {111, 34}, {118, 34}, {168, 3},
{159, 3}, {153, 3}, {147, 3}, {141, 3}, {135, 3}, {129, 3}, {170, 13}, {162, 10}, {156, 10}, {150, 10}, {144, 10},
- {139, 10}, {133, 10}, {127, 10}, {164, 16}, {158, 16}, {152, 16}, {146, 16}, {140, 16}, {134, 16}, {128, 16}, {166, 22},
+ {139, 10}, {133, 10}, {127, 10}, {164, 16}, {158, 16}, {152, 16}, {146, 16}, {140, 16}, {134, 16}, {128, 16}, {166, 22},
{154, 22}, {148, 22}, {142, 22}, {136, 22}, {130, 22}, {170, 28}, {163, 28}, {156, 28}, {149, 28}, {140, 28}, {131, 28},
{136, 34}, {128, 34}, {78, 13}, {78, 6}, {80, 0}, {87, 0}, {95, 0}, {103, 0}, {111, 0}, {119, 0}, {122, 3}, {121, 9},
- {120, 15}, {122, 21}, {123, 27}, {123, 33}, {120, 38}, {116, 42}, {114, 48}, {112, 55}, {109, 61}, {103, 64}, {96, 64},
+ {120, 15}, {122, 21}, {123, 27}, {123, 33}, {120, 38}, {116, 42}, {114, 48}, {112, 55}, {109, 61}, {103, 64}, {96, 64},
{88, 64}, {81, 63}, {76, 60}, {75, 52}, {75, 46}, {74, 38}, {74, 32}, {75, 27}, {77, 21}, {175, 10}, {175, 4}, {172, 0},
{164, 0}, {157, 0}, {149, 0}, {142, 0}, {134, 0}, {127, 0}, {123, 3}, {122, 8}, {122, 15}, {124, 21}, {124, 27}, {124, 33},
{126, 38}, {131, 42}, {134, 48}, {135, 55}, {137, 61}, {143, 63}, {150, 63}, {158, 63}, {166, 63}, {173, 63}, {177, 59},
diff --git a/keyboards/handwired/dygma/raise/leds.c b/keyboards/handwired/dygma/raise/leds.c
index 3f6037cbfa..64f03d722a 100644
--- a/keyboards/handwired/dygma/raise/leds.c
+++ b/keyboards/handwired/dygma/raise/leds.c
@@ -24,16 +24,17 @@
#include "print.h"
#include "leds.h"
-struct __attribute__((packed)) cRGB {
+// Color order of LEDs is Green, Red, Blue.
+typedef struct PACKED {
uint8_t r;
uint8_t g;
uint8_t b;
-};
+} raiseRGB;
#define LEDS_PER_HAND 72
#define LED_BANKS 9
#define LEDS_PER_BANK 8
-#define LED_BYTES_PER_BANK (sizeof(cRGB) * LEDS_PER_BANK)
+#define LED_BYTES_PER_BANK (sizeof(raiseRGB) * LEDS_PER_BANK)
// shifting << 1 is because drivers/chibios/i2c_master.h expects the address
// shifted.
@@ -44,37 +45,28 @@ struct __attribute__((packed)) cRGB {
#define LEFT 0
#define RIGHT 1
-static cRGB led_state[2 * LEDS_PER_HAND];
-
-void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b) {
- uint8_t buf[] = {TWI_CMD_LED_SET_ALL_TO, b, g, r};
- i2c_transmit(I2C_ADDR(LEFT), buf, sizeof(buf), I2C_TIMEOUT);
- wait_us(10);
- i2c_transmit(I2C_ADDR(RIGHT), buf, sizeof(buf), I2C_TIMEOUT);
- wait_us(10);
-}
-
-void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b) {
- int sled = led_map[led];
- uint8_t buf[] = {TWI_CMD_LED_SET_ONE_TO, sled & 0x1f, b, g, r};
- int hand = (sled >= LEDS_PER_HAND) ? RIGHT : LEFT;
- i2c_transmit(I2C_ADDR(hand), buf, sizeof(buf), I2C_TIMEOUT);
- wait_us(10);
-}
+static raiseRGB led_pending[2 * LEDS_PER_HAND];
+static raiseRGB led_state[2 * LEDS_PER_HAND];
static void set_color(int index, uint8_t r, uint8_t g, uint8_t b) {
int sled = led_map[index];
-
- led_state[sled].r = r;
- led_state[sled].g = g;
- led_state[sled].b = b;
+ // The red component of the LED is apparently stronger than the others.
+ // From: https://github.com/keyboardio/Kaleidoscope/blob/aba8c9ee66bbb5ded15135618d2b2964ee82b2cc/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/RaiseSide.cpp#L235-L242
+ if (r >= 26) {
+ r -= 26;
+ }
+ led_pending[sled].r = r;
+ led_pending[sled].g = g;
+ led_pending[sled].b = b;
}
static void set_color_all(uint8_t r, uint8_t g, uint8_t b) {
for (int i = 0; i < DRIVER_LED_TOTAL; i++) set_color(i, r, g, b);
}
-static void init(void) {}
+static void init(void) {
+ set_color_all(0,0,0);
+}
static void flush(void) {
uint8_t command[1 + LED_BYTES_PER_BANK];
@@ -86,10 +78,17 @@ static void flush(void) {
for (int hand = 0; hand < 2; hand++) {
int addr = I2C_ADDR(hand);
int i = (hand * LEDS_PER_HAND) + (bank * LEDS_PER_BANK);
- uint8_t *bank_data = (uint8_t *)&led_state[i];
+
+ if (memcmp(&led_state[i], &led_pending[i], LED_BYTES_PER_BANK) == 0) {
+ // No change.
+ continue;
+ }
+
+ // Update LED state
+ memcpy(&led_state[i], &led_pending[i], LED_BYTES_PER_BANK);
command[0] = TWI_CMD_LED_BASE + bank;
- memcpy(&command[1], bank_data, LED_BYTES_PER_BANK);
+ memcpy(&command[1], &led_pending[i], LED_BYTES_PER_BANK);
i2c_transmit(addr, command, sizeof(command), I2C_TIMEOUT);
// delay to prevent issues with the i2c bus
diff --git a/keyboards/handwired/dygma/raise/leds.h b/keyboards/handwired/dygma/raise/leds.h
index 8d70ed70b2..8964838aad 100644
--- a/keyboards/handwired/dygma/raise/leds.h
+++ b/keyboards/handwired/dygma/raise/leds.h
@@ -16,10 +16,4 @@
#pragma once
-#include "quantum.h"
-#include "rgb_matrix.h"
-
extern const uint8_t led_map[DRIVER_LED_TOTAL];
-
-void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b);
-void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b);
diff --git a/keyboards/handwired/dygma/raise/post_rules.mk b/keyboards/handwired/dygma/raise/post_rules.mk
new file mode 100644
index 0000000000..c6b77f75b3
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/post_rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += leds.c
+endif
diff --git a/keyboards/handwired/dygma/raise/raise.c b/keyboards/handwired/dygma/raise/raise.c
index d9023093b5..39e94e2e76 100644
--- a/keyboards/handwired/dygma/raise/raise.c
+++ b/keyboards/handwired/dygma/raise/raise.c
@@ -17,6 +17,5 @@
#include "raise.h"
void keyboard_post_init_kb(void) {
- set_all_leds_to(0, 0, 0);
keyboard_post_init_user();
}
diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk
index b7ff577361..ce7a89af8e 100644
--- a/keyboards/handwired/dygma/raise/rules.mk
+++ b/keyboards/handwired/dygma/raise/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = stm32-dfu
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = no # Audio control and System control
+EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
@@ -28,6 +28,6 @@ CUSTOM_MATRIX = lite
RAW_ENABLE = yes
QUANTUM_LIB_SRC += i2c_master.c
-SRC += leds.c matrix.c
+SRC += matrix.c
DEFAULT_FOLDER = handwired/dygma/raise/ansi
diff --git a/keyboards/handwired/hwpm87/config.h b/keyboards/handwired/hwpm87/config.h
new file mode 100644
index 0000000000..60ef15ab44
--- /dev/null
+++ b/keyboards/handwired/hwpm87/config.h
@@ -0,0 +1,29 @@
+// Copyright 2022 CAO THAI DUONG (@KD-MM2)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 18
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define DIODE_DIRECTION ROW2COL
+
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5 }
+#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B7, F0, F1, D6, C7, B6, F7, F6, F5, F4 }
+
+#define LED_CAPS_LOCK_PIN D5
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/handwired/hwpm87/hwpm87.c b/keyboards/handwired/hwpm87/hwpm87.c
new file mode 100644
index 0000000000..9edc09c971
--- /dev/null
+++ b/keyboards/handwired/hwpm87/hwpm87.c
@@ -0,0 +1,4 @@
+// Copyright 2022 CAO THAI DUONG (@KD-MM2)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "hwpm87.h"
diff --git a/keyboards/handwired/hwpm87/hwpm87.h b/keyboards/handwired/hwpm87/hwpm87.h
new file mode 100644
index 0000000000..7de32eaa8c
--- /dev/null
+++ b/keyboards/handwired/hwpm87/hwpm87.h
@@ -0,0 +1,24 @@
+// Copyright 2022 CAO THAI DUONG (@KD-MM2)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ K00, K02, K03, K04, K05, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, K1G, K1H, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4G, \
+ K50, K51, K53, K56, K5A, K5B, K5D, K5E, K5F, K5G, K5H \
+) { \
+ { K00, XXX, K02, K03, K04, K05, XXX, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F, K1G, K1H }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX, XXX, XXX }, \
+ { XXX, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, XXX, XXX, K4G, XXX }, \
+ { K50, K51, XXX, K53, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F, K5G, K5H }, \
+}
diff --git a/keyboards/handwired/hwpm87/info.json b/keyboards/handwired/hwpm87/info.json
new file mode 100644
index 0000000000..90d8ad397c
--- /dev/null
+++ b/keyboards/handwired/hwpm87/info.json
@@ -0,0 +1,105 @@
+{
+ "manufacturer": "KD-MM2",
+ "keyboard_name": "hwpm87",
+ "maintainer": "KD-MM2",
+ "url": "",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "K00 (B0,D3)", "x": 0, "y": 0 },
+ { "label": "K02 (B0,D1)", "x": 2, "y": 0 },
+ { "label": "K03 (B0,D0)", "x": 3, "y": 0 },
+ { "label": "K04 (B0,D4)", "x": 4, "y": 0 },
+ { "label": "K05 (B0,C6)", "x": 5, "y": 0 },
+ { "label": "K07 (B0,E6)", "x": 6.5, "y": 0 },
+ { "label": "K08 (B0,B7)", "x": 7.5, "y": 0 },
+ { "label": "K09 (B0,F0)", "x": 8.5, "y": 0 },
+ { "label": "K0A (B0,F1)", "x": 9.5, "y": 0 },
+ { "label": "K0B (B0,D5)", "x": 11, "y": 0 },
+ { "label": "K0C (B0,D6)", "x": 12, "y": 0 },
+ { "label": "K0D (B0,C7)", "x": 13, "y": 0 },
+ { "label": "K0E (B0,E2)", "x": 14, "y": 0 },
+ { "label": "K0F (B0,B6)", "x": 15.25, "y": 0 },
+ { "label": "K0G (B0,F7)", "x": 16.25, "y": 0 },
+ { "label": "K0H (B0,F6)", "x": 17.25, "y": 0 },
+ { "label": "K10 (B1,D3)", "x": 0, "y": 1 },
+ { "label": "K11 (B1,D2)", "x": 1, "y": 1 },
+ { "label": "K12 (B1,D1)", "x": 2, "y": 1 },
+ { "label": "K13 (B1,D0)", "x": 3, "y": 1 },
+ { "label": "K14 (B1,D4)", "x": 4, "y": 1 },
+ { "label": "K15 (B1,C6)", "x": 5, "y": 1 },
+ { "label": "K16 (B1,D7)", "x": 6, "y": 1 },
+ { "label": "K17 (B1,E6)", "x": 7, "y": 1 },
+ { "label": "K18 (B1,B7)", "x": 8, "y": 1 },
+ { "label": "K19 (B1,F0)", "x": 9, "y": 1 },
+ { "label": "K1A (B1,F1)", "x": 10, "y": 1 },
+ { "label": "K1B (B1,D5)", "x": 11, "y": 1 },
+ { "label": "K1C (B1,D6)", "x": 12, "y": 1 },
+ { "label": "K1E (B1,E2)", "x": 13, "y": 1, "w": 2 },
+ { "label": "K1F (B1,B6)", "x": 15.25, "y": 1 },
+ { "label": "K1G (B1,F7)", "x": 16.25, "y": 1 },
+ { "label": "K1H (B1,F6)", "x": 17.25, "y": 1 },
+ { "label": "K20 (B2,D3)", "x": 0, "y": 2, "w": 1.5 },
+ { "label": "K22 (B2,D1)", "x": 1.5, "y": 2 },
+ { "label": "K23 (B2,D0)", "x": 2.5, "y": 2 },
+ { "label": "K24 (B2,D4)", "x": 3.5, "y": 2 },
+ { "label": "K25 (B2,C6)", "x": 4.5, "y": 2 },
+ { "label": "K26 (B2,D7)", "x": 5.5, "y": 2 },
+ { "label": "K27 (B2,E6)", "x": 6.5, "y": 2 },
+ { "label": "K28 (B2,B7)", "x": 7.5, "y": 2 },
+ { "label": "K29 (B2,F0)", "x": 8.5, "y": 2 },
+ { "label": "K2A (B2,F1)", "x": 9.5, "y": 2 },
+ { "label": "K2B (B2,D5)", "x": 10.5, "y": 2 },
+ { "label": "K2C (B2,D6)", "x": 11.5, "y": 2 },
+ { "label": "K2D (B2,C7)", "x": 12.5, "y": 2 },
+ { "label": "K2E (B2,E2)", "x": 13.5, "y": 2, "w": 1.5 },
+ { "label": "K2F (B2,B6)", "x": 15.25, "y": 2 },
+ { "label": "K2G (B2,F7)", "x": 16.25, "y": 2 },
+ { "label": "K2H (B2,F6)", "x": 17.25, "y": 2 },
+ { "label": "K30 (B3,D3)", "x": 0, "y": 3, "w": 1.75 },
+ { "label": "K32 (B3,D1)", "x": 1.75, "y": 3 },
+ { "label": "K33 (B3,D0)", "x": 2.75, "y": 3 },
+ { "label": "K34 (B3,D4)", "x": 3.75, "y": 3 },
+ { "label": "K35 (B3,C6)", "x": 4.75, "y": 3 },
+ { "label": "K36 (B3,D7)", "x": 5.75, "y": 3 },
+ { "label": "K37 (B3,E6)", "x": 6.75, "y": 3 },
+ { "label": "K38 (B3,B7)", "x": 7.75, "y": 3 },
+ { "label": "K39 (B3,F0)", "x": 8.75, "y": 3 },
+ { "label": "K3A (B3,F1)", "x": 9.75, "y": 3 },
+ { "label": "K3B (B3,D5)", "x": 10.75, "y": 3 },
+ { "label": "K3C (B3,D6)", "x": 11.75, "y": 3 },
+ { "label": "K3D (B3,C7)", "x": 12.75, "y": 3, "w": 2.25 },
+ { "label": "K41 (B4,D2)", "x": 0, "y": 4, "w": 2.25 },
+ { "label": "K42 (B4,D1)", "x": 2.25, "y": 4 },
+ { "label": "K43 (B4,D0)", "x": 3.25, "y": 4 },
+ { "label": "K44 (B4,D4)", "x": 4.25, "y": 4 },
+ { "label": "K45 (B4,C6)", "x": 5.25, "y": 4 },
+ { "label": "K46 (B4,D7)", "x": 6.25, "y": 4 },
+ { "label": "K47 (B4,E6)", "x": 7.25, "y": 4 },
+ { "label": "K48 (B4,B7)", "x": 8.25, "y": 4 },
+ { "label": "K49 (B4,F0)", "x": 9.25, "y": 4 },
+ { "label": "K4A (B4,F1)", "x": 10.25, "y": 4 },
+ { "label": "K4B (B4,D5)", "x": 11.25, "y": 4 },
+ { "label": "K4D (B4,C7)", "x": 12.25, "y": 4, "w": 2.75 },
+ { "label": "K4G (B4,F7)", "x": 16.25, "y": 4 },
+ { "label": "K50 (B5,D3)", "x": 0, "y": 5, "w": 1.25 },
+ { "label": "K51 (B5,D2)", "x": 1.25, "y": 5, "w": 1.25 },
+ { "label": "K53 (B5,D0)", "x": 2.5, "y": 5, "w": 1.25 },
+ { "label": "K56 (B5,D7)", "x": 3.75, "y": 5, "w": 6.25 },
+ { "label": "K5A (B5,F1)", "x": 10, "y": 5, "w": 1.25 },
+ { "label": "K5B (B5,D5)", "x": 11.25, "y": 5, "w": 1.25 },
+ { "label": "K5D (B5,C7)", "x": 12.5, "y": 5, "w": 1.25 },
+ { "label": "K5E (B5,E2)", "x": 13.75, "y": 5, "w": 1.25 },
+ { "label": "K5F (B5,B6)", "x": 15.25, "y": 5 },
+ { "label": "K5G (B5,F7)", "x": 16.25, "y": 5 },
+ { "label": "K5H (B5,F6)", "x": 17.25, "y": 5 }
+ ]
+ }
+ }
+
+}
diff --git a/keyboards/handwired/hwpm87/keymaps/default/keymap.c b/keyboards/handwired/hwpm87/keymaps/default/keymap.c
new file mode 100644
index 0000000000..850acd2025
--- /dev/null
+++ b/keyboards/handwired/hwpm87/keymaps/default/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2022 CAO THAI DUONG (@KD-MM2)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT( /* BASE Layer */
+ KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT( /* MO(Fn) Layer */
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_LNG2, KC_LNG1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+
+};
diff --git a/keyboards/handwired/hwpm87/readme.md b/keyboards/handwired/hwpm87/readme.md
new file mode 100644
index 0000000000..f0f4b3db2e
--- /dev/null
+++ b/keyboards/handwired/hwpm87/readme.md
@@ -0,0 +1,35 @@
+# Handwired 87 keys
+
+![hwpm87](https://i.imgur.com/DLqdtAWh.jpeg)
+
+Repaired from 87 keys keyboard using a Pro Micro
+
+* Keyboard Maintainer: [KD-MM2](https://github.com/KD-MM2)
+* Hardware Supported: Pro Micro(need to solder more pins) or any board with ATMega32u4
+* Hardware Availability: N/A (private board, might open source)
+
+First, if you have Pro Micro
+ Checkout these image for more: ![Pin map](https://i.imgur.com/SvZ9rGQ.jpeg) ![Usabled Pins](https://i.imgur.com/Nr4cWP5.jpeg)
+ Keymaps/Handwiring: ![Handwiring](https://i.imgur.com/G1izHd6.png)
+If you have 25 GPIOs board, there is nothing to do.
+
+Second, if you are using a Capslock LED, define LED pin in: [config.h#34](https://github.com/KD-MM2/qmk_firmware/blob/hwpm87/keyboards/hwpm87/config.h#L34),
+and check the LED_PIN_ON_STATE if you get reversed led state: [config.h#35](https://github.com/KD-MM2/qmk_firmware/blob/hwpm87/keyboards/hwpm87/config.h#L35)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/hwpm87:default
+
+Flashing example for this keyboard:
+
+ make handwired/hwpm87: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).
+
+## 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**: Plug cable, open QMK Toolbox and short RST pin and GND pin, then you will see it in flashmode
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/hwpm87/rules.mk b/keyboards/handwired/hwpm87/rules.mk
new file mode 100644
index 0000000000..7f42dae592
--- /dev/null
+++ b/keyboards/handwired/hwpm87/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # 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 = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+
diff --git a/keyboards/handwired/jscotto/scotto9/info.json b/keyboards/handwired/jscotto/scotto9/info.json
new file mode 100644
index 0000000000..09ae9eea77
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto9/info.json
@@ -0,0 +1,48 @@
+{
+ "manufacturer": "Joe Scotto",
+ "keyboard_name": "Scotto9",
+ "maintainer": "joe-scotto",
+ "bootloader": "caterina",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ // 4, 5, 6
+ "cols": ["D4", "C6", "D7"],
+
+ // 15, 14, 16
+ "rows": ["B1", "B3", "B2"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_ortho_3x3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0 }
+
+ // Row 2
+ { "matrix": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 }
+
+ // Row 3
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/jscotto/scotto9/keymaps/default/keymap.c b/keyboards/handwired/jscotto/scotto9/keymaps/default/keymap.c
new file mode 100644
index 0000000000..eec8d684ad
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto9/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/*
+Copyright 2022 Joe Scotto
+
+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
+
+// Keymap
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_3x3(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, KC_9
+ )
+};
diff --git a/keyboards/handwired/jscotto/scotto9/readme.md b/keyboards/handwired/jscotto/scotto9/readme.md
new file mode 100644
index 0000000000..2e5291cba7
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto9/readme.md
@@ -0,0 +1,25 @@
+# Scotto9
+
+![Scotto9](https://imgur.com/inbmNSEh.jpeg)
+
+A 9 key handwired macropad. Case files available [here](https://github.com/joe-scotto/keyboards.git).
+
+- Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto)
+- Hardware Supported: ATmega32U4
+- Hardware Availability: [Amazon](https://amazon.com)
+
+# Compiling
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/jscotto/scotto9:default
+
+Flashing example for this keyboard:
+
+ make handwired/jscotto/scotto9:default
+
+# Bootloader
+
+Uses [bootmagic](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_bootmagic.md) allowing you to hold the top left key (0, 0) when plugging the board in to enter bootloader mode.
+
+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/handwired/jscotto/scotto9/rules.mk b/keyboards/handwired/jscotto/scotto9/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto9/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/handwired/osborne1/config.h b/keyboards/handwired/osborne1/config.h
new file mode 100644
index 0000000000..1e21a30db0
--- /dev/null
+++ b/keyboards/handwired/osborne1/config.h
@@ -0,0 +1,24 @@
+// Copyright 2022 Nick Lopez <github@glowingmonkey.org>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+#define BLUEFRUIT_LE_RST_PIN D4
+#define BLUEFRUIT_LE_CS_PIN B4
+#define BLUEFRUIT_LE_IRQ_PIN E6
diff --git a/keyboards/handwired/osborne1/info.json b/keyboards/handwired/osborne1/info.json
new file mode 100644
index 0000000000..e9a2de9552
--- /dev/null
+++ b/keyboards/handwired/osborne1/info.json
@@ -0,0 +1,88 @@
+{
+ "manufacturer": "crackmonkey",
+ "keyboard_name": "osborne1",
+ "maintainer": "crackmonkey",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": true,
+ "extrakey": false,
+ "mousekey": false,
+ "nkro": false
+ },
+ "matrix_pins": {
+ "cols": ["D3", "D2", "F0", "F1", "F4", "F5", "F6", "F7"],
+ "rows": ["D0", "B7", "B5", "C6", "D1", "B6", "D7", "D6"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x239A",
+ "vid": "0x800C"
+ },
+ "layouts": {
+ "LAYOUT_64_ansi": {
+ "layout": [
+ { "matrix": [0, 0], "label": "ESC", "x": 0, "y": 0 },
+ { "matrix": [1, 0], "label": "1", "x": 1, "y": 0 },
+ { "matrix": [1, 1], "label": "2", "x": 2, "y": 0 },
+ { "matrix": [1, 2], "label": "3", "x": 3, "y": 0 },
+ { "matrix": [1, 3], "label": "4", "x": 4, "y": 0 },
+ { "matrix": [1, 4], "label": "5", "x": 5, "y": 0 },
+ { "matrix": [1, 5], "label": "6", "x": 6, "y": 0 },
+ { "matrix": [1, 6], "label": "7", "x": 7, "y": 0 },
+ { "matrix": [1, 7], "label": "8", "x": 8, "y": 0 },
+ { "matrix": [5, 7], "label": "9", "x": 9, "y": 0 },
+ { "matrix": [5, 2], "label": "0", "x": 10, "y": 0 },
+ { "matrix": [6, 2], "label": "-", "x": 11, "y": 0 },
+ { "matrix": [6, 7], "label": "=", "x": 12, "y": 0 },
+ { "matrix": [0, 7], "label": "[", "x": 13, "y": 0 },
+ { "matrix": [5, 0], "label": "Up", "x": 14, "y": 0 },
+ { "matrix": [0, 1], "label": "TAB", "x": 0, "y": 1 },
+ { "matrix": [2, 0], "label": "Q", "x": 1, "y": 1 },
+ { "matrix": [2, 1], "label": "W", "x": 2, "y": 1 },
+ { "matrix": [2, 2], "label": "E", "x": 3, "y": 1 },
+ { "matrix": [2, 3], "label": "R", "x": 4, "y": 1 },
+ { "matrix": [2, 4], "label": "T", "x": 5, "y": 1 },
+ { "matrix": [2, 5], "label": "Y", "x": 6, "y": 1 },
+ { "matrix": [2, 6], "label": "U", "x": 7, "y": 1 },
+ { "matrix": [2, 7], "label": "I", "x": 8, "y": 1 },
+ { "matrix": [5, 6], "label": "O", "x": 9, "y": 1 },
+ { "matrix": [5, 5], "label": "P", "x": 10, "y": 1 },
+ { "matrix": [6, 5], "label": "Backslash", "x": 11, "y": 1 },
+ { "matrix": [0, 6], "label": "Quote", "x": 12, "y": 1 },
+ { "matrix": [5, 1], "label": "Left", "x": 13, "y": 1 },
+ { "matrix": [6, 0], "label": "Right", "x": 14, "y": 1 },
+ { "matrix": [0, 2], "label": "Control", "x": 0, "y": 2 },
+ { "matrix": [7, 3], "label": "Capslock", "x": 1, "y": 2 },
+ { "matrix": [3, 0], "label": "A", "x": 2, "y": 2 },
+ { "matrix": [3, 1], "label": "S", "x": 3, "y": 2 },
+ { "matrix": [3, 2], "label": "D", "x": 4, "y": 2 },
+ { "matrix": [3, 3], "label": "F", "x": 5, "y": 2 },
+ { "matrix": [3, 4], "label": "G", "x": 6, "y": 2 },
+ { "matrix": [3, 5], "label": "H", "x": 7, "y": 2 },
+ { "matrix": [3, 6], "label": "J", "x": 8, "y": 2 },
+ { "matrix": [3, 7], "label": "K", "x": 9, "y": 2 },
+ { "matrix": [6, 6], "label": "L", "x": 10, "y": 2 },
+ { "matrix": [6, 4], "label": "Semicolon", "x": 11, "y": 2 },
+ { "matrix": [0, 5], "label": "Return", "x": 12, "y": 2 },
+ { "matrix": [6, 1], "label": "Down", "x": 13, "y": 2 },
+ { "matrix": [0, 4], "label": "LShift", "x": 0, "y": 3 },
+ { "matrix": [4, 0], "label": "Z", "x": 1, "y": 3 },
+ { "matrix": [4, 1], "label": "X", "x": 2, "y": 3 },
+ { "matrix": [4, 2], "label": "C", "x": 3, "y": 3 },
+ { "matrix": [4, 3], "label": "V", "x": 4, "y": 3 },
+ { "matrix": [4, 4], "label": "B", "x": 5, "y": 3 },
+ { "matrix": [4, 5], "label": "N", "x": 6, "y": 3 },
+ { "matrix": [4, 6], "label": "M", "x": 7, "y": 3 },
+ { "matrix": [4, 7], "label": "Comma", "x": 8, "y": 3 },
+ { "matrix": [5, 4], "label": "Period", "x": 9, "y": 3 },
+ { "matrix": [6, 3], "label": "Slash", "x": 10, "y": 3 },
+ { "matrix": [5, 3], "label": "Space", "x": 0, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/osborne1/keymaps/default/keymap.c b/keyboards/handwired/osborne1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..53b71cfc0b
--- /dev/null
+++ b/keyboards/handwired/osborne1/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2020 Nick Lopez <github@glowingmonkey.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_64_ansi(
+ 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_LBRC, KC_UP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_QUOT, KC_LEFT, KC_RGHT,
+ KC_LCTL, MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_DOWN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_SPC
+ ),
+ [1] = LAYOUT_64_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______
+ )
+};
+
+
diff --git a/keyboards/handwired/osborne1/readme.md b/keyboards/handwired/osborne1/readme.md
new file mode 100644
index 0000000000..db8c161549
--- /dev/null
+++ b/keyboards/handwired/osborne1/readme.md
@@ -0,0 +1,25 @@
+# osborne1
+
+![osborne1](https://i.imgur.com/221nQ5Eh.jpeg)
+
+The Osborne keyboard doesn't contain any electronics, so the pins of the 8x8 keyboard matrix are easily available right on the normal connector. 17 jumper wires and a Feather BlueFruit is all the additional hardware needed.
+
+* Keyboard Maintainer: [crackmonkey](https://github.com/crackmonkey)
+* Hardware Supported: Adafruit Feather BlueFruit 32u4
+* Hardware Availability: E-waste
+
+Make example for this keyboard (after setting up your build environment):
+
+ make osborne1:default
+
+Flashing example for this keyboard:
+
+ make osborne1: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).
+
+## Bootloader
+
+Enter the bootloader:
+
+* **Physical reset button**: Briefly press the button on the Feather
diff --git a/keyboards/handwired/osborne1/rules.mk b/keyboards/handwired/osborne1/rules.mk
new file mode 100644
index 0000000000..2bf3fe5811
--- /dev/null
+++ b/keyboards/handwired/osborne1/rules.mk
@@ -0,0 +1,2 @@
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = BluefruitLE