Merge remote-tracking branch 'origin/master' into develop

master
Drashna Jael're 2021-11-19 09:48:23 -08:00
commit 4be9919e9f
No known key found for this signature in database
GPG Key ID: DBA1FD3A860D1B11
55 changed files with 1928 additions and 174 deletions

View File

@ -37,7 +37,7 @@ jobs:
shell: 'bash {0}' shell: 'bash {0}'
run: | run: |
qmk format-c --core-only $(< ~/files.txt) qmk format-c --core-only $(< ~/files.txt)
qmk format-python qmk format-python $(< ~/files.txt)
qmk format-text $(< ~/files.txt) qmk format-text $(< ~/files.txt)
git diff git diff

View File

@ -25,7 +25,7 @@ jobs:
shell: 'bash {0}' shell: 'bash {0}'
run: | run: |
qmk format-c -a qmk format-c -a
qmk format-python qmk format-python -a
qmk format-text -a qmk format-text -a
git diff git diff

View File

@ -17,44 +17,44 @@
#pragma once #pragma once
#define ____ KC_NO #define ___ KC_NO
#include "quantum.h" #include "quantum.h"
#define LAYOUT_default( \ #define LAYOUT_default( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K46, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K56, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K66, K76, \
K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K214, \ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K86, K96, \
K401, K402, K404, K406, K408, K410, K411, K412, K413, K314 \ K80, K91, K82, K92, K83, K93, K84, K94, K85, K95 \
) { \ ) { \
{ K000, K002, K004, K006, K008, K010, K012 }, \ { K00, K01, K02, K03, K04, K05, K06 }, \
{ K001, K003, K005, K007, K009, K011, K013 }, \ { K10, K11, K12, K13, K14, K15, K16 }, \
{ K100, K102, K104, K106, K108, K110, K112 }, \ { K20, K21, K22, K23, K24, K25, K26 }, \
{ K101, K103, K105, K107, K109, K111, K113 }, \ { K30, K31, K32, K33, K34, K35, K36 }, \
{ K200, K202, K204, K206, K208, K210, K014 }, \ { K40, K41, K42, K43, K44, K45, K46 }, \
{ K201, K203, K205, K207, K209, K211, K114 }, \ { K50, K51, K52, K53, K54, K55, K56 }, \
{ K301, K303, K305, K307, K309, K311, K212 }, \ { K60, K61, K62, K63, K64, K65, K66 }, \
{ K302, K304, K306, K308, K310, K312, K213 }, \ { K70, K71, K72, K73, K74, K75, K76 }, \
{ K401, ____, K404, K408, K411, K413, K313 }, \ { K80, ___, K82, K83, K84, K85, K86 }, \
{ ____, K402, K406, K410, K412, K314, K214 } \ { ___, K91, K92, K93, K94, K95, K96 } \
} }
#define LAYOUT_split_bs( \ #define LAYOUT_split_bs( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K403, \ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K46, K81, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K56, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K66, K76, \
K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K214, \ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K86, K96, \
K401, K402, K404, K406, K408, K410, K411, K412, K413, K314 \ K80, K91, K82, K92, K83, K93, K84, K94, K85, K95 \
) { \ ) { \
{ K000, K002, K004, K006, K008, K010, K012 }, \ { K00, K01, K02, K03, K04, K05, K06 }, \
{ K001, K003, K005, K007, K009, K011, K013 }, \ { K10, K11, K12, K13, K14, K15, K16 }, \
{ K100, K102, K104, K106, K108, K110, K112 }, \ { K20, K21, K22, K23, K24, K25, K26 }, \
{ K101, K103, K105, K107, K109, K111, K113 }, \ { K30, K31, K32, K33, K34, K35, K36 }, \
{ K200, K202, K204, K206, K208, K210, K014 }, \ { K40, K41, K42, K43, K44, K45, K46 }, \
{ K201, K203, K205, K207, K209, K211, K114 }, \ { K50, K51, K52, K53, K54, K55, K56 }, \
{ K301, K303, K305, K307, K309, K311, K212 }, \ { K60, K61, K62, K63, K64, K65, K66 }, \
{ K302, K304, K306, K308, K310, K312, K213 }, \ { K70, K71, K72, K73, K74, K75, K76 }, \
{ K401, K403, K404, K408, K411, K413, K313 }, \ { K80, K81, K82, K83, K84, K85, K86 }, \
{ ____, K402, K406, K410, K412, K314, K214 } \ { ___, K91, K92, K93, K94, K95, K96 } \
} }

View File

