Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Matrimony Keyboard #19383

Closed
wants to merge 13 commits into from
45 changes: 45 additions & 0 deletions keyboards/matrimony/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/* Copyright 2021 Joshua Cheung and Nathan Nguyen

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

//Pins for boot magic lite
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 4
#define BOOTMAGIC_LITE_ROW_RIGHT 5
#define BOOTMAGIC_LITE_COLUMN_RIGHT 8

/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
#define MATRIX_COLS 13


Comment on lines +25 to +30
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
#define MATRIX_COLS 13

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines are required for my keyboard to work I think, I tried flashing without, and it doesn't work.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #19581

// Defines the diode direction, can be changed to ROW2COL if diodes are soldered backwards.
#define DIODE_DIRECTION COL2ROW

#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
// B7 and B5 are dummy pins to ensure both columns == 13
#define MATRIX_COL_PINS { D2, D3, B5, B6, F4, F5, F6, F7, B1, B3, B2, B7, D5 }
#define MATRIX_ROW_PINS_RIGHT { F0, F1, C7, D5, B7 }
#define MATRIX_COL_PINS_RIGHT { B6, B2, B3, B1, F7, F6, F5, F4, B0, B5, B4, E6, D7 }

// Set 0 if debouncing isn't needed
#define DEBOUNCE 5
Comment on lines +40 to +41
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Set 0 if debouncing isn't needed
#define DEBOUNCE 5

#define USE_I2C

// sets the handness according to eeprom
#define EE_HANDS
11 changes: 11 additions & 0 deletions keyboards/matrimony/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"keyboard_name": "Matrimony Keyboard",
"manufacturer": "Joshua Cheung",
"url": "https://www.reddit.com/r/mechmarket/comments/w1ytmc/gb_matrimony_split_keyboard/",
"maintainer": "hypanim",
"usb": {
"vid": "0xFEED",
"pid": "0x0001",
"device_version": "1.0.0"
}
}
hypanim marked this conversation as resolved.
Show resolved Hide resolved
38 changes: 38 additions & 0 deletions keyboards/matrimony/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
Copyright 2022 Joshua Cheung
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/

#include QMK_KEYBOARD_H


// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BASE 0
#define _FN1 1
hypanim marked this conversation as resolved.
Show resolved Hide resolved

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_A, KC_B, KC_C, KC_D, QK_GESC, 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, MO(_FN1), KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, \
KC_E, KC_F, KC_G, KC_H, 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, MO(_FN1), KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_I, KC_J, KC_K, KC_L, 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, MO(_FN1), KC_P4, KC_P5, KC_P6, \
KC_M, KC_N, KC_O, KC_P, 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, MO(_FN1), KC_P1, KC_P2, KC_P3, \
KC_Q, KC_R, KC_S, KC_T, KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC, MO(_FN1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT),
[_FN1] = LAYOUT(
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_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)
hypanim marked this conversation as resolved.
Show resolved Hide resolved
};
1 change: 1 addition & 0 deletions keyboards/matrimony/keymaps/default/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# The default keymap for matrimony
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file should be removed.

38 changes: 38 additions & 0 deletions keyboards/matrimony/keymaps/left_only/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
Copyright 2022 Joshua Cheung
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/

#include QMK_KEYBOARD_H


// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BASE 0
#define _FN1 1
hypanim marked this conversation as resolved.
Show resolved Hide resolved

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_A, KC_B, KC_C, KC_D, QK_GESC, 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, MO(_FN1), KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, \
KC_E, KC_F, KC_G, KC_H, 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, MO(_FN1), KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_I, KC_J, KC_K, KC_L, 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, MO(_FN1), KC_P4, KC_P5, KC_P6, \
KC_M, KC_N, KC_O, KC_P, 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, MO(_FN1), KC_P1, KC_P2, KC_P3, \
KC_Q, KC_R, KC_S, KC_T, KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC, MO(_FN1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT),
[_FN1] = LAYOUT(
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, QK_GESC, 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, MO(_FN1), KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, \
KC_PPLS, KC_P9, KC_P8, KC_P7, 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, MO(_FN1), KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_P6, KC_P5, KC_P4, KC_NO, 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, MO(_FN1), KC_P4, KC_P5, KC_P6, \
KC_P3, KC_P2, KC_P1, KC_NO, 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, MO(_FN1), KC_P1, KC_P2, KC_P3, \
KC_PENT, KC_PDOT, KC_P0, KC_NO, KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC, MO(_FN1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT),
hypanim marked this conversation as resolved.
Show resolved Hide resolved
};
1 change: 1 addition & 0 deletions keyboards/matrimony/keymaps/left_only/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# A keymap for using the macropad and numpad on the left side only
46 changes: 46 additions & 0 deletions keyboards/matrimony/matrimony.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* Copyright 2021 Joshua Cheung and Nathan Nguyen
*
* 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"


// M = macro
// L = left
// R = right
// N = numpad
// A-E = row
// 0-9 = column
#define LAYOUT( \
MA0, MA1, MA2, MA3, LA0, LA1, LA2, LA3, LA4, LA5, LA6, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, NA0, NA1, NA2, NA3, \
MB0, MB1, MB2, MB3, LB0, LB1, LB2, LB3, LB4, LB5, RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, NB0, NB1, NB2, NB3, \
MC0, MC1, MC2, MC3, LC0, LC1, LC2, LC3, LC4, LC5, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, NC1, NC2, NC3, \
MD0, MD1, MD2, MD3, LD0, LD1, LD2, LD3, LD4, LD5, RD1, RD2, RD3, RD4, RD5, RD6, RD7, RD8, ND1, ND2, ND3, \
ME0, ME1, ME2, ME3, LE0, LE1, LE2, LE3, LE4, RE2, RE3, RE4, RE5, RE6, RE7, RE8, NE1, NE2, NE3 \
) \
{ \
{ MA0, MA1, MA2, MA3, LA0, LA1, LA2, LA3, LA4, LA5, LA6, KC_NO, KC_NO }, \
{ MB0, MB1, MB2, MB3, LB0, LB1, LB2, LB3, LB4, LB5, KC_NO, KC_NO, KC_NO }, \
{ MC0, MC1, MC2, MC3, LC0, LC1, LC2, LC3, LC4, LC5, KC_NO, KC_NO, KC_NO }, \
{ MD0, MD1, MD2, MD3, LD0, LD1, LD2, LD3, LD4, LD5, KC_NO, KC_NO, KC_NO }, \
{ ME0, ME1, ME2, ME3, LE0, LE1, LE2, LE3, LE4, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, NA0, NA1, NA2, NA3 }, \
{ RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, NB0, NB1, NB2, NB3 }, \
{ KC_NO, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO, NC1, NC2, NC3 }, \
{ KC_NO, RD1, RD2, RD3, RD4, RD5, RD6, RD7, RD8, KC_NO, ND1, ND2, ND3 }, \
{ KC_NO, KC_NO, RE2, RE3, RE4, RE5, RE6, RE7, RE8, KC_NO, NE1, NE2, NE3 } \
}
9 changes: 9 additions & 0 deletions keyboards/matrimony/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Matrimony

* Keyboard Maintainer: [Joshua Cheung](https://github.com/hypanim)
* Hardware Supported: Elite-C
* Hardware Availability: https://www.reddit.com/r/mechmarket/comments/w1ytmc/gb_matrimony_split_keyboard/?utm_source=share&utm_medium=web2x&context=3

Both sides of the split keyboard are flashed with the same firmware. Make sure to set the eeprom of each side to their respective left/right configuration using QMK toolbox before flashing. The BootMagic key for the left side is the top left, while the BootMagic key for the right side is the top right.
```
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).
hypanim marked this conversation as resolved.
Show resolved Hide resolved
21 changes: 21 additions & 0 deletions keyboards/matrimony/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# MCU name
MCU = atmega32u4
BOOTLOADER = atmel-dfu

BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
hypanim marked this conversation as resolved.
Show resolved Hide resolved
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
OLED_DRIVER_ENABLE = no # prevents lag
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
hypanim marked this conversation as resolved.
Show resolved Hide resolved

SPLIT_KEYBOARD = yes