@ -1,25 +1,27 @@
{ {
"keyboard_name": "Chalice", "keyboard_name": "Chalice",
"url": "https://customkbd.com/products/chalice-pre-order", "url": "https://customkbd.com/products/chalice-pre-order",
"maintainer": "CustomKBD", "maintainer": "joshajohnson, CustomKBD",
"layouts": { "layouts": {
"LAYOUT_default": { "LAYOUT_default": {
"layout": [ "layout": [
{"label":"Esc", "x":0, "y":0}, {"label":"Esc", "x":0, "y":0},
{"label":"~", "x":1.5, "y":0}, {"label":"`~", "x":1.5, "y":0},
{"label":"!", "x":2.5, "y":0}, {"label":"1!", "x":2.5, "y":0},
{"label":"@", "x":3.5, "y":0}, {"label":"2@", "x":3.5, "y":0},
{"label":"#", "x":4.5, "y":0}, {"label":"3#", "x":4.5, "y":0},
{"label":"$", "x":5.5, "y":0}, {"label":"4$", "x":5.5, "y":0},
{"label":"%", "x":6.5, "y":0}, {"label":"5%", "x":6.5, "y":0},
{"label":"^", "x":7.5, "y":0}, {"label":"6^", "x":7.5, "y":0},
{"label":"&", "x":10.5, "y":0}, {"label":"7&", "x":10.5, "y":0},
{"label":"*", "x":11.5, "y":0}, {"label":"8*", "x":11.5, "y":0},
{"label":"(", "x":12.5, "y":0}, {"label":"9(", "x":12.5, "y":0},
{"label":")", "x":13.5, "y":0}, {"label":"0)", "x":13.5, "y":0},
{"label":"_", "x":14.5, "y":0}, {"label":"-_", "x":14.5, "y":0},
{"label":"+", "x":15.5, "y":0}, {"label":"=+", "x":15.5, "y":0},
{"label":"Backspace", "x":16.5, "y":0, "w":2}, {"label":"Backspace", "x":16.5, "y":0, "w":2},
{"label":"Insert", "x":0, "y":1},
{"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Tab", "x":1.5, "y":1, "w":1.5},
{"label":"Q", "x":3, "y":1}, {"label":"Q", "x":3, "y":1},
{"label":"W", "x":4, "y":1}, {"label":"W", "x":4, "y":1},
@ -31,10 +33,10 @@
{"label":"I", "x":12, "y":1}, {"label":"I", "x":12, "y":1},
{"label":"O", "x":13, "y":1}, {"label":"O", "x":13, "y":1},
{"label":"P", "x":14, "y":1}, {"label":"P", "x":14, "y":1},
{"label":"{", "x":15, "y":1}, {"label":"[{", "x":15, "y":1},
{"label":"}", "x":16, "y":1}, {"label":"]}", "x":16, "y":1},
{"label":"|", "x":17, "y":1, "w":1.5}, {"label":"\\|", "x":17, "y":1, "w":1.5},
{"label":"Mute", "x":19, "y":0.5},
{"label":"Delete", "x":0, "y":2}, {"label":"Delete", "x":0, "y":2},
{"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75},
{"label":"A", "x":3.25, "y":2}, {"label":"A", "x":3.25, "y":2},
@ -46,9 +48,10 @@
{"label":"J", "x":11.25, "y":2}, {"label":"J", "x":11.25, "y":2},
{"label":"K", "x":12.25, "y":2}, {"label":"K", "x":12.25, "y":2},
{"label":"L", "x":13.25, "y":2}, {"label":"L", "x":13.25, "y":2},
{"label":":", "x":14.25, "y":2}, {"label":";:", "x":14.25, "y":2},
{"label":"\"", "x":15.25, "y":2}, {"label":"'\"", "x":15.25, "y":2},
{"label":"Enter", "x":16.25, "y":2, "w":2.25}, {"label":"Enter", "x":16.25, "y":2, "w":2.25},
{"label":"Shift", "x":1.5, "y":3, "w":2.25}, {"label":"Shift", "x":1.5, "y":3, "w":2.25},
{"label":"Z", "x":3.75, "y":3}, {"label":"Z", "x":3.75, "y":3},
{"label":"X", "x":4.75, "y":3}, {"label":"X", "x":4.75, "y":3},
@ -58,21 +61,99 @@
{"label":"B", "x":9.75, "y":3}, {"label":"B", "x":9.75, "y":3},
{"label":"N", "x":10.75, "y":3}, {"label":"N", "x":10.75, "y":3},
{"label":"M", "x":11.75, "y":3}, {"label":"M", "x":11.75, "y":3},
{"label":"<", "x":12.75, "y":3}, {"label":",<", "x":12.75, "y":3},
{"label":">", "x":13.75, "y":3}, {"label":".>", "x":13.75, "y":3},
{"label":"?", "x":14.75, "y":3}, {"label":"/?", "x":14.75, "y":3},
{"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"Shift", "x":15.75, "y":3, "w":1.75},
{"label":"Up", "x":17.75, "y":3.25}, {"label":"Up", "x":17.5, "y":3},
{"label":"Ctrl", "x":1.5, "y":4, "w":1.5}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.5},
{"label":"Alt", "x":4.5, "y":4, "w":1.5}, {"label":"Alt", "x":4.5, "y":4, "w":1.5},
{"label":"Space", "x":6, "y":4, "w":2}, {"label":"Space", "x":6, "y":4, "w":2.25},
{"label":"Fn", "x":8, "y":4}, {"label":"Fn", "x":8.25, "y":4},
{"label":"Space", "x":9.75, "y":4, "w":2.75}, {"label":"Space", "x":9.75, "y":4, "w":2.75},
{"label":"Alt", "x":12.5, "y":4, "w":1.5}, {"label":"Alt", "x":12.5, "y":4, "w":1.5},
{"label":"Ctrl", "x":15, "y":4, "w":1.5}, {"label":"Ctrl", "x":15, "y":4, "w":1.5},
{"label":"Left", "x":16.75, "y":4.25}, {"label":"Left", "x":16.5, "y":4},
{"label":"Down", "x":17.75, "y":4.25}, {"label":"Down", "x":17.5, "y":4},
{"label":"Right", "x":18.75, "y":4.25} {"label":"Right", "x":18.5, "y":4}
]
},
"LAYOUT_split_bs": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"`~", "x":1.5, "y":0},
{"label":"1!", "x":2.5, "y":0},
{"label":"2@", "x":3.5, "y":0},
{"label":"3#", "x":4.5, "y":0},
{"label":"4$", "x":5.5, "y":0},
{"label":"5%", "x":6.5, "y":0},
{"label":"6^", "x":7.5, "y":0},
{"label":"7&", "x":10.5, "y":0},
{"label":"8*", "x":11.5, "y":0},
{"label":"9(", "x":12.5, "y":0},
{"label":"0)", "x":13.5, "y":0},
{"label":"-_", "x":14.5, "y":0},
{"label":"=+", "x":15.5, "y":0},
{"label":"Backspace", "x":16.5, "y":0},
{"label":"Backspace", "x":17.5, "y":0},
{"label":"Insert", "x":0, "y":1},
{"label":"Tab", "x":1.5, "y":1, "w":1.5},
{"label":"Q", "x":3, "y":1},
{"label":"W", "x":4, "y":1},
{"label":"E", "x":5, "y":1},
{"label":"R", "x":6, "y":1},
{"label":"T", "x":7, "y":1},
{"label":"Y", "x":10, "y":1},
{"label":"U", "x":11, "y":1},
{"label":"I", "x":12, "y":1},
{"label":"O", "x":13, "y":1},
{"label":"P", "x":14, "y":1},
{"label":"[{", "x":15, "y":1},
{"label":"]}", "x":16, "y":1},
{"label":"\\|", "x":17, "y":1, "w":1.5},
{"label":"Delete", "x":0, "y":2},
{"label":"Caps Lock", "x":1.5, "y":2, "w":1.75},
{"label":"A", "x":3.25, "y":2},
{"label":"S", "x":4.25, "y":2},
{"label":"D", "x":5.25, "y":2},
{"label":"F", "x":6.25, "y":2},
{"label":"G", "x":7.25, "y":2},
{"label":"H", "x":10.25, "y":2},
{"label":"J", "x":11.25, "y":2},
{"label":"K", "x":12.25, "y":2},
{"label":"L", "x":13.25, "y":2},
{"label":";:", "x":14.25, "y":2},
{"label":"'\"", "x":15.25, "y":2},
{"label":"Enter", "x":16.25, "y":2, "w":2.25},
{"label":"Shift", "x":1.5, "y":3, "w":2.25},
{"label":"Z", "x":3.75, "y":3},
{"label":"X", "x":4.75, "y":3},
{"label":"C", "x":5.75, "y":3},
{"label":"V", "x":6.75, "y":3},
{"label":"B", "x":7.75, "y":3},
{"label":"B", "x":9.75, "y":3},
{"label":"N", "x":10.75, "y":3},
{"label":"M", "x":11.75, "y":3},
{"label":",<", "x":12.75, "y":3},
{"label":".>", "x":13.75, "y":3},
{"label":"/?", "x":14.75, "y":3},
{"label":"Shift", "x":15.75, "y":3, "w":1.75},
{"label":"Up", "x":17.5, "y":3},
{"label":"Ctrl", "x":1.5, "y":4, "w":1.5},
{"label":"Alt", "x":4.5, "y":4, "w":1.5},
{"label":"Space", "x":6, "y":4, "w":2.25},
{"label":"Fn", "x":8.25, "y":4},
{"label":"Space", "x":9.75, "y":4, "w":2.75},
{"label":"Alt", "x":12.5, "y":4, "w":1.5},
{"label":"Ctrl", "x":15, "y":4, "w":1.5},
{"label":"Left", "x":16.5, "y":4},
{"label":"Down", "x":17.5, "y":4},
{"label":"Right", "x":18.5, "y":4}
] ]
} }
} }

View File

@ -0,0 +1,50 @@
/* Copyright 2021 Cutie Club
*
* 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 VENDOR_ID 0xFB9C
#define PRODUCT_ID 0xB265
#define DEVICE_VER 0x0000
#define MANUFACTURER Cutie Club
#define PRODUCT Keebcats Dougal 65%
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
/*
* Keyboard Matrix Assignments
*/
#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 }
#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, B7 }
#define UNUSED_PINS { B0, B1, B3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
#define LED_CAPS_LOCK_PIN F0
/* 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

View File

@ -0,0 +1,17 @@
/* Copyright 2021 Cutie Club
*
* 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 "dougal.h"

View File

@ -0,0 +1,34 @@
/* Copyright 2021 Cutie Club
*
* 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_all( \
k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, \
k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_15, \
k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_15, \
k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, k03_15, \
k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_15 \
) \
{ \
{ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15 }, \
{ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO, k01_15 }, \
{ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO, k02_15 }, \
{ k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO, k03_15 }, \
{ k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, KC_NO, k04_15 } \
}

View File

@ -0,0 +1,84 @@
{
"keyboard_name": "Keebcats Dougal",
"url": "",
"maintainer": "Cutie Club",
"layouts": {
"LAYOUT_all": {
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 12, "y": 0 },
{ "x": 13, "y": 0 },
{ "x": 14, "y": 0 },
{ "x": 15, "y": 0 },
{ "x": 0, "y": 1, "w": 1.5 },
{ "x": 1.5, "y": 1 },
{ "x": 2.5, "y": 1 },
{ "x": 3.5, "y": 1 },
{ "x": 4.5, "y": 1 },
{ "x": 5.5, "y": 1 },
{ "x": 6.5, "y": 1 },
{ "x": 7.5, "y": 1 },
{ "x": 8.5, "y": 1 },
{ "x": 9.5, "y": 1 },
{ "x": 10.5, "y": 1 },
{ "x": 11.5, "y": 1 },
{ "x": 12.5, "y": 1 },
{ "x": 13.5, "y": 1, "w": 1.5 },
{ "x": 15, "y": 1 },
{ "x": 0, "y": 2, "w": 1.75 },
{ "x": 1.75, "y": 2 },
{ "x": 2.75, "y": 2 },
{ "x": 3.75, "y": 2 },
{ "x": 4.75, "y": 2 },
{ "x": 5.75, "y": 2 },
{ "x": 6.75, "y": 2 },
{ "x": 7.75, "y": 2 },
{ "x": 8.75, "y": 2 },
{ "x": 9.75, "y": 2 },
{ "x": 10.75, "y": 2 },
{ "x": 11.75, "y": 2 },
{ "x": 12.75, "y": 2 },
{ "x": 14, "y": 2 },
{ "x": 15, "y": 2 },
{ "x": 0, "y": 3, "w": 1.25 },
{ "x": 1.25, "y": 3 },
{ "x": 2.25, "y": 3 },
{ "x": 3.25, "y": 3 },
{ "x": 4.25, "y": 3 },
{ "x": 5.25, "y": 3 },
{ "x": 6.25, "y": 3 },
{ "x": 7.25, "y": 3 },
{ "x": 8.25, "y": 3 },
{ "x": 9.25, "y": 3 },
{ "x": 10.25, "y": 3 },
{ "x": 11.25, "y": 3 },
{ "x": 12.25, "y": 3, "w": 1.75 },
{ "x": 14, "y": 3 },
{ "x": 15, "y": 3 },
{ "x": 0, "y": 4, "w": 1.25 },
{ "x": 1.25, "y": 4, "w": 1.25 },
{ "x": 2.5, "y": 4, "w": 1.25 },
{ "x": 3.75, "y": 4, "w": 2.25 },
{ "x": 6, "y": 4, "w": 1.25 },
{ "x": 7.25, "y": 4, "w": 2.75 },
{ "x": 10, "y": 4 },
{ "x": 11, "y": 4 },
{ "x": 12, "y": 4 },
{ "x": 13, "y": 4 },
{ "x": 14, "y": 4 },
{ "x": 15, "y": 4 }
]
}
}
}

View File

@ -0,0 +1,28 @@
/* Copyright 2021 Cutie Club
*
* 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] = {
/* Base */
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
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_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
)
};

View File

@ -0,0 +1,49 @@
/* Copyright 2021 Cutie Club
*
* 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] = {
/* Base */
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
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_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,18 @@
# Dougal
* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/)
* Hardware Supported: Atmega32u4 based 65% PCB, with wide compatibility
* Hardware Availability: [Keebcats](https://keebcats.co.uk)
## Bootloader
Enter the bootloader in 2 ways with the default configuration:
* **Bootmagic reset**: Hold down the key at top left key (matrix position 0,0) and plug the device in
* **Physical reset button**: Press the button marked reset on the back of the PCB
Make example for this keyboard (after setting up your build environment):
make cutie_club/keebcats/dougal: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).

View File

@ -0,0 +1,21 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic
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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

View File

@ -0,0 +1,33 @@
/*
This is the c configuration file for the keymap
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
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
/* Use I2C or Serial, not both */
#define USE_SERIAL
// #define USE_I2C
/* Select hand configuration */
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS

View File

@ -0,0 +1,111 @@
/* Copyright 2021 Yoshihiro Saito
*
* 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 {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST,
};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE,
ADJUST,
};
// Shift + ( = <
const key_override_t left_paren_angle_bracket_override = ko_make_basic(MOD_MASK_SHIFT, KC_LEFT_PAREN, KC_LEFT_ANGLE_BRACKET);
// Shift + ) = >
const key_override_t right_paren_angle_bracket_override = ko_make_basic(MOD_MASK_SHIFT, KC_RIGHT_PAREN, KC_RIGHT_ANGLE_BRACKET);
const key_override_t **key_overrides = (const key_override_t *[]){
&left_paren_angle_bracket_override,
&right_paren_angle_bracket_override,
NULL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty */
[_QWERTY] = LAYOUT(
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LPRN, KC_RPRN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_DEL,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, LOWER, CTL_T(KC_SPC), KC_SFTENT, RAISE, KC_RGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
/* Lower */
[_LOWER] = LAYOUT(
XXXXXXX, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F11, KC_GRV, KC_CIRC, KC_AMPR, KC_ASTR, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_TILD, KC_BSLS, KC_MINS, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
/* Raise */
[_RAISE] = LAYOUT(
XXXXXXX, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, XXXXXXX, XXXXXXX, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
/* Adjust */
[_ADJUST] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ ,_______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
break;
}
return true;
}

View File

@ -0,0 +1,4 @@
# yoshimaru46's keymap for Ergodash mini
This is the yoshimaru46's keymap configuration for Ergodash mini.
There are three layers, QWERTY(default), LOWER, and RAISE.

View File

@ -0,0 +1,4 @@
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
AUDIO_ENABLE = no
KEY_OVERRIDE_ENABLE = yes

View File

@ -2,35 +2,105 @@
"keyboard_name": "Puca", "keyboard_name": "Puca",
"url": "https://ffkeebs.com/collections/puca/", "url": "https://ffkeebs.com/collections/puca/",
"maintainer": "Sleepdealr", "maintainer": "Sleepdealr",
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT_all": {
"layout": [ "layout": [
{ "label": "Rotary", "x": 0.5, "y": 0 }, { "label": "Rotary", "x": 0.5, "y": 0 },
{ "label": "Pg Up", "x": 2, "y": 0 }, { "label": "Pg Up", "x": 2, "y": 0 },
{ "label": "Pg Dn", "x": 3, "y": 0 }, { "label": "Pg Dn", "x": 3, "y": 0 },
{ "label": "Layer Toggle", "x": 0, "y": 1.25 }, { "label": "Layer Toggle", "x": 0, "y": 1.25 },
{ "label": "/", "x": 1, "y": 1.25 }, { "label": "/", "x": 1, "y": 1.25 },
{ "label": "*", "x": 2, "y": 1.25 }, { "label": "*", "x": 2, "y": 1.25 },
{ "label": "-", "x": 3, "y": 1.25 }, { "label": "-", "x": 3, "y": 1.25 },
{ "label": "7", "x": 0, "y": 2.25 }, { "label": "7", "x": 0, "y": 2.25 },
{ "label": "8", "x": 1, "y": 2.25 }, { "label": "8", "x": 1, "y": 2.25 },
{ "label": "9", "x": 2, "y": 2.25 }, { "label": "9", "x": 2, "y": 2.25 },
{ "label": "+", "x": 3, "y": 2.25, "h": 2 }, { "label": "+", "x": 3, "y": 2.25 },
{ "label": "+", "x": 4, "y": 2.25 }, { "label": "+", "x": 4, "y": 2.25, "h": 2 },
{ "label": "4", "x": 0, "y": 3.25 }, { "label": "4", "x": 0, "y": 3.25 },
{ "label": "5", "x": 1, "y": 3.25 }, { "label": "5", "x": 1, "y": 3.25 },
{ "label": "6", "x": 2, "y": 3.25 }, { "label": "6", "x": 2, "y": 3.25 },
{ "label": "|", "x": 4, "y": 3.25 }, { "label": "|", "x": 3, "y": 3.25 },
{ "label": "1", "x": 0, "y": 4.25 }, { "label": "1", "x": 0, "y": 4.25 },
{ "label": "2", "x": 1, "y": 4.25 }, { "label": "2", "x": 1, "y": 4.25 },
{ "label": "3", "x": 2, "y": 4.25 }, { "label": "3", "x": 2, "y": 4.25 },
{ "label": "Enter", "x": 3, "y": 4.25, "h": 2 }, { "label": "Enter", "x": 3, "y": 4.25 },
{ "label": "Enter", "x": 4, "y": 4.25 }, { "label": "Enter", "x": 4, "y": 4.25, "h": 2 },
{ "label": "0", "x": 0, "y": 5.25 },
{ "label": "00", "x": 1, "y": 5.25 },
{ "label": ".", "x": 2, "y": 5.25 },
{ "label": ".", "x": 3, "y": 5.25 },
{ "label": "0", "x": 0, "y": 6.25, "w": 2 }
]
},
"LAYOUT_numpad": {
"layout": [
{ "label": "Rotary", "x": 0.5, "y": 0 },
{ "label": "Pg Up", "x": 2, "y": 0 },
{ "label": "Pg Dn", "x": 3, "y": 0 },
{ "label": "Layer Toggle", "x": 0, "y": 1.25 },
{ "label": "/", "x": 1, "y": 1.25 },
{ "label": "*", "x": 2, "y": 1.25 },
{ "label": "-", "x": 3, "y": 1.25 },
{ "label": "7", "x": 0, "y": 2.25 },
{ "label": "8", "x": 1, "y": 2.25 },
{ "label": "9", "x": 2, "y": 2.25 },
{ "label": "4", "x": 0, "y": 3.25 },
{ "label": "5", "x": 1, "y": 3.25 },
{ "label": "6", "x": 2, "y": 3.25 },
{ "label": "+", "x": 3, "y": 2.25, "h": 2 },
{ "label": "1", "x": 0, "y": 4.25 },
{ "label": "2", "x": 1, "y": 4.25 },
{ "label": "3", "x": 2, "y": 4.25 },
{ "label": "0", "x": 0, "y": 5.25, "w": 2 }, { "label": "0", "x": 0, "y": 5.25, "w": 2 },
{ "label": ".", "x": 2, "y": 5.25 }, { "label": ".", "x": 2, "y": 5.25 },
{ "label": ".", "x": 4, "y": 5.25 }, { "label": "Enter", "x": 3, "y": 4.25, "h": 2 }
{ "label": "0", "x": 0, "y": 6.25 }, ]
{ "label": "00", "x": 1, "y": 6.25 } },
"LAYOUT_ortho": {
"layout": [
{ "label": "Rotary", "x": 0.5, "y": 0 },
{ "label": "Pg Up", "x": 2, "y": 0 },
{ "label": "Pg Dn", "x": 3, "y": 0 },
{ "label": "Layer Toggle", "x": 0, "y": 1.25 },
{ "label": "/", "x": 1, "y": 1.25 },
{ "label": "*", "x": 2, "y": 1.25 },
{ "label": "-", "x": 3, "y": 1.25 },
{ "label": "7", "x": 0, "y": 2.25 },
{ "label": "8", "x": 1, "y": 2.25 },
{ "label": "9", "x": 2, "y": 2.25 },
{ "label": "+", "x": 3, "y": 2.25 },
{ "label": "4", "x": 0, "y": 3.25 },
{ "label": "5", "x": 1, "y": 3.25 },
{ "label": "6", "x": 2, "y": 3.25 },
{ "label": "|", "x": 3, "y": 3.25 },
{ "label": "1", "x": 0, "y": 4.25 },
{ "label": "2", "x": 1, "y": 4.25 },
{ "label": "3", "x": 2, "y": 4.25 },
{ "label": "Enter", "x": 3, "y": 4.25 },
{ "label": "0", "x": 0, "y": 5.25 },
{ "label": "00", "x": 1, "y": 5.25 },
{ "label": ".", "x": 2, "y": 5.25 },
{ "label": "Enter", "x": 3, "y": 5.25 }
] ]
} }
} }

View File

@ -1,4 +1,4 @@
/* Copyright 2021 Sleepdealer /* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft)
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -15,38 +15,26 @@
*/ */
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
// 00 Functionality
enum custom_keycodes {
MC_00 = SAFE_RANGE,
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case MC_00:
if (record->event.pressed) {
SEND_STRING("00");
}
break;
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
KC_MUTE, KC_PGUP, KC_PGDN, [0] = LAYOUT_all(
TG(1), KC_PSLS, KC_PAST, KC_PMNS, KC_MUTE, KC_PGUP, KC_PGDN,
KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PPLS, TG(1), KC_PSLS, KC_PAST, KC_PMNS,
KC_P4, KC_P5, KC_P6, KC_PIPE, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PPLS,
KC_P1, KC_P2, KC_P3, KC_ENTER, KC_ENTER, KC_P4, KC_P5, KC_P6, KC_PIPE,
KC_P0, MC_00, KC_PDOT, KC_PDOT, KC_P1, KC_P2, KC_P3, KC_ENTER, KC_ENTER,
KC_P0), KC_P0, MC_00, KC_PDOT, KC_PDOT,
LAYOUT( KC_P0
),
[1] = LAYOUT_all(
KC_TRNS, RGB_HUI, RGB_VAI, KC_TRNS, RGB_HUI, RGB_VAI,
TG(1), RGB_TOG, RGB_HUD, RGB_VAD, TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
KC_PGUP, KC_UP, KC_PGDN, RGB_MOD, RGB_MOD, KC_PGUP, KC_UP, KC_PGDN, RGB_MOD, RGB_MOD,
KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
KC_INS, KC_HOME, KC_END, RGB_RMOD, RGB_RMOD, KC_INS, KC_HOME, KC_END, RGB_RMOD, RGB_RMOD,
KC_ESC, KC_TRNS, KC_DEL, KC_TRNS, KC_ESC, KC_TRNS, KC_DEL, KC_TRNS,
KC_ESC) KC_ESC
),
}; };

View File

@ -0,0 +1,38 @@
/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft)
*
* 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_numpad(
KC_MUTE, KC_PGUP, KC_PGDN,
TG(1), KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_ENTER
),
[1] = LAYOUT_numpad(
_______, RGB_HUI, RGB_VAI,
TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
KC_PGUP, KC_UP, KC_PGDN,
KC_LEFT, KC_DOWN, KC_RGHT, RGB_MOD,
KC_INS, KC_HOME, KC_END,
KC_ESC, KC_DEL, RGB_RMOD
),
};

View File

@ -0,0 +1,38 @@
/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft)
*
* 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_ortho(
KC_MUTE, KC_PGUP, KC_PGDN,
TG(1), KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_P4, KC_P5, KC_P6, KC_PIPE,
KC_P1, KC_P2, KC_P3, KC_ENTER,
KC_P0, MC_00, KC_PDOT, KC_ENTER
),
[1] = LAYOUT_ortho(
_______, RGB_HUI, RGB_VAI,
TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
KC_PGUP, KC_UP, KC_PGDN, RGB_MOD,
KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX,
KC_INS, KC_HOME, KC_END, RGB_RMOD,
KC_ESC, XXXXXXX, KC_DEL, XXXXXXX
)
};

View File

@ -15,6 +15,20 @@
*/ */
#include "puca.h" #include "puca.h"
bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {
case MC_00:
if (record->event.pressed) {
SEND_STRING("00");
}
break;
}
return true;
}
bool encoder_update_kb(uint8_t index, bool clockwise) { bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; } if (!encoder_update_user(index, clockwise)) { return false; }
if (clockwise) { if (clockwise) {

View File

@ -16,26 +16,86 @@
#pragma once #pragma once
// K24 is 2U Plus
// K44 is 2u Enter
// K54 is 2u 0
#include "quantum.h" #include "quantum.h"
#define LAYOUT( \ /* Keycodes defined here can be used by any keymap. If you wish to
K00, K02, K03, \ * define additional keycodes for your personal keymap only, assign
K10, K11, K12, K13, \ * your first custom keycode to `= NEW_SAFE_RANGE`.
K20, K21, K22, K23, K24,\ *
K30, K31, K32, K33, \ * See `process_record_kb()` in `puca.c`.
K40, K41, K42, K43, K44,\ */
K50, K51, K52, K53, \ enum keyboard_keycodes {
K54 \ MC_00 = SAFE_RANGE,
NEW_SAFE_RANGE,
};
#define XXX KC_NO
/*
*
* 00 02 03
*
*
* 10 11 12 13
*
* 20 21 22 23
* 24 2u Plus
* 30 31 32 33
*
* 40 41 42 43
* 44 2u Enter
* 50 51 52 53
*
*
* 54 2u 0
*
*/
#define LAYOUT_all( \
K00, K02, K03, \
K10, K11, K12, K13, \
K20, K21, K22, K23, K24,\
K30, K31, K32, K33, \
K40, K41, K42, K43, K44,\
K50, K51, K52, K53, \
K54 \
) { \ ) { \
{ K00, KC_NO, K02, K03, KC_NO }, \ { K00, XXX, K02, K03, XXX }, \
{ K10, K11, K12, K13, KC_NO }, \ { K10, K11, K12, K13, XXX }, \
{ K20, K21, K22, K23, K24 }, \ { K20, K21, K22, K23, K24 }, \
{ K30, K31, K32, K33, KC_NO }, \ { K30, K31, K32, K33, XXX }, \
{ K40, K41, K42, K43, K44 }, \ { K40, K41, K42, K43, K44 }, \
{ K50, K51, K52, K53, K54 }, \ { K50, K51, K52, K53, K54 }, \
}
#define LAYOUT_numpad( \
K00, K02, K03, \
K10, K11, K12, K13, \
K20, K21, K22, \
K30, K31, K32, K24, \
K40, K41, K42, \
K54, K52, K44 \
) { \
{ K00, XXX, K02, K03, XXX }, \
{ K10, K11, K12, K13, XXX }, \
{ K20, K21, K22, XXX, K24 }, \
{ K30, K31, K32, XXX, XXX }, \
{ K40, K41, K42, XXX, K44 }, \
{ XXX, XXX, K52, XXX, K54 }, \
}
#define LAYOUT_ortho( \
K00, K02, K03, \
K10, K11, K12, K13, \
K20, K21, K22, K23, \
K30, K31, K32, K33, \
K40, K41, K42, K43, \
K50, K51, K52, K53 \
) { \
{ K00, XXX, K02, K03, XXX }, \
{ K10, K11, K12, K13, XXX }, \
{ K20, K21, K22, K23, XXX }, \
{ K30, K31, K32, K33, XXX }, \
{ K40, K41, K42, K43, XXX }, \
{ K50, K51, K52, K53, XXX }, \
} }

View File

@ -2,7 +2,7 @@
* Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr) * Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr)
* Hardware Supported: Puca Pad * Hardware Supported: Puca Pad
* Hardware Availability: Puca GB * Hardware Availability: [Puca GB](https://ffkeebs.com/collections/puca)
## Bootloader ## Bootloader

View File

@ -19,7 +19,7 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes #Rotary encoder ENCODER_ENABLE = yes # Enable rotary encoder support
OLED_ENABLE = yes # Enable OLED support
OLED_ENABLE = yes #OLED LTO_ENABLE = yes # Enable Link Time Optimization to reduce firmware size
LTO_ENABLE = yes # Enable Link Time Optimization to reduce firmware size

View File

@ -4,7 +4,102 @@
"url": "https://github.com/jurassic73/split89", "url": "https://github.com/jurassic73/split89",
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":10.25, "y":0}, {"label":"F7", "x":11.25, "y":0}, {"label":"F8", "x":12.25, "y":0}, {"label":"F9", "x":13.75, "y":0}, {"label":"F10", "x":14.75, "y":0}, {"label":"F11", "x":15.75, "y":0}, {"label":"F12", "x":16.75, "y":0}, {"label":"PrtSc", "x":18, "y":0}, {"label":"Scroll Lock", "x":19, "y":0}, {"label":"Pause", "x":20, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":9.75, "y":1.5}, {"label":"*", "x":10.75, "y":1.5}, {"label":"(", "x":11.75, "y":1.5}, {"label":")", "x":12.75, "y":1.5}, {"label":"_", "x":13.75, "y":1.5}, {"label":"+", "x":14.75, "y":1.5}, {"label":"Backspace", "x":15.75, "y":1.5, "w":2}, {"label":"Insert", "x":18, "y":1.5}, {"label":"Home", "x":19, "y":1.5}, {"label":"PgUp", "x":20, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":9.25, "y":2.5}, {"label":"U", "x":10.25, "y":2.5}, {"label":"I", "x":11.25, "y":2.5}, {"label":"O", "x":12.25, "y":2.5}, {"label":"P", "x":13.25, "y":2.5}, {"label":"{", "x":14.25, "y":2.5}, {"label":"}", "x":15.25, "y":2.5}, {"label":"|", "x":16.25, "y":2.5, "w":1.5}, {"label":"Delete", "x":18, "y":2.5}, {"label":"End", "x":19, "y":2.5}, {"label":"PgDn", "x":20, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":9.5, "y":3.5}, {"label":"J", "x":10.5, "y":3.5}, {"label":"K", "x":11.5, "y":3.5}, {"label":"L", "x":12.5, "y":3.5}, {"label":":", "x":13.5, "y":3.5}, {"label":"\"", "x":14.5, "y":3.5}, {"label":"Enter", "x":15.5, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":10, "y":4.5}, {"label":"M", "x":11, "y":4.5}, {"label":"<", "x":12, "y":4.5}, {"label":">", "x":13, "y":4.5}, {"label":"?", "x":14, "y":4.5}, {"label":"Shift", "x":15, "y":4.5, "w":2.75}, {"label":"\u2191", "x":19, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Fn", "x":1.25, "y":5.5, "w":1.25}, {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.5, "w":1.25}, {"x":5, "y":5.5, "w":2.25}, {"x":10, "y":5.5, "w":2.75}, {"label":"Alt", "x":12.75, "y":5.5, "w":1.25}, {"label":"Win", "x":14, "y":5.5, "w":1.25}, {"label":"Menu", "x":15.25, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":16.5, "y":5.5, "w":1.25}, {"label":"\u2190", "x":18, "y":5.5}, {"label":"\u2193", "x":19, "y":5.5}, {"label":"\u2192", "x":20, "y":5.5}] "layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6, "y":0},
{"label":"F6", "x":8.5, "y":0},
{"label":"F7", "x":9.5, "y":0},
{"label":"F8", "x":10.5, "y":0},
{"label":"F9", "x":12.0, "y":0},
{"label":"F10", "x":13.0, "y":0},
{"label":"F11", "x":14.0, "y":0},
{"label":"F12", "x":15.0, "y":0},
{"label":"PrtSc", "x":16.25, "y":0},
{"label":"Scroll Lock", "x":17.25, "y":0},
{"label":"Pause", "x":18.25, "y":0},
{"label":"`~", "x":0, "y":1.25},
{"label":"1!", "x":1, "y":1.25},
{"label":"2@", "x":2, "y":1.25},
{"label":"3#", "x":3, "y":1.25},
{"label":"4$", "x":4, "y":1.25},
{"label":"5%", "x":5, "y":1.25},
{"label":"6^", "x":6, "y":1.25},
{"label":"7&", "x":8.0, "y":1.25},
{"label":"8*", "x":9.0, "y":1.25},
{"label":"9(", "x":10.0, "y":1.25},
{"label":"0)", "x":11.0, "y":1.25},
{"label":"-_", "x":12.0, "y":1.25},
{"label":"=+", "x":13.0, "y":1.25},
{"label":"Backspace", "x":14.0, "y":1.25, "w":2},
{"label":"Insert", "x":16.25, "y":1.25},
{"label":"Home", "x":17.25, "y":1.25},
{"label":"PgUp", "x":18.25, "y":1.25},
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":7.5, "y":2.25},
{"label":"U", "x":8.5, "y":2.25},
{"label":"I", "x":9.5, "y":2.25},
{"label":"O", "x":10.5, "y":2.25},
{"label":"P", "x":11.5, "y":2.25},
{"label":"[{", "x":12.5, "y":2.25},
{"label":"]}", "x":13.5, "y":2.25},
{"label":"\\|", "x":14.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":16.25, "y":2.25},
{"label":"End", "x":17.25, "y":2.25},
{"label":"PgDn", "x":18.25, "y":2.25},
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":7.75, "y":3.25},
{"label":"J", "x":8.75, "y":3.25},
{"label":"K", "x":9.75, "y":3.25},
{"label":"L", "x":10.75, "y":3.25},
{"label":";:", "x":11.75, "y":3.25},
{"label":"'\"", "x":12.75, "y":3.25},
{"label":"Enter", "x":13.75, "y":3.25, "w":2.25},
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":8.25, "y":4.25},
{"label":"M", "x":9.25, "y":4.25},
{"label":",<", "x":10.25, "y":4.25},
{"label":".>", "x":11.25, "y":4.25},
{"label":"/?", "x":12.25, "y":4.25},
{"label":"Shift", "x":13.25, "y":4.25, "w":2.75},
{"label":"\u2191", "x":17.25, "y":4.25},
{"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"label":"Fn", "x":1.25, "y":5.25, "w":1.25},
{"label":"Win", "x":2.5, "y":5.25, "w":1.25},
{"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
{"label":"Space", "x":5, "y":5.25, "w":2.25},
{"label":"Space", "x":8.25, "y":5.25, "w":2.75},
{"label":"Alt", "x":11.0, "y":5.25, "w":1.25},
{"label":"Win", "x":12.25, "y":5.25, "w":1.25},
{"label":"Menu", "x":13.5, "y":5.25, "w":1.25},
{"label":"Ctrl", "x":14.75, "y":5.25, "w":1.25},
{"label":"\u2190", "x":16.25, "y":5.25},
{"label":"\u2193", "x":17.25, "y":5.25},
{"label":"\u2192", "x":18.25, "y":5.25}
]
} }
} }
} }

View File

@ -23,20 +23,20 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */ /* Base */
[0] = LAYOUT( [0] = LAYOUT(
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_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_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_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, 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_Y, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, 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_H, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP, 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,MO(1),KC_LGUI,KC_LALT,KC_SPACE, KC_N, KC_SPACE, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
/* Volume */ /* Volume */
[1] = LAYOUT( [1] = LAYOUT(
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_MEDIA_PLAY_PAUSE, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
), ),
}; };

View File

@ -18,6 +18,8 @@
#include "quantum.h" #include "quantum.h"
#define XXX KC_NO
/* This is a shortcut to help you visually see your layout. /* This is a shortcut to help you visually see your layout.
* *
* The first section contains all of the arguments representing the physical * The first section contains all of the arguments representing the physical
@ -27,24 +29,24 @@
* represents the switch matrix which includes blanks in the wired out matrix. * represents the switch matrix which includes blanks in the wired out matrix.
*/ */
#define LAYOUT( \ #define LAYOUT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, k15, \ K04, K05, K06, K07, K08, K09, K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, \
k32, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, \ K24, K14, K15, K16, K17, K18, K19, K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, \
k48, k33, k34, k35, k36, k37, k54, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, \ K34, K25, K26, K27, K28, K29, K39, K90, K80, K81, K82, K83, K84, K85, K86, K87, K88, \
k61, k49, k50, k51, k52, k53, k67, k55, k56, k57, k58, k59, k60, \ K89, K44, K35, K36, K37, K38, K49, KA0, K91, K92, K93, K94, K95, \
k74, k62, k63, k64, k65, k66, k80, k68, k69, k70, k71, k72, k73, \ K96, K54, K45, K46, K47, K48, K59, KB0, KA1, KA2, KA3, KA4, KA6, \
k75, k76, k77, k78, k79, k81, k82, k83, k84, k85, k86, k87, k88 \ KA8, K55, K56, K57, K58, KB1, KB3, KB4, KB5, KB6, KB7, KB8, KB9 \
) \ ) \
{ \ { \
{ KC_NO, KC_NO, KC_NO, KC_NO, k00, k01, k02, k03, k04, k05 }, \ { XXX, XXX, XXX, XXX, K04, K05, K06, K07, K08, K09 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, k16, k17, k18, k19, k20, k21 }, \ { XXX, XXX, XXX, XXX, K14, K15, K16, K17, K18, K19 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, k32, k33, k34, k35, k36, k37 }, \ { XXX, XXX, XXX, XXX, K24, K25, K26, K27, K28, K29 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, k48, k49, k50, k51, k52, k53 }, \ { XXX, XXX, XXX, XXX, K34, K35, K36, K37, K38, K39 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, k61, k62, k63, k64, k65, k66, }, \ { XXX, XXX, XXX, XXX, K44, K45, K46, K47, K48, K49 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, k74, k75, k76, k77, k78, k79, }, \ { XXX, XXX, XXX, XXX, K54, K55, K56, K57, K58, K59 }, \
{ k06, k07, k08, k09, k10, k11, k12, k13, k14, k15 }, \ { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69 }, \
{ k22, k23, k24, k25, k26, k27, k28, k29, k30, k31 }, \ { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79 }, \
{ k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 }, \ { K80, K81, K82, K83, K84, K85, K86, K87, K88, K89 }, \
{ k54, k55, k56, k57, k58, k59, k60, KC_NO, KC_NO, KC_NO }, \ { K90, K91, K92, K93, K94, K95, K96, XXX, XXX, XXX }, \
{ k67, k68, k69, k70, k71, KC_NO, k72, KC_NO, k73, KC_NO }, \ { KA0, KA1, KA2, KA3, KA4, XXX, KA6, XXX, KA8, XXX }, \
{ k80, k81, KC_NO, k82, k83, k84, k85, k86, k87, k88 } \ { KB0, KB1, XXX, KB3, KB4, KB5, KB6, KB7, KB8, KB9 } \
} }

View File

@ -0,0 +1,53 @@
/* Copyright 2021 jfescobar18
*
* 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 VENDOR_ID 0x4D4B // MechanicKeys
#define PRODUCT_ID 0x6D6E
#define DEVICE_VER 0x0001
#define MANUFACTURER MechanicKeys
#define PRODUCT MINI ASHEN 40
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
/*
* 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 MATRIX_ROW_PINS { B1, B2, B3, B4 }
#define MATRIX_COL_PINS { C5, C4, C3, D0, C2, D1, C1, C0, D4, B0, D7, D6, B5 }
#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
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST

View File

@ -0,0 +1,15 @@
{
"keyboard_name": "Mini Ashen 40",
"url": "",
"maintainer": "qmk",
"layouts": {
"LAYOUT": {
"layout": [
{"label": "Tab", "x": 0, "y": 0}, {"label": "Q", "x": 1, "y": 0}, {"label": "W", "x": 2, "y": 0}, {"label": "E", "x": 3, "y": 0}, {"label": "R", "x": 4, "y": 0}, {"label": "T", "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": "Del", "x": 11, "y": 0}, {"label": "M1", "x": 12.25, "y": 0}, {"label": "M2", "x": 13.25, "y": 0},
{"label": "Ctrl", "x": 0, "y": 1, "w":1.25}, {"label": "A", "x": 1.25, "y": 1}, {"label": "S", "x": 2.25, "y": 1}, {"label": "D", "x": 3.25, "y": 1}, {"label": "F", "x": 4.25, "y": 1}, {"label": "G", "x": 5.25, "y": 1}, {"label": "H", "x": 6.25, "y": 1}, {"label": "J", "x": 7.25, "y": 1}, {"label": "K", "x": 8.25, "y": 1}, {"label": "L", "x": 9.25, "y": 1}, {"label": "Enter", "x": 10.25, "y": 1, "w":1.75}, {"label": "M3", "x": 12.25, "y": 1}, {"label": "M4", "x": 13.25, "y": 1},
{"label": "Shift", "x": 0, "y": 2, "w":1.75}, {"label": "Z", "x": 1.75, "y": 2}, {"label": "X", "x": 2.75, "y": 2}, {"label": "C", "x": 3.75, "y": 2}, {"label": "V", "x": 4.75, "y": 2}, {"label": "B", "x": 5.75, "y": 2}, {"label": "N", "x": 6.75, "y": 2}, {"label": "M", "x": 7.75, "y": 2}, {"label": ",", "x": 8.75, "y": 2}, {"label": ".", "x": 9.75, "y": 2}, {"label": "Fn", "x": 10.75, "y": 2, "w":1.25}, {"label": "Up", "x": 12.25, "y": 2.25},
{"label": "Alt", "x": 1, "y": 3}, {"label": "OS", "x": 2, "y": 3, "w": 1.5}, {"label": "", "x": 3.5, "y": 3, "w": 2.75}, {"label": "", "x": 6.25, "y": 3, "w": 2.25}, {"label": "Os", "x": 8.5, "y": 3, "w": 1.5}, {"label": "Alt", "x": 10, "y": 3}, {"label": "Left", "x": 11.25, "y": 3.25}, {"label": "Down", "x": 12.25, "y": 3.25}, {"label": "Right", "x": 13.25, "y": 3.25}
]
}
}
}

View File

@ -0,0 +1,47 @@
/* Copyright 2021 jfescobar18
*
* 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( /* 0: qwerty */
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MPRV, KC_MNXT,
CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_MUTE, KC_MPLY,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP, KC_BSPC,
KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* 1: Symbols */
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS, KC_TRNS,
MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_BSLS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, KC_EQL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT( /* 2: Fn */
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT( /*3: Empty */
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

View File

@ -0,0 +1,47 @@
/* Copyright 2021 Francisco Escobar
*
* 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( /* 0: qwerty */
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MPRV, KC_MNXT,
CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_MUTE, KC_MPLY,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP, KC_BSPC,
KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* 1: Symbols */
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS, KC_TRNS,
MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_BSLS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, KC_EQL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT( /* 2: Fn */
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT( /*3: Empty */
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

View File

@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

View File

@ -0,0 +1,17 @@
/* Copyright 2021 jfescobar18
*
* 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 "miniashen40.h"

View File

@ -0,0 +1,42 @@
/* Copyright 2021 jfescobar18
*
* 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 XXX KC_NO
/* This is 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( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
K30, K31, K33, K36, K38, K39, K3A, K3B, K3C \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
{ K30, K31, XXX, K33, XXX, XXX, K36, XXX, K38, K39, K3A, K3B, K3C } \
}

View File

@ -0,0 +1,40 @@
# Mini Ashen 40
![Mini Ashen 40](https://i.imgur.com/0k3gFZCh.jpeg)
![Mini Ashen 40](https://i.imgur.com/B1w8qwPh.jpeg)
![Mini Ashen 40](https://i.imgur.com/LqxXW0Rh.jpeg)
A 40% keyboard with some extras
- Arrows
- Mini macro cluster
- Full assembly with only through hole components
* Keyboard Maintainer: [jfescobar18](https://github.com/jfescobar18)
* Hardware Supported: Mini Ashen 40 PCB and Case
* Hardware Availability: [MechanicKeys](https://www.facebook.com/MechanicKeys-104963764775280)
Make example for this keyboard (after setting up your build environment):
make mechanickeys/miniashen40:default
Flashing example for this keyboard:
make mechanickeys/miniashen40: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**:
1. Press and hold `BOOT` switch
2. Tap `RESET` switch
3. Release `BOOT` switch
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
## Flash bootloader
* [Follow this instructions](https://github.com/jfescobar18/USBaspLoader)

View File

@ -0,0 +1,21 @@
# MCU name
MCU = atmega328p
# Bootloader selection
BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

View File

@ -0,0 +1,79 @@
/*
Copyright 2021 MTBKeys
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 VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0001
#define DEVICE_VER 0x0001
#define MANUFACTURER MTBKeys
#define PRODUCT honeyboard60
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/* key matrix pinout */
#define MATRIX_ROW_PINS { D6, D7, B4, B5, D5 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, B7, B6, F7, C6, C7, F6, F4, F1, F0, F5, E6 }
#define UNUSED_PINS
/* diode direction: COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
/* Pin WS2812 RGB LEDs are connected to */
#define RGB_DI_PIN D4
#ifdef RGB_DI_PIN
# define RGBLED_NUM 16
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
# define RGBLIGHT_SLEEP /* Turn RGB light off when the host goes to sleep */
# define RGBLIGHT_EFFECT_ALTERNATING
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_CHRISTMAS
# define RGBLIGHT_EFFECT_KNIGHT
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
# define RGBLIGHT_EFFECT_RGB_TEST
# define RGBLIGHT_EFFECT_SNAKE
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
# define RGBLIGHT_EFFECT_TWINKLE
# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL /* Set default RGB */
#endif /* RGB_DI_PIN */
/* 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
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0

View File

@ -0,0 +1,17 @@
/* Copyright 2021 MTBKeys
*
* 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 "hotswap.h"

View File

@ -0,0 +1,33 @@
/* Copyright 2021 MTBKeys
*
* 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( \
k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, ke0, \
k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1, \
k02, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, \
k03, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kd3, \
k04, k14, k24, k64, ka4, kb4, kd4, ke4 \
) { \
{ k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, KC_NO, ke0 }, \
{ KC_NO, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1 }, \
{ k02, KC_NO, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, KC_NO }, \
{ k03, KC_NO, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, KC_NO, kd3, KC_NO }, \
{ k04, k14, k24, KC_NO, KC_NO, KC_NO, k64, KC_NO, KC_NO, KC_NO, ka4, kb4, kd4, KC_NO, ke4 } \
}

View File

@ -0,0 +1,72 @@
{
"keyboard_name": "MTB60",
"url": "mtbkeys.com",
"maintainer": "MTBKeys",
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "Esc" , "x": 0, "y": 0 },
{"label": "!" , "x": 1, "y": 0 },
{"label": "@" , "x": 2, "y": 0 },
{"label": "#" , "x": 3, "y": 0 },
{"label": "$" , "x": 4, "y": 0 },
{"label": "%" , "x": 5, "y": 0 },
{"label": "^" , "x": 6, "y": 0 },
{"label": "&" , "x": 7, "y": 0 },
{"label": "*" , "x": 8, "y": 0 },
{"label": "(" , "x": 9, "y": 0 },
{"label": ")" , "x": 10, "y": 0 },
{"label": "_" , "x": 11, "y": 0 },
{"label": "+" , "x": 12, "y": 0 },
{"label": "Back Space", "x": 13, "y": 0, "w": 2},
{"label": "Tab", "x": 0 , "y": 1, "w": 1.5},
{"label": "Q" , "x": 1.5, "y": 1 },
{"label": "W" , "x": 2.5, "y": 1 },
{"label": "E" , "x": 3.5, "y": 1 },
{"label": "R" , "x": 4.5, "y": 1 },
{"label": "T" , "x": 5.5, "y": 1 },
{"label": "Y" , "x": 6.5, "y": 1 },
{"label": "U" , "x": 7.5, "y": 1 },
{"label": "I" , "x": 8.5, "y": 1 },
{"label": "O" , "x": 9.5, "y": 1 },
{"label": "P" , "x": 10.5, "y": 1 },
{"label": "{" , "x": 11.5, "y": 1 },
{"label": "}" , "x": 12.5, "y": 1 },
{"label": "|" , "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "x": 0 , "y": 2, "w": 1.75},
{"label": "A" , "x": 1.75, "y": 2 },
{"label": "S" , "x": 2.75, "y": 2 },
{"label": "D" , "x": 3.75, "y": 2 },
{"label": "F" , "x": 4.75, "y": 2 },
{"label": "G" , "x": 5.75, "y": 2 },
{"label": "H" , "x": 6.75, "y": 2 },
{"label": "J" , "x": 7.75, "y": 2 },
{"label": "K" , "x": 8.75, "y": 2 },
{"label": "L" , "x": 9.75, "y": 2 },
{"label": ":" , "x": 10.75, "y": 2 },
{"label": "\"" , "x": 11.75, "y": 2 },
{"label": "Enter" , "x": 12.75, "y": 2, "w": 2.25},
{"label": "Left Shift" , "x": 0 , "y": 3, "w": 2.25},
{"label": "Z" , "x": 2.25, "y": 3 },
{"label": "X" , "x": 3.25, "y": 3 },
{"label": "C" , "x": 4.25, "y": 3 },
{"label": "V" , "x": 5.25, "y": 3 },
{"label": "B" , "x": 6.25, "y": 3 },
{"label": "N" , "x": 7.25, "y": 3 },
{"label": "M" , "x": 8.25, "y": 3 },
{"label": "<" , "x": 9.25, "y": 3 },
{"label": ">" , "x": 10.25, "y": 3 },
{"label": "?" , "x": 11.25, "y": 3 },
{"label": "Right Shift", "x": 12.25, "y": 3, "w": 2.75},
{"label": "Left Ctrl" , "x": 0 , "y": 4, "w": 1.25},
{"label": "GUI" , "x": 1.25, "y": 4, "w": 1.25},
{"label": "Left Alt" , "x": 2.5 , "y": 4, "w": 1.25},
{"label": "Space" , "x": 3.75, "y": 4, "w": 6.25},
{"label": "Right Ctrl", "x": 10 , "y": 4, "w": 1.25},
{"label": "GUI" , "x": 11.25, "y": 4, "w": 1.25},
{"label": "MO(1)" , "x": 12.5 , "y": 4, "w": 1.25},
{"label": "Right Ctrl", "x": 13.75, "y": 4, "w": 1.25}
]
}
}
}

View File

@ -0,0 +1,39 @@
/* Copyright 2021 MTBKeys
*
* 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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE, ///< Default Layer
_FN ///< Function Layer
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL
),
[_FN] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_TOG
)
};

View File

@ -0,0 +1,26 @@
# MTB60 (Hotswap Edition)
## Details
* Keyboard Maintainer: [MTBKeys](https://mtbkeys.com/)
* Hardware Supported: MTB60 PCB (Hotswap edition)
* Hardware Availability: [HB60 on MTBKeys Website](https://mtbkeys.com/)
## Building Firmware
Make example for this keyboard (after setting up your build environment):
make mtbkeys/mtb60/hotswap:default
Flashing example for this keyboard:
make mtbkeys/mtb60/hotswap:default:flash
## Bootloader
Enter the bootloader in 2 ways:
1. **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
2. **Physical reset button**: Briefly press the button on the back of the PCB
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).

View File

@ -0,0 +1,21 @@
# 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 = 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

View File

@ -0,0 +1,79 @@
/*
Copyright 2021 MTBKeys
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 VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER MTBKeys
#define PRODUCT MTB60
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/* key matrix pinout */
#define MATRIX_ROW_PINS { D0, D1, F4, F1, D2 }
#define MATRIX_COL_PINS { E6, F0, F5, F6, F7, D5, D3, C7, C6, B6, B5, B4, D7, D6, D4 }
#define UNUSED_PINS
/* diode direction: COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
/* Pin WS2812 RGB LEDs are connected to */
#define RGB_DI_PIN B0
#ifdef RGB_DI_PIN
# define RGBLED_NUM 16
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
# define RGBLIGHT_SLEEP /* Turn RGB light off when the host goes to sleep */
# define RGBLIGHT_EFFECT_ALTERNATING
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_CHRISTMAS
# define RGBLIGHT_EFFECT_KNIGHT
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
# define RGBLIGHT_EFFECT_RGB_TEST
# define RGBLIGHT_EFFECT_SNAKE
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
# define RGBLIGHT_EFFECT_TWINKLE
# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL /* Set default RGB */
#endif /* RGB_DI_PIN */
/* 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
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0

View File

@ -0,0 +1,75 @@
{
"keyboard_name": "MTB60",
"url": "mtbkeys.com",
"maintainer": "MTBKeys",
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "Esc" , "x": 0, "y": 0},
{"label": "!" , "x": 1, "y": 0},
{"label": "@" , "x": 2, "y": 0},
{"label": "#" , "x": 3, "y": 0},
{"label": "$" , "x": 4, "y": 0},
{"label": "%" , "x": 5, "y": 0},
{"label": "^" , "x": 6, "y": 0},
{"label": "&" , "x": 7, "y": 0},
{"label": "*" , "x": 8, "y": 0},
{"label": "(" , "x": 9, "y": 0},
{"label": ")" , "x": 10, "y": 0},
{"label": "_" , "x": 11, "y": 0},
{"label": "+" , "x": 12, "y": 0},
{"label": "Back Space", "x": 13, "y": 0},
{"label": "Delete" , "x": 14, "y": 0},
{"label": "Tab", "x": 0 , "y": 1, "w": 1.5},
{"label": "Q" , "x": 1.5, "y": 1 },
{"label": "W" , "x": 2.5, "y": 1 },
{"label": "E" , "x": 3.5, "y": 1 },
{"label": "R" , "x": 4.5, "y": 1 },
{"label": "T" , "x": 5.5, "y": 1 },
{"label": "Y" , "x": 6.5, "y": 1 },
{"label": "U" , "x": 7.5, "y": 1 },
{"label": "I" , "x": 8.5, "y": 1 },
{"label": "O" , "x": 9.5, "y": 1 },
{"label": "P" , "x": 10.5, "y": 1 },
{"label": "{" , "x": 11.5, "y": 1 },
{"label": "}" , "x": 12.5, "y": 1 },
{"label": "|" , "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "x": 0 , "y": 2, "w": 1.75},
{"label": "A" , "x": 1.75, "y": 2 },
{"label": "S" , "x": 2.75, "y": 2 },
{"label": "D" , "x": 3.75, "y": 2 },
{"label": "F" , "x": 4.75, "y": 2 },
{"label": "G" , "x": 5.75, "y": 2 },
{"label": "H" , "x": 6.75, "y": 2 },
{"label": "J" , "x": 7.75, "y": 2 },
{"label": "K" , "x": 8.75, "y": 2 },
{"label": "L" , "x": 9.75, "y": 2 },
{"label": ":" , "x": 10.75, "y": 2 },
{"label": "\"" , "x": 11.75, "y": 2 },
{"label": "Enter" , "x": 12.75, "y": 2, "w": 2.25},
{"label": "Left Shift" , "x": 0 , "y": 3, "w": 2.25},
{"label": "Z" , "x": 2.25, "y": 3 },
{"label": "X" , "x": 3.25, "y": 3 },
{"label": "C" , "x": 4.25, "y": 3 },
{"label": "V" , "x": 5.25, "y": 3 },
{"label": "B" , "x": 6.25, "y": 3 },
{"label": "N" , "x": 7.25, "y": 3 },
{"label": "M" , "x": 8.25, "y": 3 },
{"label": "<" , "x": 9.25, "y": 3 },
{"label": ">" , "x": 10.25, "y": 3 },
{"label": "?" , "x": 11.25, "y": 3 },
{"label": "Right Shift", "x": 12.25, "y": 3, "w": 2.75},
{"label": "Left Ctrl" , "x": 0 , "y": 4, "w": 1.25},
{"label": "GUI" , "x": 1.25, "y": 4, "w": 1.25},
{"label": "Left Alt" , "x": 2.5 , "y": 4, "w": 1.25},
{"label": "Space" , "x": 3.75, "y": 4, "w": 2.25},
{"label": "Space" , "x": 6 , "y": 4, "w": 1.25},
{"label": "Space" , "x": 7.25, "y": 4, "w": 2.75},
{"label": "Right Ctrl", "x": 10 , "y": 4, "w": 1.25},
{"label": "GUI" , "x": 11.25, "y": 4, "w": 1.25},
{"label": "MO(1)" , "x": 12.5 , "y": 4, "w": 1.25},
{"label": "Right Ctrl", "x": 13.75, "y": 4, "w": 1.25}
]
}
}
}

View File

@ -0,0 +1,40 @@
/* Copyright 2021 MTBKeys
*
* 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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RGUI, KC_RCTL
),
[_FN] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@ -0,0 +1,26 @@
# MTB60 (Solder Edition)
## Details
* Keyboard Maintainer: [MTBKeys](https://mtbkeys.com/)
* Hardware Supported: MTB60 PCB (Solder edition)
* Hardware Availability: [HB60 on MTBKeys Website](https://mtbkeys.com/)
## Building Firmware
Make example for this keyboard (after setting up your build environment):
make mtbkeys/mtb60/solder:default
Flashing example for this keyboard:
make mtbkeys/mtb60/solder:default:flash
## Bootloader
Enter the bootloader in 2 ways:
1. **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
2. **Physical reset button**: Briefly press the button on the back of the PCB
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).

View File

@ -0,0 +1,21 @@
# 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 = 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

View File

@ -0,0 +1,17 @@
/* Copyright 2021 MTBKeys
*
* 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 "solder.h"

View File

@ -0,0 +1,33 @@
/* Copyright 2021 MTBKeys
*
* 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( \
k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, ke0, \
k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1, \
k02, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, \
k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, kd3, ke3, \
k04, k14, k34, k44, k64, k84, ka4, kb4, kc4, kd4, ke4 \
) { \
{ k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, ke0 }, \
{ KC_NO, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1 }, \
{ k02, KC_NO, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, KC_NO }, \
{ k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, kd3, ke3 }, \
{ k04, k14, KC_NO, k34, k44, KC_NO, k64, KC_NO, k84, KC_NO, ka4, kb4, kc4, kd4, ke4 } \
}

View File

@ -4,23 +4,65 @@ from subprocess import CalledProcessError, DEVNULL
from milc import cli from milc import cli
from qmk.path import normpath
py_file_suffixes = ('py',)
py_dirs = ['lib/python']
def yapf_run(files):
edit = '--diff' if cli.args.dry_run else '--in-place'
yapf_cmd = ['yapf', '-vv', '--recursive', edit, *files]
try:
cli.run(yapf_cmd, check=True, capture_output=False, stdin=DEVNULL)
cli.log.info('Successfully formatted the python code.')
except CalledProcessError:
cli.log.error(f'Python code in {",".join(py_dirs)} incorrectly formatted!')
return False
def filter_files(files):
"""Yield only files to be formatted and skip the rest
"""
for file in files:
if file and file.name.split('.')[-1] in py_file_suffixes:
yield file
else:
cli.log.debug('Skipping file %s', file)
@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually format.") @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually format.")
@cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.')
@cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all files.')
@cli.argument('files', nargs='*', arg_only=True, type=normpath, help='Filename(s) to format.')
@cli.subcommand("Format python code according to QMK's style.", hidden=False if cli.config.user.developer else True) @cli.subcommand("Format python code according to QMK's style.", hidden=False if cli.config.user.developer else True)
def format_python(cli): def format_python(cli):
"""Format python code according to QMK's style. """Format python code according to QMK's style.
""" """
edit = '--diff' if cli.args.dry_run else '--in-place' # Find the list of files to format
yapf_cmd = ['yapf', '-vv', '--recursive', edit, 'lib/python'] if cli.args.files:
try: files = list(filter_files(cli.args.files))
cli.run(yapf_cmd, check=True, capture_output=False, stdin=DEVNULL)
cli.log.info('Python code in `lib/python` is correctly formatted.')
return True
except CalledProcessError: if not files:
if cli.args.dry_run: cli.log.error('No Python files in filelist: %s', ', '.join(map(str, cli.args.files)))
cli.log.error('Python code in `lib/python` is incorrectly formatted!') exit(0)
else:
cli.log.error('Error formatting python code!')
return False if cli.args.all_files:
cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files)))
elif cli.args.all_files:
files = py_dirs
else:
git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *py_dirs]
git_diff = cli.run(git_diff_cmd, stdin=DEVNULL)
files = list(filter(None, git_diff.stdout.split('\n')))
# Sanity check
if not files:
cli.log.error('No changed files detected. Use "qmk format-python -a" to format all files')
return False
return yapf_run(files)

View File

@ -13,5 +13,10 @@ from qmk.keyboard import keyboard_completer, keyboard_folder
def list_keymaps(cli): def list_keymaps(cli):
"""List the keymaps for a specific keyboard """List the keymaps for a specific keyboard
""" """
if not cli.config.list_keymaps.keyboard:
cli.log.error('Missing required arguments: --keyboard')
cli.subcommands['list-keymaps'].print_help()
return False
for name in qmk.keymap.list_keymaps(cli.config.list_keymaps.keyboard): for name in qmk.keymap.list_keymaps(cli.config.list_keymaps.keyboard):
print(name) print(name)

View File

@ -13,6 +13,11 @@ from qmk.info import info_json
def list_layouts(cli): def list_layouts(cli):
"""List the layouts for a specific keyboard """List the layouts for a specific keyboard
""" """
if not cli.config.list_layouts.keyboard:
cli.log.error('Missing required arguments: --keyboard')
cli.subcommands['list-layouts'].print_help()
return False
info_data = info_json(cli.config.list_layouts.keyboard) info_data = info_json(cli.config.list_layouts.keyboard)
for name in sorted(info_data.get('community_layouts', [])): for name in sorted(info_data.get('community_layouts', [])):
print(name) print(name)

View File

@ -81,9 +81,9 @@ def test_hello():
def test_format_python(): def test_format_python():
result = check_subcommand('format-python', '--dry-run') result = check_subcommand('format-python', '-n', '-a')
check_returncode(result) check_returncode(result)
assert 'Python code in `lib/python` is correctly formatted.' in result.stdout assert 'Successfully formatted the python code.' in result.stdout
def test_list_keyboards(): def test_list_keyboards():