Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3cd1290be | ||
|
|
7d33d1bace | ||
|
|
4b9f5578a0 | ||
|
|
59c8672f5c | ||
|
|
a7920acff5 | ||
|
|
79a87a9c2b | ||
|
|
8d3581a49f | ||
|
|
cd96377312 | ||
|
|
8b98e67643 | ||
|
|
6876263961 | ||
|
|
4caeb64888 | ||
|
|
70540a1f74 | ||
|
|
f0dc206784 | ||
|
|
caca8949de | ||
|
|
0232941b1d | ||
|
|
63445be4e5 | ||
|
|
619885b484 | ||
|
|
6592f83589 | ||
|
|
43d74d7fa5 | ||
|
|
cd981ec56a | ||
|
|
12f308748f | ||
|
|
ac0ba832c7 | ||
|
|
c5ddada32e | ||
|
|
8a950a7116 | ||
|
|
64551a8386 | ||
|
|
ae59a51193 | ||
|
|
5dc7951dc0 | ||
|
|
a866fbf381 | ||
|
|
8af7200085 | ||
|
|
f028dbf179 | ||
|
|
aa2b4a688b | ||
|
|
57475caab0 | ||
|
|
34205f5bb5 | ||
|
|
9f1608a6a2 | ||
|
|
0a056cfd81 | ||
|
|
5c1442766c |
No files matched your search
@@ -254,6 +254,9 @@ enum rgb_matrix_effects {
|
|||||||
RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard
|
RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard
|
||||||
RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue
|
RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue
|
||||||
RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation
|
RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation
|
||||||
|
RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back
|
||||||
|
RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left
|
||||||
|
RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right
|
||||||
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
|
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
|
||||||
RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation
|
RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation
|
||||||
@@ -305,6 +308,9 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|
|||||||
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|
||||||
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|
||||||
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` |
|
||||||
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|
||||||
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|
||||||
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ Install the QMK CLI by running:
|
|||||||
|
|
||||||
### ** Linux/WSL **
|
### ** Linux/WSL **
|
||||||
|
|
||||||
|
?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197).
|
||||||
|
|
||||||
#### Prerequisites
|
#### Prerequisites
|
||||||
|
|
||||||
You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
|
You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define PRODUCT_ID 0xEF6F
|
#define PRODUCT_ID 0xEF6F
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER KPRepublic
|
#define MANUFACTURER KPRepublic
|
||||||
#define PRODUCT bm68rgb
|
#define PRODUCT BM68 RGB
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
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 "cb87.h"
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
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( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \
|
||||||
|
K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \
|
||||||
|
K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, \
|
||||||
|
K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, \
|
||||||
|
K604, K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \
|
||||||
|
K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \
|
||||||
|
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \
|
||||||
|
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \
|
||||||
|
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 }, \
|
||||||
|
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \
|
||||||
|
{ K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \
|
||||||
|
K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \
|
||||||
|
K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, \
|
||||||
|
K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K603, \
|
||||||
|
K604, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \
|
||||||
|
K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \
|
||||||
|
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \
|
||||||
|
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \
|
||||||
|
{ K600, K601, KC_NO, K603, K604, KC_NO, K606, K607, K608, K609 }, \
|
||||||
|
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \
|
||||||
|
{ K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_iso( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \
|
||||||
|
K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \
|
||||||
|
K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K407, K408, K409, \
|
||||||
|
K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, \
|
||||||
|
K604, K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \
|
||||||
|
K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \
|
||||||
|
{ K400, K401, K402, K403, K404, K405, KC_NO, K407, K408, K409 }, \
|
||||||
|
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \
|
||||||
|
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 }, \
|
||||||
|
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \
|
||||||
|
{ K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
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 0x4342 // CB
|
||||||
|
#define PRODUCT_ID 0x8787
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER CherryB Studio
|
||||||
|
#define PRODUCT CB87
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 9
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
* 0 1 2 3 4 5 6 7 8 9
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 }
|
||||||
|
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 }
|
||||||
|
//#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
#define BACKLIGHT_PIN B6
|
||||||
|
#ifdef BACKLIGHT_PIN
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define LED_CAPS_LOCK_PIN F0
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define RGB_DI_PIN E6
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 22 /* 16 Bottom 6 top*/
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,295 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "CB87",
|
||||||
|
"url": "https://discord.gg/qVwv3gcq83",
|
||||||
|
"maintainer": "duongaanh",
|
||||||
|
"width": 18.25,
|
||||||
|
"height": 6.5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"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.5, "y":0},
|
||||||
|
{"label":"F6", "x":7.5, "y":0},
|
||||||
|
{"label":"F7", "x":8.5, "y":0},
|
||||||
|
{"label":"F8", "x":9.5, "y":0},
|
||||||
|
{"label":"F9", "x":11, "y":0},
|
||||||
|
{"label":"F10", "x":12, "y":0},
|
||||||
|
{"label":"F11", "x":13, "y":0},
|
||||||
|
{"label":"F12", "x":14, "y":0},
|
||||||
|
{"label":"PrtSc", "x":15.25, "y":0},
|
||||||
|
{"label":"Scroll Lock", "x":16.25, "y":0},
|
||||||
|
{"label":"Pause", "x":17.25, "y":0},
|
||||||
|
{"label":"~", "x":0, "y":1.5},
|
||||||
|
{"label":"1", "x":1, "y":1.5},
|
||||||
|
{"label":"2", "x":2, "y":1.5},
|
||||||
|
{"label":"3", "x":3, "y":1.5},
|
||||||
|
{"label":"4", "x":4, "y":1.5},
|
||||||
|
{"label":"5", "x":5, "y":1.5},
|
||||||
|
{"label":"6", "x":6, "y":1.5},
|
||||||
|
{"label":"7", "x":7, "y":1.5},
|
||||||
|
{"label":"8", "x":8, "y":1.5},
|
||||||
|
{"label":"9", "x":9, "y":1.5},
|
||||||
|
{"label":"0", "x":10, "y":1.5},
|
||||||
|
{"label":"-", "x":11, "y":1.5},
|
||||||
|
{"label":"=", "x":12, "y":1.5},
|
||||||
|
{"label":"Backspace", "x":13, "y":1.5, "w":2},
|
||||||
|
{"label":"Insert", "x":15.25, "y":1.5},
|
||||||
|
{"label":"Home", "x":16.25, "y":1.5},
|
||||||
|
{"label":"PgUp", "x":17.25, "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":6.5, "y":2.5},
|
||||||
|
{"label":"U", "x":7.5, "y":2.5},
|
||||||
|
{"label":"I", "x":8.5, "y":2.5},
|
||||||
|
{"label":"O", "x":9.5, "y":2.5},
|
||||||
|
{"label":"P", "x":10.5, "y":2.5},
|
||||||
|
{"label":"[", "x":11.5, "y":2.5},
|
||||||
|
{"label":"]", "x":12.5, "y":2.5},
|
||||||
|
{"label":"\\", "x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"label":"Delete", "x":15.25, "y":2.5},
|
||||||
|
{"label":"End", "x":16.25, "y":2.5},
|
||||||
|
{"label":"PgDn", "x":17.25, "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":6.75, "y":3.5},
|
||||||
|
{"label":"J", "x":7.75, "y":3.5},
|
||||||
|
{"label":"K", "x":8.75, "y":3.5},
|
||||||
|
{"label":"L", "x":9.75, "y":3.5},
|
||||||
|
{"label":";", "x":10.75, "y":3.5},
|
||||||
|
{"label":"'", "x":11.75, "y":3.5},
|
||||||
|
{"label":"ISO", "x":12.75, "y":3.5},
|
||||||
|
{"label":"Enter", "x":13.75, "y":3.5, "w":1.25},
|
||||||
|
{"label":"Shift", "x":0, "y":4.5, "w":1.25},
|
||||||
|
{"label":"ISO", "x":1.25, "y":4.5},
|
||||||
|
{"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":7.25, "y":4.5},
|
||||||
|
{"label":"M", "x":8.25, "y":4.5},
|
||||||
|
{"label":",", "x":9.25, "y":4.5},
|
||||||
|
{"label":".", "x":10.25, "y":4.5},
|
||||||
|
{"label":"/", "x":11.25, "y":4.5},
|
||||||
|
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"label":"Up", "x":16.25, "y":4.5},
|
||||||
|
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":5.5, "w":1.25},
|
||||||
|
{"label":"Win", "x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"label":"App", "x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"label":"Left", "x":15.25, "y":5.5},
|
||||||
|
{"label":"Down", "x":16.25, "y":5.5},
|
||||||
|
{"label":"Right", "x":17.25, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.25, "y":0},
|
||||||
|
{"x":16.25, "y":0},
|
||||||
|
{"x":17.25, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5, "w":2},
|
||||||
|
{"x":15.25, "y":1.5},
|
||||||
|
{"x":16.25, "y":1.5},
|
||||||
|
{"x":17.25, "y":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.25, "y":2.5},
|
||||||
|
{"x":16.25, "y":2.5},
|
||||||
|
{"x":17.25, "y":2.5},
|
||||||
|
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.25, "y":4.5},
|
||||||
|
|
||||||
|
{"x":0, "y":5.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"x":10, "y":5.5, "w":1.25},
|
||||||
|
{"x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"x":15.25, "y":5.5},
|
||||||
|
{"x":16.25, "y":5.5},
|
||||||
|
{"x":17.25, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_iso": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.25, "y":0},
|
||||||
|
{"x":16.25, "y":0},
|
||||||
|
{"x":17.25, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5, "w":2},
|
||||||
|
{"x":15.25, "y":1.5},
|
||||||
|
{"x":16.25, "y":1.5},
|
||||||
|
{"x":17.25, "y":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":15.25, "y":2.5},
|
||||||
|
{"x":16.25, "y":2.5},
|
||||||
|
{"x":17.25, "y":2.5},
|
||||||
|
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5},
|
||||||
|
{"x":13.75, "y":2.5, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":0, "y":4.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":4.5},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.25, "y":4.5},
|
||||||
|
|
||||||
|
{"x":0, "y":5.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"x":10, "y":5.5, "w":1.25},
|
||||||
|
{"x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"x":15.25, "y":5.5},
|
||||||
|
{"x":16.25, "y":5.5},
|
||||||
|
{"x":17.25, "y":5.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
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_all(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||||
|
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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for CB87
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Tybera
|
||||||
|
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_all(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||||
|
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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
LTO_ENABLE = yes
|
||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# CherryB Studio CB87
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A TKL PCB for CherryB Studio Freyr and replacement for some TKL keyboards.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: duongaanh
|
||||||
|
* Hardware Supported: CB87, atmega32u4
|
||||||
|
* Hardware Availability: [CherryB Studio](https://www.reddit.com/r/mechmarket/comments/kkgs6p/gb_freyr_tkl_cb_edition_holiday_preorder/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make cherrybstudio/cb87:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make cherrybstudio/cb87:default:flash
|
||||||
|
|
||||||
|
## Accessing Bootloader Mode
|
||||||
|
|
||||||
|
To access Bootloader Mode, do one of the following:
|
||||||
|
|
||||||
|
* Tap the Reset switch mounted on the top side of the PCB to the left of the spacebar
|
||||||
|
* Hold the top left key of the keyboard while connecting the USB cable
|
||||||
|
|
||||||
|
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).
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
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 = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = tkl_ansi tkl_iso
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 dsanchezseco
|
||||||
|
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 {
|
||||||
|
DVO, // dvorak
|
||||||
|
QWE, // qwerty
|
||||||
|
SYS, // system
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* dvorak */
|
||||||
|
[DVO] = LAYOUT(
|
||||||
|
KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_PSCR, KC_PAUS, MO(SYS),
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||||
|
|
||||||
|
LCTL(KC_A), LCTL(KC_Z), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_BSPC, KC_PEQL, KC_PSLS, KC_PAST,
|
||||||
|
LCTL(KC_B), LCTL(KC_X), KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||||
|
LCTL(KC_D), LCTL(KC_C), KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_BSLS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
LCTL(KC_F), LCTL(KC_V), KC_LSFT, KC_BSLS, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, XXXXXXX, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
|
LCTL(KC_G), LCTL(KC_W), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LGUI, XXXXXXX, KC_P0, KC_PDOT, XXXXXXX
|
||||||
|
),
|
||||||
|
/* qwerty */
|
||||||
|
[QWE] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, XXXXXXX, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX
|
||||||
|
),
|
||||||
|
|
||||||
|
/* system */
|
||||||
|
[SYS] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, KC_NLCK, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, TO(DVO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, TO(QWE), _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
MOUSEKEY_ENABLE = no
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
/* Copyright 2020-2021 adamkraus6
|
||||||
|
*
|
||||||
|
* 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(
|
||||||
|
KC_7, KC_8, KC_9, TO(0),
|
||||||
|
KC_4, KC_5, KC_6, TO(1),
|
||||||
|
KC_1, KC_2, KC_3, TO(2),
|
||||||
|
KC_0, KC_BSPC, KC_ENTER
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT(
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT(
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) { /* First encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_hue(); //Cycle through the RGB hue
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_hue();
|
||||||
|
}
|
||||||
|
} else if (index == 1) { /* Second encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_sat();
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_sat();
|
||||||
|
}
|
||||||
|
} else if (index == 2) { /* Third encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_val(); //Change brightness on the RGB LEDs
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -708,3 +708,30 @@
|
|||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
|
||||||
{ k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \
|
{ k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* LAYOUT_64_ansi
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
|
||||||
|
* │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
|
||||||
|
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤
|
||||||
|
* │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
|
||||||
|
* ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤
|
||||||
|
* │40 │41 │43 │46 │4a │4b │4c │4d │4e │
|
||||||
|
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
#define LAYOUT_64_ansi( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
|
||||||
|
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
|
||||||
|
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
|
||||||
|
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
|
||||||
|
k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \
|
||||||
|
) { \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, KC_NO }, \
|
||||||
|
{ k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
|
||||||
|
{ k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \
|
||||||
|
{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
|
||||||
|
{ k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \
|
||||||
|
}
|
||||||
@@ -1873,6 +1873,74 @@
|
|||||||
{"x": 13, "y": 4},
|
{"x": 13, "y": 4},
|
||||||
{"x": 14, "y": 4}
|
{"x": 14, "y": 4}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_64_ansi": {
|
||||||
|
"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, "w":2},
|
||||||
|
{"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":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, "w":2.25},
|
||||||
|
{"x":0, "y":3, "w":2},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3},
|
||||||
|
{"x":8, "y":3},
|
||||||
|
{"x":9, "y":3},
|
||||||
|
{"x":10, "y":3},
|
||||||
|
{"x":11, "y":3},
|
||||||
|
{"x":12, "y":3},
|
||||||
|
{"x":13, "y":3},
|
||||||
|
{"x":14, "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":6.25},
|
||||||
|
{"x":10, "y":4},
|
||||||
|
{"x":11, "y":4},
|
||||||
|
{"x":12, "y":4},
|
||||||
|
{"x":13, "y":4},
|
||||||
|
{"x":14, "y":4}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
LAYOUT_64_ansi(
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||||
|
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_UP, MO(1),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
LAYOUT_64_ansi(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||||
|
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||||
|
};
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
|
||||||
|
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 0x6463
|
||||||
|
#define PRODUCT_ID 0x0000
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER caryworks
|
||||||
|
#define PRODUCT epoch80
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#define MATRIX_COLS 17
|
||||||
|
|
||||||
|
/* Keyboard Matrix Assignments */
|
||||||
|
#define MATRIX_ROW_PINS { D1, D0, B3, B0, B2, B1 }
|
||||||
|
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Indicator LEDs */
|
||||||
|
#define LED_CAPS_LOCK_PIN E6
|
||||||
|
#define LED_SCROLL_LOCK_PIN B7
|
||||||
|
#define LED_PIN_ON_STATE 0
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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 "epoch80.h"
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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 ____ 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_all( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, k415, \
|
||||||
|
k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \
|
||||||
|
{ k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, ____, k415, ____, }, \
|
||||||
|
{ k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \
|
||||||
|
{ k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi_splitbs( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \
|
||||||
|
{ k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi_tsangan( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k501, k502, k506, k511, k512, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \
|
||||||
|
{ k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, k512, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi_tsangan_splitbs( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k501, k502, k506, k511, k512, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \
|
||||||
|
{ k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, k512, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi_wkl( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k502, k506, k511, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \
|
||||||
|
{ k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, ____, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi_wkl_splitbs( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k502, k506, k511, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \
|
||||||
|
{ k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, ____, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_iso( \
|
||||||
|
k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, k215, k216, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k213, k313, \
|
||||||
|
k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \
|
||||||
|
k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \
|
||||||
|
) { \
|
||||||
|
{ k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \
|
||||||
|
{ k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \
|
||||||
|
{ k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,736 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "epoch80",
|
||||||
|
"url": "https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard",
|
||||||
|
"maintainer": "kb-elmo",
|
||||||
|
"width": 18.5,
|
||||||
|
"height": 6.5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5},
|
||||||
|
{"x":14, "y":1.5},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":4.5},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":1.75},
|
||||||
|
{"x":14, "y":4.5},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"x":10, "y":5.5, "w":1.25},
|
||||||
|
{"x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5, "w":2},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"x":10, "y":5.5, "w":1.25},
|
||||||
|
{"x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi_splitbs": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5},
|
||||||
|
{"x":14, "y":1.5},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"x":10, "y":5.5, "w":1.25},
|
||||||
|
{"x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi_tsangan": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5, "w":2},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":5.5},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":4, "y":5.5, "w":7},
|
||||||
|
{"x":11, "y":5.5, "w":1.5},
|
||||||
|
{"x":12.5, "y":5.5},
|
||||||
|
{"x":13.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi_tsangan_splitbs": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5},
|
||||||
|
{"x":14, "y":1.5},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":5.5},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":4, "y":5.5, "w":7},
|
||||||
|
{"x":11, "y":5.5, "w":1.5},
|
||||||
|
{"x":12.5, "y":5.5},
|
||||||
|
{"x":13.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi_wkl": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5, "w":2},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.5},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":4, "y":5.5, "w":7},
|
||||||
|
{"x":11, "y":5.5, "w":1.5},
|
||||||
|
{"x":13.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_ansi_wkl_splitbs": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5},
|
||||||
|
{"x":14, "y":1.5},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"x":0, "y":4.5, "w":2.25},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.5},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":4, "y":5.5, "w":7},
|
||||||
|
{"x":11, "y":5.5, "w":1.5},
|
||||||
|
{"x":13.5, "y":5.5, "w":1.5},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_iso": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6.5, "y":0},
|
||||||
|
{"x":7.5, "y":0},
|
||||||
|
{"x":8.5, "y":0},
|
||||||
|
{"x":9.5, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15.5, "y":0},
|
||||||
|
{"x":16.5, "y":0},
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":1.5},
|
||||||
|
{"x":2, "y":1.5},
|
||||||
|
{"x":3, "y":1.5},
|
||||||
|
{"x":4, "y":1.5},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":6, "y":1.5},
|
||||||
|
{"x":7, "y":1.5},
|
||||||
|
{"x":8, "y":1.5},
|
||||||
|
{"x":9, "y":1.5},
|
||||||
|
{"x":10, "y":1.5},
|
||||||
|
{"x":11, "y":1.5},
|
||||||
|
{"x":12, "y":1.5},
|
||||||
|
{"x":13, "y":1.5, "w":2},
|
||||||
|
{"x":15.5, "y":1.5},
|
||||||
|
{"x":16.5, "y":1.5},
|
||||||
|
{"x":17.5, "y":1.5},
|
||||||
|
{"x":0, "y":2.5, "w":1.5},
|
||||||
|
{"x":1.5, "y":2.5},
|
||||||
|
{"x":2.5, "y":2.5},
|
||||||
|
{"x":3.5, "y":2.5},
|
||||||
|
{"x":4.5, "y":2.5},
|
||||||
|
{"x":5.5, "y":2.5},
|
||||||
|
{"x":6.5, "y":2.5},
|
||||||
|
{"x":7.5, "y":2.5},
|
||||||
|
{"x":8.5, "y":2.5},
|
||||||
|
{"x":9.5, "y":2.5},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.5},
|
||||||
|
{"x":12.5, "y":2.5},
|
||||||
|
{"x":13.75, "y":2.5, "w":1.25, "h":2},
|
||||||
|
{"x":15.5, "y":2.5},
|
||||||
|
{"x":16.5, "y":2.5},
|
||||||
|
{"x":17.5, "y":2.5},
|
||||||
|
{"x":0, "y":3.5, "w":1.75},
|
||||||
|
{"x":1.75, "y":3.5},
|
||||||
|
{"x":2.75, "y":3.5},
|
||||||
|
{"x":3.75, "y":3.5},
|
||||||
|
{"x":4.75, "y":3.5},
|
||||||
|
{"x":5.75, "y":3.5},
|
||||||
|
{"x":6.75, "y":3.5},
|
||||||
|
{"x":7.75, "y":3.5},
|
||||||
|
{"x":8.75, "y":3.5},
|
||||||
|
{"x":9.75, "y":3.5},
|
||||||
|
{"x":10.75, "y":3.5},
|
||||||
|
{"x":11.75, "y":3.5},
|
||||||
|
{"x":12.75, "y":3.5},
|
||||||
|
{"x":0, "y":4.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":4.5},
|
||||||
|
{"x":2.25, "y":4.5},
|
||||||
|
{"x":3.25, "y":4.5},
|
||||||
|
{"x":4.25, "y":4.5},
|
||||||
|
{"x":5.25, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.5},
|
||||||
|
{"x":7.25, "y":4.5},
|
||||||
|
{"x":8.25, "y":4.5},
|
||||||
|
{"x":9.25, "y":4.5},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.5},
|
||||||
|
{"x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"x":16.5, "y":4.5},
|
||||||
|
{"x":0, "y":5.5, "w":1.25},
|
||||||
|
{"x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"x":10, "y":5.5, "w":1.25},
|
||||||
|
{"x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"x":15.5, "y":5.5},
|
||||||
|
{"x":16.5, "y":5.5},
|
||||||
|
{"x":17.5, "y":5.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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_tkl_ansi(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_tkl_ansi(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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_tkl_iso(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||||
|
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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_tkl_iso(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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_tkl_ansi_tsangan(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_tkl_ansi_tsangan(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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_all(
|
||||||
|
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_DEL, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[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_VOLU,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VOLU,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, 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_VOLU,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/* Copyright 2021 kb-elmo<[email protected]>
|
||||||
|
*
|
||||||
|
* 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_tkl_ansi_wkl(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_tkl_ansi_wkl(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# Epoch 80 / Dolch.CR 80
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Dolch PAC inspired TKL keyboard designed by Cary Works and made by KBDFans.
|
||||||
|
The board was also sold in a zFrontier groupbuy under the name Dolch.CR 80.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo)
|
||||||
|
* Hardware Supported: Epoch 80 / Dolch.CR 80 PCB
|
||||||
|
* Hardware Availability: https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make epoch80:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make epoch80: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).
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# 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
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = tkl_ansi tkl_iso
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 Eye Oh! Designs
|
||||||
|
*
|
||||||
|
* 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 "babyv.h"
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/* Copyright 2020 Eye Oh! Designs
|
||||||
|
*
|
||||||
|
* 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_1u( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k33, k34, k35, k36, k37, k38, k3b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, KC_NO, KC_NO, k33, k34, k35, k36, k37, k38, KC_NO, KC_NO, k3b } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_2u( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k33, k35, k36, k38, k3b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, KC_NO, KC_NO, k33, KC_NO, k35, k36, KC_NO, k38, KC_NO, KC_NO, k3b } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_1u_2u( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k33, k34, k35, k36, k38, k3b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, KC_NO, KC_NO, k33, k34, k35, k36, KC_NO, k38, KC_NO, KC_NO, k3b } \
|
||||||
|
}
|
||||||
|
#define LAYOUT_2u_1u( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k33, k35, k36, k37, k38, k3b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, KC_NO, KC_NO, k33, KC_NO, k35, k36, k37, k38, KC_NO, KC_NO, k3b } \
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Eye Oh! Designs
|
||||||
|
|
||||||
|
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 Eye Oh Designs
|
||||||
|
#define PRODUCT babyv
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 12
|
||||||
|
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B5, D2, D5, D3 }
|
||||||
|
#define MATRIX_COL_PINS { D0, D1, B4, D7, D6, D4, B0, B1, B2, F0, F1, F4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B6
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN B7
|
||||||
|
#define RGBLED_NUM 12
|
||||||
|
#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 /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// /*== all animations enable ==*/
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "babyv",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "eye oh designs",
|
||||||
|
"width": 14.25,
|
||||||
|
"height": 6.14,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_2u": {
|
||||||
|
"layout": [{"label":"Esc", "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":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"label":"Ctl", "x":0, "y":3}, {"label":"Alt", "x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3, "w":2}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}]
|
||||||
|
},
|
||||||
|
"LAYOUT_1u": {
|
||||||
|
"layout": [{"label":"Esc", "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":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"label":"Ctl", "x":0, "y":3}, {"label":"Alt", "x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}]
|
||||||
|
},
|
||||||
|
"LAYOUT_1u2u": {
|
||||||
|
"layout": [{"label":"Esc", "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":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"x":0, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3, "w":2}, {"x":9, "y":3}, {"label":"OS", "x":12, "y":3}]
|
||||||
|
},
|
||||||
|
"LAYOUT_2u1u": {
|
||||||
|
"layout": [{"label":"Esc", "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":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"x":0, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"label":"OS", "x":12, "y":3}]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2020 Eye Oh! Designs
|
||||||
|
*
|
||||||
|
* 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 {
|
||||||
|
|
||||||
|
QWERTY,
|
||||||
|
FUNCTN,
|
||||||
|
NUMBRS,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[QWERTY] = LAYOUT_1u(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, 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, MO(FUNCTN), MO(NUMBRS), KC_SPC, KC_SPC, MO(NUMBRS), MO(FUNCTN), KC_RALT
|
||||||
|
),
|
||||||
|
[FUNCTN] = LAYOUT_1u(
|
||||||
|
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
|
||||||
|
KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
|
||||||
|
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
|
||||||
|
KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[NUMBRS] = LAYOUT_1u(
|
||||||
|
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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
|
||||||
|
KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
|
||||||
|
KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/* Copyright 2020 Eye Oh! Designs
|
||||||
|
*
|
||||||
|
* 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 {
|
||||||
|
QWERTY,
|
||||||
|
FUNCTN,
|
||||||
|
NUMBRS,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[QWERTY] = LAYOUT_1u_2u(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, 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_LALT, MO(FUNCTN), MO(NUMBRS), KC_SPC, MO(FUNCTN), KC_RCTL
|
||||||
|
),
|
||||||
|
[FUNCTN] = LAYOUT_1u_2u(
|
||||||
|
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
|
||||||
|
KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
|
||||||
|
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
|
||||||
|
KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET
|
||||||
|
),
|
||||||
|
[NUMBRS] = LAYOUT_1u_2u(
|
||||||
|
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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
|
||||||
|
KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
|
||||||
|
KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_RCTL
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2020 Eye Oh! Designs
|
||||||
|
*
|
||||||
|
* 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 {
|
||||||
|
|
||||||
|
QWERTY,
|
||||||
|
FUNCTN,
|
||||||
|
NUMBRS,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[QWERTY] = LAYOUT_2u_1u(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, 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, MO(FUNCTN), KC_SPC, MO(NUMBRS), MO(FUNCTN), KC_LGUI, KC_RALT
|
||||||
|
),
|
||||||
|
[FUNCTN] = LAYOUT_2u_1u(
|
||||||
|
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
|
||||||
|
KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
|
||||||
|
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
|
||||||
|
KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS
|
||||||
|
),
|
||||||
|
[NUMBRS] = LAYOUT_2u_1u(
|
||||||
|
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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
|
||||||
|
KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
|
||||||
|
KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/* Copyright 2020 Eye Oh! Designs
|
||||||
|
*
|
||||||
|
* 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 {
|
||||||
|
QWERTY,
|
||||||
|
FUNCT,
|
||||||
|
NUMBRS,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[QWERTY] = LAYOUT_2u(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, 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_LALT, MO(NUMBRS), KC_SPC, MO(FUNCT), KC_LGUI
|
||||||
|
),
|
||||||
|
[FUNCT] = LAYOUT_2u(
|
||||||
|
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
|
||||||
|
KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
|
||||||
|
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
|
||||||
|
KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET
|
||||||
|
),
|
||||||
|
[NUMBRS] = LAYOUT_2u(
|
||||||
|
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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
|
||||||
|
KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
|
||||||
|
KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_LGUI
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# babyV
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
babyV is a 40% ortholinear take on the EM7/Alice layout.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Eye Oh Designs](https://github.com/joedinkle)
|
||||||
|
* Hardware Supported: babyV ver 1.00
|
||||||
|
* Hardware Availability: Groupbuy ran from Nov - Dec 2020
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make eyeohdesigns/babyv:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make eyeohdesigns/babyv: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).
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# 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 = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# eye oh designs
|
||||||
|
|
||||||
|
When I'm not spending time with family, or busy with work, I make keyboards that I hope you'll love.
|
||||||
|
|
||||||
|
Stay up to date with my projects on Instagram: @eyeohdesigns
|
||||||
|
|
||||||
|
I post on reddit and Geekhack as joedinkle
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
@@ -3,8 +3,8 @@
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x4E45 // NE
|
||||||
#define PRODUCT_ID 0x6965
|
#define PRODUCT_ID 0x5244 // RD
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER GON
|
#define MANUFACTURER GON
|
||||||
#define PRODUCT NerD TKL
|
#define PRODUCT NerD TKL
|
||||||
@@ -22,6 +22,9 @@
|
|||||||
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 }
|
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define BOOTMAGIC_LITE_ROW 8
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright 2020 Michael Kaylan
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Keymap layers
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT_tkl(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_LCTL, 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_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, MO(1), KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_tkl(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_tkl(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT_tkl(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
BACKLIGHT_ENABLE = yes
|
||||||
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = LAYOUT( \
|
[_QWERTY] = LAYOUT_ortho_5x12( \
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_DEL, \
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
|
||||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_COLEMAK] = LAYOUT( \
|
[_COLEMAK] = LAYOUT_ortho_5x12( \
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
|
||||||
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
|
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
|
||||||
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_DVORAK] = LAYOUT( \
|
[_DVORAK] = LAYOUT_ortho_5x12( \
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
|
||||||
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
|
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
|
||||||
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_LOWER] = LAYOUT( \
|
[_LOWER] = LAYOUT_ortho_5x12( \
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
|
||||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
|
||||||
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = LAYOUT( \
|
[_RAISE] = LAYOUT_ortho_5x12( \
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
|
||||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
@@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | |
|
* | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_ADJUST] = LAYOUT( \
|
[_ADJUST] = LAYOUT_ortho_5x12( \
|
||||||
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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
|
||||||
_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
|
_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
|
||||||
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
|
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define LAYOUT_ortho_5x12( \
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
@@ -32,5 +32,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
|
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_ortho_5x12 LAYOUT
|
|
||||||
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x4B42
|
||||||
#define PRODUCT_ID 0x0000
|
#define PRODUCT_ID 0x6065
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER KBDFans
|
#define MANUFACTURER KBDFans
|
||||||
#define PRODUCT KBD67 Hotswap
|
#define PRODUCT KBD67 Hotswap
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2021 MechMerlin
|
||||||
|
*
|
||||||
|
* 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(
|
||||||
|
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_BSLS, KC_DEL, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_TRNS, 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_TRNS, KC_TRNS, KC_DEL,
|
||||||
|
RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, 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),
|
||||||
|
|
||||||
|
[2] = 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),
|
||||||
|
|
||||||
|
[3] = 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),
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -4,22 +4,8 @@
|
|||||||
#define _FN1 1
|
#define _FN1 1
|
||||||
#define _FN2 2
|
#define _FN2 2
|
||||||
|
|
||||||
// Fillers to make layering more clear
|
|
||||||
#define KC_ KC_TRNS
|
|
||||||
#define KC_XX KC_NO
|
|
||||||
|
|
||||||
#define KC_L1 LT(1, KC_P0)
|
#define KC_L1 LT(1, KC_P0)
|
||||||
#define KC_L2 LT(2, KC_SPC)
|
#define KC_L2 LT(2, KC_SPC)
|
||||||
#define KC_RST RESET
|
|
||||||
#define KC_BSTP BL_STEP
|
|
||||||
#define KC_RTOG RGB_TOG
|
|
||||||
#define KC_RMOD RGB_MOD
|
|
||||||
#define KC_RHUI RGB_HUI
|
|
||||||
#define KC_RHUD RGB_HUD
|
|
||||||
#define KC_RSAI RGB_SAI
|
|
||||||
#define KC_RSAD RGB_SAD
|
|
||||||
#define KC_RVAI RGB_VAI
|
|
||||||
#define KC_RVAD RGB_VAD
|
|
||||||
#define KC_MAC1 ADMIN
|
#define KC_MAC1 ADMIN
|
||||||
#define KC_MAC2 SMSPC
|
#define KC_MAC2 SMSPC
|
||||||
#define KC_M192 M192
|
#define KC_M192 M192
|
||||||
@@ -35,40 +21,25 @@ enum custom_keycodes {
|
|||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[_BASE] = LAYOUT_kc(
|
[_BASE] = LAYOUT_ortho_4x4(
|
||||||
//,----+----+----+----.
|
KC_P7, KC_P8, KC_P9, KC_BSPC,
|
||||||
P7 , P8 , P9 ,BSPC,
|
KC_P4, KC_P5, KC_P6, KC_TAB ,
|
||||||
//|----+----+----+----|
|
KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
P4 , P5 , P6 ,TAB ,
|
KC_L1, KC_L2, KC_PDOT, KC_PSLS
|
||||||
//|----+----+----+----|
|
|
||||||
P1 , P2 , P3 ,PENT,
|
|
||||||
//|----+----+----+----|
|
|
||||||
L1 , L2 ,PDOT,PSLS
|
|
||||||
//`----+----+----+----'
|
|
||||||
),
|
),
|
||||||
|
|
||||||
[_FN1] = LAYOUT_kc(
|
[_FN1] = LAYOUT_ortho_4x4(
|
||||||
//,----+----+----+----.
|
KC_ESC, KC_MAC1, KC_MAC2, KC_DEL ,
|
||||||
ESC ,MAC1,MAC2,DEL ,
|
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||||
//|----+----+----+----|
|
KC_M192, KC_M255, XXXXXXX, XXXXXXX,
|
||||||
LEFT,DOWN, UP ,RGHT,
|
_______, XXXXXXX, _______, XXXXXXX
|
||||||
//|----+----+----+----|
|
|
||||||
M192,M255, XX , XX ,
|
|
||||||
//|----+----+----+----|
|
|
||||||
, XX , , XX
|
|
||||||
//`----+----+----+----'
|
|
||||||
),
|
),
|
||||||
|
|
||||||
[_FN2] = LAYOUT_kc(
|
[_FN2] = LAYOUT_ortho_4x4(
|
||||||
//,----+----+----+----.
|
RESET, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
RST , XX , XX , XX ,
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||||
//|----+----+----+----|
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||||
RTOG,RHUI,RSAI,RVAI,
|
BL_STEP, _______, XXXXXXX, XXXXXXX
|
||||||
//|----+----+----+----|
|
|
||||||
RMOD,RHUD,RSAD,RVAD,
|
|
||||||
//|----+----+----+----|
|
|
||||||
BSTP, , XX , XX
|
|
||||||
//`----+----+----+----'
|
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Whitespace-only changes.
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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 "foldkb.h"
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_keebio_foldkb_rev1
|
||||||
|
#include "rev1.h"
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "FoldKB",
|
||||||
|
"url": "https://keeb.io",
|
||||||
|
"maintainer": "nooges",
|
||||||
|
"width": 17.5,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{ "label": "Mute", "x": 0, "y": 0 },
|
||||||
|
{ "label": "Esc", "x": 1.25, "y": 0 },
|
||||||
|
{ "label": "~", "x": 2.25, "y": 0 },
|
||||||
|
{ "label": "1", "x": 3.25, "y": 0 },
|
||||||
|
{ "label": "2", "x": 4.25, "y": 0 },
|
||||||
|
{ "label": "3", "x": 5.25, "y": 0 },
|
||||||
|
{ "label": "4", "x": 6.25, "y": 0 },
|
||||||
|
{ "label": "5", "x": 7.25, "y": 0 },
|
||||||
|
{ "label": "6", "x": 9, "y": 0 },
|
||||||
|
{ "label": "7", "x": 10, "y": 0 },
|
||||||
|
{ "label": "8", "x": 11, "y": 0 },
|
||||||
|
{ "label": "9", "x": 12, "y": 0 },
|
||||||
|
{ "label": "0", "x": 13, "y": 0 },
|
||||||
|
{ "label": "-", "x": 14, "y": 0 },
|
||||||
|
{ "label": "=", "x": 15, "y": 0 },
|
||||||
|
{ "label": "Bksp", "x": 16, "y": 0 },
|
||||||
|
|
||||||
|
{ "label": "Home", "x": 0, "y": 1 },
|
||||||
|
{ "label": "Tab", "x": 1.75, "y": 1, "w": 1.5 },
|
||||||
|
{ "label": "Q", "x": 3.25, "y": 1 },
|
||||||
|
{ "label": "W", "x": 4.25, "y": 1 },
|
||||||
|
{ "label": "E", "x": 5.25, "y": 1 },
|
||||||
|
{ "label": "R", "x": 6.25, "y": 1 },
|
||||||
|
{ "label": "T", "x": 7.25, "y": 1 },
|
||||||
|
{ "label": "Y", "x": 9, "y": 1 },
|
||||||
|
{ "label": "U", "x": 10, "y": 1 },
|
||||||
|
{ "label": "I", "x": 11, "y": 1 },
|
||||||
|
{ "label": "O", "x": 12, "y": 1 },
|
||||||
|
{ "label": "P", "x": 13, "y": 1 },
|
||||||
|
{ "label": "[", "x": 14, "y": 1 },
|
||||||
|
{ "label": "]", "x": 15, "y": 1 },
|
||||||
|
{ "label": "\\", "x": 16, "y": 1, "w": 1.5 },
|
||||||
|
|
||||||
|
{ "label": "End", "x": 0, "y": 2 },
|
||||||
|
{ "label": "Caps", "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": 9, "y": 2 },
|
||||||
|
{ "label": "J", "x": 10, "y": 2 },
|
||||||
|
{ "label": "K", "x": 11, "y": 2 },
|
||||||
|
{ "label": "L", "x": 12, "y": 2 },
|
||||||
|
{ "label": ";", "x": 13, "y": 2 },
|
||||||
|
{ "label": "'", "x": 14, "y": 2 },
|
||||||
|
{ "label": "Enter", "x": 15, "y": 2, "w": 2.25 },
|
||||||
|
|
||||||
|
{ "label": "PgUp", "x": 0, "y": 3 },
|
||||||
|
{ "label": "Shift", "x": 1, "y": 3, "w": 2.25 },
|
||||||
|
{ "label": "Z", "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "X", "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "C", "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "V", "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "B", "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "N", "x": 9, "y": 3 },
|
||||||
|
{ "label": "M", "x": 10, "y": 3 },
|
||||||
|
{ "label": ",", "x": 11, "y": 3 },
|
||||||
|
{ "label": ".", "x": 12, "y": 3 },
|
||||||
|
{ "label": "/", "x": 13, "y": 3 },
|
||||||
|
{ "label": "Shift", "x": 14, "y": 3, "w": 1.75 },
|
||||||
|
{ "label": "Fn1", "x": 15.75, "y": 3 },
|
||||||
|
|
||||||
|
{ "label": "PgDn", "x": 0, "y": 4 },
|
||||||
|
{ "label": "Ctrl", "x": 1.5, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Win", "x": 2.75, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Alt", "x": 4, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Fn1", "x": 5.25, "y": 4 },
|
||||||
|
{ "label": "Space", "x": 6.25, "y": 4 },
|
||||||
|
{ "label": "Space", "x": 7.25, "y": 4 },
|
||||||
|
{ "label": "Space", "x": 9, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Space", "x": 10.25, "y": 4, "w": 1.5 },
|
||||||
|
{ "label": "Alt", "x": 11.75, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Win", "x": 13, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Menu", "x": 14.25, "y": 4, "w": 1.25 },
|
||||||
|
{ "label": "Ctrl", "x": 15.5, "y": 4, "w": 1.25 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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(
|
||||||
|
KC_MUTE, KC_ESC, 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_END, 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_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_MUTE, RESET, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||||
|
BL_STEP, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______,
|
||||||
|
RGB_MOD, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
|
||||||
|
KC_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______,
|
||||||
|
KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
} else if (index == 1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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(
|
||||||
|
KC_MUTE, KC_ESC, 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_END, 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_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_MUTE, RESET, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||||
|
BL_STEP, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______,
|
||||||
|
RGB_MOD, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
|
||||||
|
KC_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______,
|
||||||
|
KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[2] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[3] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
} else if (index == 1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
CONSOLE_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# FoldKB
|
||||||
|
|
||||||
|
A split 60% ortholinear keyboard that uses a standard keyset, made and sold by Keebio. [More info at Keebio](https://keeb.io).
|
||||||
|
Layout design by friglesnart.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges)
|
||||||
|
* Hardware Availability: [Keebio](https://keeb.io/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make keebio/foldkb/rev1:default
|
||||||
|
|
||||||
|
Example of flashing this keyboard:
|
||||||
|
|
||||||
|
make keebio/foldkb/rev1: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).
|
||||||
|
|
||||||
|
A build guide for this keyboard can be found here: [Keebio Build Guides](https://docs.keeb.io)
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xCB10
|
||||||
|
#define PRODUCT_ID 0x1258
|
||||||
|
#define DEVICE_VER 0x0100
|
||||||
|
#define MANUFACTURER Keebio
|
||||||
|
#define PRODUCT FoldKB Rev. 1
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { B1, B2, C7, B4, D7 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F1, F0, B7, B3, D2, D3, D5 }
|
||||||
|
#define SPLIT_HAND_PIN F7
|
||||||
|
#define ENCODERS_PAD_A { F5 }
|
||||||
|
#define ENCODERS_PAD_B { F6 }
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B5
|
||||||
|
|
||||||
|
/* serial.c configuration for split keyboard */
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN E6
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 16 // Number of LEDs
|
||||||
|
#define RGBLED_SPLIT { 8, 8 }
|
||||||
|
#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 12, 13, 14, 15, 4, 5, 6, 7, 8, 9, 10, 11 }
|
||||||
|
#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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 "foldkb.h"
|
||||||
|
|
||||||
|
void eeconfig_init_kb(void) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_enable();
|
||||||
|
backlight_level(3);
|
||||||
|
#endif
|
||||||
|
eeconfig_update_kb(0);
|
||||||
|
eeconfig_init_user();
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2021 Danny Nguyen <[email protected]>
|
||||||
|
|
||||||
|
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 "foldkb.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
|
||||||
|
LB1, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
||||||
|
LC1, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
||||||
|
LD1, LD3, LD4, LD5, LD6, LD7, LD8, RD1, RD2, RD3, RD4, RD5, RD6, RD8, \
|
||||||
|
LE1, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE4, RE5, RE6, RE8 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \
|
||||||
|
{ LB1, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8 }, \
|
||||||
|
{ LC1, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8 }, \
|
||||||
|
{ LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8 }, \
|
||||||
|
{ LE1, KC_NO, LE3, LE4, LE5, LE6, LE7, LE8 }, \
|
||||||
|
{ RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
|
||||||
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
|
||||||
|
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8 }, \
|
||||||
|
{ RD1, RD2, RD3, RD4, RD5, RD6, KC_NO, RD8 }, \
|
||||||
|
{ RE1, RE2, KC_NO, RE4, RE5, RE6, KC_NO, RE8 }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
BACKLIGHT_ENABLE = yes
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
ENCODER_ENABLE = yes
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
|
|
||||||
|
DEFAULT_FOLDER = keebio/foldkb/rev1
|
||||||
@@ -20,9 +20,6 @@ enum custom_keycodes {
|
|||||||
ADJUST,
|
ADJUST,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Fillers to make layering more clear
|
|
||||||
#define KC_ KC_TRNS
|
|
||||||
|
|
||||||
// tap toggle numpad on
|
// tap toggle numpad on
|
||||||
#define NUMPAD TT(_NUMS)
|
#define NUMPAD TT(_NUMS)
|
||||||
|
|
||||||
@@ -48,13 +45,6 @@ enum custom_keycodes {
|
|||||||
#define CTL_BSL MT(MOD_RCTL, KC_BSLS) // \ Right Control
|
#define CTL_BSL MT(MOD_RCTL, KC_BSLS) // \ Right Control
|
||||||
#define CTL_PIP MT(MOD_RCTL, KC_PIPE) // | Right Control
|
#define CTL_PIP MT(MOD_RCTL, KC_PIPE) // | Right Control
|
||||||
|
|
||||||
// Redefine for LAYOUT_kc
|
|
||||||
#define KC_CTL_BSL CTL_BSL
|
|
||||||
#define KC_CTL_PIP CTL_PIP
|
|
||||||
#define KC_CTL_DEL CTL_DEL
|
|
||||||
#define KC_HPR_TIL HPR_TIL
|
|
||||||
#define KC_HPR_GRV HPR_GRV
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
@@ -81,12 +71,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------' `-----------------------------------------'
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = LAYOUT_ortho_4x12(
|
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||||
HPR_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC,
|
HPR_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC,
|
||||||
CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, CTL_QOT,
|
CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, CTL_QOT,
|
||||||
SFT_MIN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, SFT_ENT,
|
SFT_MIN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, SFT_ENT,
|
||||||
NUMPAD , KC_MEH , KC_LGUI, KC_LALT, LOWER, CTL_SPC, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_HYPR, MO(_FUNC)
|
NUMPAD , KC_MEH , KC_LGUI, KC_LALT, LOWER, CTL_SPC, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_HYPR, MO(_FUNC)
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
/* Raise
|
/* Raise
|
||||||
@@ -100,12 +90,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------' `-----------------------------------------'
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = LAYOUT_kc_ortho_4x12(
|
[_RAISE] = LAYOUT_ortho_4x12(
|
||||||
HPR_GRV, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
HPR_GRV, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
|
||||||
,LEFT, UP ,DOWN,RGHT,LPRN, RPRN,MINS, EQL,LBRC,RBRC,CTL_PIP,
|
_______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, CTL_PIP,
|
||||||
,COLN,QUOT,ASTR,COMM,LCBR, RCBR,UNDS,PLUS, , , ,
|
_______, KC_COLN, KC_QUOT, KC_ASTR, KC_COMM, KC_LCBR, KC_RCBR, KC_UNDS, KC_PLUS, _______, _______, _______,
|
||||||
, , , , , , , , , , ,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Lower
|
/* Lower
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
@@ -118,61 +108,58 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------' `-----------------------------------------'
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_LOWER] = LAYOUT_kc_ortho_4x12(
|
[_LOWER] = LAYOUT_ortho_4x12(
|
||||||
HPR_TIL,EXLM, AT ,HASH,DLR , PERC , CIRC,AMPR,ASTR,LPRN,RPRN, ,
|
HPR_TIL, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||||
CTL_DEL,VOLU,MUTE,MPLY,PGUP, COLN , QUOT,MINS, EQL,LBRC,RBRC,CTL_BSL,
|
CTL_DEL, KC_VOLU, KC_MUTE, KC_MPLY, KC_PGUP, KC_COLN, KC_QUOT, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, CTL_BSL,
|
||||||
,VOLD,MPRV,MNXT,PGDN, SCLN , DQUO,PIPE,COMM, DOT,SLSH, ,
|
_______, KC_VOLD, KC_MPRV, KC_MNXT, KC_PGDN, KC_SCLN, KC_DQUO, KC_PIPE, KC_COMM, KC_DOT , KC_SLSH, _______,
|
||||||
, , , , , , , , , , ,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_FUNC] = LAYOUT_kc_ortho_4x12(
|
[_FUNC] = LAYOUT_ortho_4x12(
|
||||||
// ,----+----+----+----+----+----. ,----+----+----+----+----+----.
|
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______,
|
||||||
, F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, ,
|
_______, KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , _______,
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
_______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , _______,
|
||||||
, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, ,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
),
|
||||||
, F21, F22, F23, F24, NO , NO , NO , NO , NO , NO , ,
|
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
|
||||||
, , , , , , , , , , ,
|
|
||||||
// `----+----+----+----+----+----' `----+----+----+----+----+----'
|
|
||||||
),
|
|
||||||
|
|
||||||
[_NUMS] = LAYOUT_kc_ortho_4x12(
|
[_NUMS] = LAYOUT_ortho_4x12(
|
||||||
// ,----+----+----+----+----+----. ,----+----+----+----+----+----.
|
_______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_SLSH, _______,
|
||||||
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,SLSH, ,
|
_______, KC_CAPS, KC_INS , KC_HOME, KC_PGUP, KC_LPRN, KC_RPRN, KC_4 , KC_5 , KC_6 , KC_ASTR, _______,
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
_______, KC_NLCK, KC_DEL , KC_END , KC_PGDN, KC_SCLN, KC_COMM, KC_1 , KC_2 , KC_3 , KC_MINS, _______,
|
||||||
,CAPS, INS,HOME,PGUP,LPRN, RPRN, 4 , 5 , 6 ,ASTR, ,
|
_______, _______, _______, _______, _______, _______, _______, KC_0 , KC_DOT , KC_EQL , KC_PLUS, _______
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
),
|
||||||
,NLCK, DEL, END,PGDN,SCLN, COMM, 1 , 2 , 3 ,MINS, ,
|
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
|
||||||
, , , , , , , 0 ,DOT ,EQL ,PLUS,
|
|
||||||
// `----+----+----+----+----+----' `----+----+----+----+----+----'
|
|
||||||
),
|
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT_ortho_4x12(
|
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||||
// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------.
|
RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL ,
|
||||||
RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL , \
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, BL_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||||
// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------|
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, BL_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------|
|
)
|
||||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
|
};
|
||||||
// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------|
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
// `-------+--------+--------+--------+--------+--------' `-------+--------+--------+--------+--------+--------,
|
|
||||||
)
|
|
||||||
|
|
||||||
/*
|
/* Template
|
||||||
|
*
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
* | | | | | | | | | | | | | |
|
* | Hyper| | | | | | | | | | | | |
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | | |
|
* | Ctrl | | | | | | | | | | | | Ctrl |
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | | |
|
* | Shift| | | | | | | | | | | | Shift|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------' `-----------------------------------------'
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
};
|
// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------.
|
||||||
|
// | | | | | | | | | | | | | |
|
||||||
|
// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------.
|
||||||
|
// | | | | | | | | | | | | | |
|
||||||
|
// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------.
|
||||||
|
// | | | | | | | | | | | | | |
|
||||||
|
// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------.
|
||||||
|
// | | | | | | | | | | | | | |
|
||||||
|
// `-------+--------+--------+--------+--------+--------' `-------+--------+--------+--------+--------+--------,
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_LCTL,KC_LALT,
|
KC_LCTL,KC_LALT,
|
||||||
KC_HOME,
|
KC_HOME,
|
||||||
KC_BSPC,KC_DEL ,KC_END ,
|
KC_BSPC,KC_DEL ,KC_END ,
|
||||||
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1,
|
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, RESET,
|
||||||
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
|
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
|
||||||
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
|
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
|
||||||
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
|
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[QWERTY] = LAYOUT_pretty(
|
[QWERTY] = LAYOUT_pretty(
|
||||||
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_FN0, KC_1,
|
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_FN0, RESET,
|
||||||
KC_EQL, 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_HOME,
|
KC_HOME,
|
||||||
KC_BSPC, KC_DEL, KC_END,
|
KC_BSPC, KC_DEL, KC_END,
|
||||||
// right hand
|
// right hand
|
||||||
KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1,
|
KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET,
|
||||||
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
|
KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
|
||||||
KC_D, KC_H, KC_T, KC_N, KC_S, KC_BSLS,
|
KC_D, KC_H, KC_T, KC_N, KC_S, KC_BSLS,
|
||||||
|
|||||||
@@ -41,6 +41,12 @@
|
|||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define RGB_DI_PIN B7
|
||||||
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
|
# define RGBLED_NUM 2
|
||||||
|
# define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
/* Set 0 if debouncing isn't needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
|||||||
@@ -18,15 +18,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define TAPPING_TERM_PER_KEY
|
#define TAPPING_TERM_PER_KEY
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
/* ws2812 RGB LED */
|
|
||||||
#define RGB_DI_PIN B7
|
|
||||||
#define RGBLED_NUM 2 // Number of LEDs
|
|
||||||
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
|
||||||
/* #define RGBLIGHT_HUE_STEP 6
|
|
||||||
* #define RGBLIGHT_SAT_STEP 4
|
|
||||||
* #define RGBLIGHT_VAL_STEP 4
|
|
||||||
*/
|
|
||||||
#endif
|
|
||||||
@@ -18,15 +18,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define TAPPING_TERM_PER_KEY
|
#define TAPPING_TERM_PER_KEY
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
/* ws2812 RGB LED */
|
|
||||||
#define RGB_DI_PIN B7
|
|
||||||
#define RGBLED_NUM 2 // Number of LEDs
|
|
||||||
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
|
||||||
/* #define RGBLIGHT_HUE_STEP 6
|
|
||||||
* #define RGBLIGHT_SAT_STEP 4
|
|
||||||
* #define RGBLIGHT_VAL_STEP 4
|
|
||||||
*/
|
|
||||||
#endif
|
|
||||||
@@ -35,6 +35,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
|
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
|
||||||
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
|
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
|
||||||
|
|
||||||
|
#define SOFT_SERIAL_PIN D2
|
||||||
|
#define SERIAL_USE_MULTI_TRANSACTION
|
||||||
|
|
||||||
/* define if matrix has ghost */
|
/* define if matrix has ghost */
|
||||||
//#define MATRIX_HAS_GHOST
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|||||||
@@ -1,357 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <[email protected]>
|
|
||||||
|
|
||||||
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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* scan matrix
|
|
||||||
*/
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <avr/io.h>
|
|
||||||
#include <avr/wdt.h>
|
|
||||||
#include <avr/interrupt.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
#include "print.h"
|
|
||||||
#include "debug.h"
|
|
||||||
#include "util.h"
|
|
||||||
#include "matrix.h"
|
|
||||||
#include "split_util.h"
|
|
||||||
#include "quantum.h"
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
# include "i2c.h"
|
|
||||||
#else // USE_SERIAL
|
|
||||||
# include "split_scomm.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef DEBOUNCE
|
|
||||||
# define DEBOUNCE 5
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ERROR_DISCONNECT_COUNT 5
|
|
||||||
|
|
||||||
static uint8_t debouncing = DEBOUNCE;
|
|
||||||
static const int ROWS_PER_HAND = MATRIX_ROWS/2;
|
|
||||||
static uint8_t error_count = 0;
|
|
||||||
uint8_t is_master = 0 ;
|
|
||||||
|
|
||||||
static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
|
|
||||||
static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
|
|
||||||
|
|
||||||
/* matrix state(1:on, 0:off) */
|
|
||||||
static matrix_row_t matrix[MATRIX_ROWS];
|
|
||||||
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
|
||||||
|
|
||||||
static matrix_row_t read_cols(void);
|
|
||||||
static void init_cols(void);
|
|
||||||
static void unselect_rows(void);
|
|
||||||
static void select_row(uint8_t row);
|
|
||||||
static uint8_t matrix_master_scan(void);
|
|
||||||
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
matrix_init_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
uint8_t matrix_rows(void)
|
|
||||||
{
|
|
||||||
return MATRIX_ROWS;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
uint8_t matrix_cols(void)
|
|
||||||
{
|
|
||||||
return MATRIX_COLS;
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init(void)
|
|
||||||
{
|
|
||||||
split_keyboard_setup();
|
|
||||||
|
|
||||||
// initialize row and col
|
|
||||||
unselect_rows();
|
|
||||||
init_cols();
|
|
||||||
|
|
||||||
setPinOutput(B0);
|
|
||||||
setPinOutput(D5);
|
|
||||||
writePinHigh(B0);
|
|
||||||
writePinHigh(D5);
|
|
||||||
|
|
||||||
// initialize matrix state: all keys off
|
|
||||||
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
|
||||||
matrix[i] = 0;
|
|
||||||
matrix_debouncing[i] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
is_master = has_usb();
|
|
||||||
|
|
||||||
matrix_init_quantum();
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t _matrix_scan(void)
|
|
||||||
{
|
|
||||||
// Right hand is stored after the left in the matirx so, we need to offset it
|
|
||||||
int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
|
|
||||||
select_row(i);
|
|
||||||
_delay_us(30); // without this wait read unstable value.
|
|
||||||
matrix_row_t cols = read_cols();
|
|
||||||
if (matrix_debouncing[i+offset] != cols) {
|
|
||||||
matrix_debouncing[i+offset] = cols;
|
|
||||||
debouncing = DEBOUNCE;
|
|
||||||
}
|
|
||||||
unselect_rows();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (debouncing) {
|
|
||||||
if (--debouncing) {
|
|
||||||
_delay_ms(1);
|
|
||||||
} else {
|
|
||||||
for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
|
|
||||||
matrix[i+offset] = matrix_debouncing[i+offset];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
|
|
||||||
// Get rows from other half over i2c
|
|
||||||
int i2c_transaction(void) {
|
|
||||||
int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
|
|
||||||
|
|
||||||
int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
|
|
||||||
if (err) goto i2c_error;
|
|
||||||
|
|
||||||
// start of matrix stored at 0x00
|
|
||||||
err = i2c_master_write(0x00);
|
|
||||||
if (err) goto i2c_error;
|
|
||||||
|
|
||||||
// Start read
|
|
||||||
err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
|
|
||||||
if (err) goto i2c_error;
|
|
||||||
|
|
||||||
if (!err) {
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < ROWS_PER_HAND-1; ++i) {
|
|
||||||
matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
|
|
||||||
}
|
|
||||||
matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
|
|
||||||
i2c_master_stop();
|
|
||||||
} else {
|
|
||||||
i2c_error: // the cable is disconnceted, or something else went wrong
|
|
||||||
i2c_reset_state();
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else // USE_SERIAL
|
|
||||||
|
|
||||||
int serial_transaction(int master_changed) {
|
|
||||||
int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
|
|
||||||
#ifdef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
int ret=serial_update_buffers(master_changed);
|
|
||||||
#else
|
|
||||||
int ret=serial_update_buffers();
|
|
||||||
#endif
|
|
||||||
if (ret ) {
|
|
||||||
if(ret==2) writePinLow(B0);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
writePinHigh(B0);
|
|
||||||
memcpy(&matrix[slaveOffset],
|
|
||||||
(void *)serial_slave_buffer, SERIAL_SLAVE_BUFFER_LENGTH);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
|
||||||
{
|
|
||||||
if (is_master) {
|
|
||||||
matrix_master_scan();
|
|
||||||
}else{
|
|
||||||
matrix_slave_scan();
|
|
||||||
int offset = (isLeftHand) ? ROWS_PER_HAND : 0;
|
|
||||||
memcpy(&matrix[offset],
|
|
||||||
(void *)serial_master_buffer, SERIAL_MASTER_BUFFER_LENGTH);
|
|
||||||
matrix_scan_quantum();
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t matrix_master_scan(void) {
|
|
||||||
|
|
||||||
int ret = _matrix_scan();
|
|
||||||
int mchanged = 1;
|
|
||||||
|
|
||||||
int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
// for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
|
||||||
/* i2c_slave_buffer[i] = matrix[offset+i]; */
|
|
||||||
// i2c_slave_buffer[i] = matrix[offset+i];
|
|
||||||
// }
|
|
||||||
#else // USE_SERIAL
|
|
||||||
#ifdef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
mchanged = memcmp((void *)serial_master_buffer,
|
|
||||||
&matrix[offset], SERIAL_MASTER_BUFFER_LENGTH);
|
|
||||||
#endif
|
|
||||||
memcpy((void *)serial_master_buffer,
|
|
||||||
&matrix[offset], SERIAL_MASTER_BUFFER_LENGTH);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
if( i2c_transaction() ) {
|
|
||||||
#else // USE_SERIAL
|
|
||||||
if( serial_transaction(mchanged) ) {
|
|
||||||
#endif
|
|
||||||
// turn on the indicator led when halves are disconnected
|
|
||||||
writePinLow(D5);
|
|
||||||
|
|
||||||
error_count++;
|
|
||||||
|
|
||||||
if (error_count > ERROR_DISCONNECT_COUNT) {
|
|
||||||
// reset other half if disconnected
|
|
||||||
int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
|
|
||||||
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
|
||||||
matrix[slaveOffset+i] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// turn off the indicator led on no error
|
|
||||||
writePinHigh(D5);
|
|
||||||
error_count = 0;
|
|
||||||
}
|
|
||||||
matrix_scan_quantum();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_slave_scan(void) {
|
|
||||||
_matrix_scan();
|
|
||||||
|
|
||||||
int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
|
||||||
/* i2c_slave_buffer[i] = matrix[offset+i]; */
|
|
||||||
i2c_slave_buffer[i] = matrix[offset+i];
|
|
||||||
}
|
|
||||||
#else // USE_SERIAL
|
|
||||||
#ifdef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
int change = 0;
|
|
||||||
#endif
|
|
||||||
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
|
||||||
#ifdef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
if( serial_slave_buffer[i] != matrix[offset+i] )
|
|
||||||
change = 1;
|
|
||||||
#endif
|
|
||||||
serial_slave_buffer[i] = matrix[offset+i];
|
|
||||||
}
|
|
||||||
#ifdef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
slave_buffer_change_count += change;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool matrix_is_modified(void)
|
|
||||||
{
|
|
||||||
if (debouncing) return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool matrix_is_on(uint8_t row, uint8_t col)
|
|
||||||
{
|
|
||||||
return (matrix[row] & ((matrix_row_t)1<<col));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
matrix_row_t matrix_get_row(uint8_t row)
|
|
||||||
{
|
|
||||||
return matrix[row];
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_print(void)
|
|
||||||
{
|
|
||||||
print("\nr/c 0123456789ABCDEF\n");
|
|
||||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
|
||||||
print_hex8(row); print(": ");
|
|
||||||
print_bin_reverse16(matrix_get_row(row));
|
|
||||||
print("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t matrix_key_count(void)
|
|
||||||
{
|
|
||||||
uint8_t count = 0;
|
|
||||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
|
||||||
count += bitpop16(matrix[i]);
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void init_cols(void)
|
|
||||||
{
|
|
||||||
for(int x = 0; x < MATRIX_COLS; x++) {
|
|
||||||
_SFR_IO8((col_pins[x] >> 4) + 1) &= ~_BV(col_pins[x] & 0xF);
|
|
||||||
_SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static matrix_row_t read_cols(void)
|
|
||||||
{
|
|
||||||
matrix_row_t result = 0;
|
|
||||||
for(int x = 0; x < MATRIX_COLS; x++) {
|
|
||||||
result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void unselect_rows(void)
|
|
||||||
{
|
|
||||||
for(int x = 0; x < ROWS_PER_HAND; x++) {
|
|
||||||
_SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF);
|
|
||||||
_SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void select_row(uint8_t row)
|
|
||||||
{
|
|
||||||
_SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF);
|
|
||||||
_SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#ifndef SOFT_SERIAL_PIN
|
|
||||||
#define SOFT_SERIAL_PIN D2
|
|
||||||
#define SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
#endif
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
#include <avr/io.h>
|
|
||||||
#include <avr/wdt.h>
|
|
||||||
#include <avr/power.h>
|
|
||||||
#include <avr/interrupt.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
#include <avr/eeprom.h>
|
|
||||||
#include "split_util.h"
|
|
||||||
#include "matrix.h"
|
|
||||||
#include "keyboard.h"
|
|
||||||
#include "wait.h"
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
# include "i2c.h"
|
|
||||||
#else
|
|
||||||
# include "split_scomm.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SPLIT_USB_TIMEOUT
|
|
||||||
# define SPLIT_USB_TIMEOUT 2500
|
|
||||||
#endif
|
|
||||||
|
|
||||||
volatile bool isLeftHand = true;
|
|
||||||
|
|
||||||
bool waitForUsb(void) {
|
|
||||||
for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / 100); i++) {
|
|
||||||
// This will return true of a USB connection has been established
|
|
||||||
if (UDADDR & _BV(ADDEN)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
wait_ms(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow
|
|
||||||
(USBCON &= ~(_BV(USBE) | _BV(OTGPADE)));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__((weak)) bool is_keyboard_left(void) {
|
|
||||||
#if defined(SPLIT_HAND_PIN)
|
|
||||||
// Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand
|
|
||||||
setPinInput(SPLIT_HAND_PIN);
|
|
||||||
return readPin(SPLIT_HAND_PIN);
|
|
||||||
#elif defined(EE_HANDS)
|
|
||||||
return eeconfig_read_handedness();
|
|
||||||
#elif defined(MASTER_RIGHT)
|
|
||||||
return !has_usb();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return has_usb();
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__((weak)) bool has_usb(void) {
|
|
||||||
static enum { UNKNOWN, MASTER, SLAVE } usbstate = UNKNOWN;
|
|
||||||
|
|
||||||
// only check once, as this is called often
|
|
||||||
if (usbstate == UNKNOWN) {
|
|
||||||
#if defined(SPLIT_USB_DETECT)
|
|
||||||
usbstate = waitForUsb() ? MASTER : SLAVE;
|
|
||||||
#elif defined(__AVR__)
|
|
||||||
USBCON |= (1 << OTGPADE); // enables VBUS pad
|
|
||||||
wait_us(5);
|
|
||||||
|
|
||||||
usbstate = (USBSTA & (1 << VBUS)) ? MASTER : SLAVE; // checks state of VBUS
|
|
||||||
#else
|
|
||||||
usbstate = MASTER;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return (usbstate == MASTER);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void keyboard_master_setup(void) {
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
i2c_master_init();
|
|
||||||
#else
|
|
||||||
serial_master_init();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void keyboard_slave_setup(void) {
|
|
||||||
|
|
||||||
#ifdef USE_MATRIX_I2C
|
|
||||||
i2c_slave_init(SLAVE_I2C_ADDRESS);
|
|
||||||
#else
|
|
||||||
serial_slave_init();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void split_keyboard_setup(void) {
|
|
||||||
isLeftHand = is_keyboard_left();
|
|
||||||
|
|
||||||
if (has_usb()) {
|
|
||||||
keyboard_master_setup();
|
|
||||||
} else {
|
|
||||||
keyboard_slave_setup();
|
|
||||||
}
|
|
||||||
sei();
|
|
||||||
}
|
|
||||||
@@ -1,589 +0,0 @@
|
|||||||
/*
|
|
||||||
* WARNING: be careful changing this code, it is very timing dependent
|
|
||||||
*
|
|
||||||
* 2018-10-28 checked
|
|
||||||
* avr-gcc 4.9.2
|
|
||||||
* avr-gcc 5.4.0
|
|
||||||
* avr-gcc 7.3.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef F_CPU
|
|
||||||
#define F_CPU 16000000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <avr/io.h>
|
|
||||||
#include <avr/interrupt.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include "serial.h"
|
|
||||||
|
|
||||||
#ifdef SOFT_SERIAL_PIN
|
|
||||||
|
|
||||||
#ifdef __AVR_ATmega32U4__
|
|
||||||
// if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
|
|
||||||
#ifdef USE_I2C
|
|
||||||
#if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
|
|
||||||
#error Using ATmega32U4 I2C, so can not use PD0, PD1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
|
|
||||||
#define SERIAL_PIN_DDR DDRD
|
|
||||||
#define SERIAL_PIN_PORT PORTD
|
|
||||||
#define SERIAL_PIN_INPUT PIND
|
|
||||||
#if SOFT_SERIAL_PIN == D0
|
|
||||||
#define SERIAL_PIN_MASK _BV(PD0)
|
|
||||||
#define EIMSK_BIT _BV(INT0)
|
|
||||||
#define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
|
|
||||||
#define SERIAL_PIN_INTERRUPT INT0_vect
|
|
||||||
#elif SOFT_SERIAL_PIN == D1
|
|
||||||
#define SERIAL_PIN_MASK _BV(PD1)
|
|
||||||
#define EIMSK_BIT _BV(INT1)
|
|
||||||
#define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
|
|
||||||
#define SERIAL_PIN_INTERRUPT INT1_vect
|
|
||||||
#elif SOFT_SERIAL_PIN == D2
|
|
||||||
#define SERIAL_PIN_MASK _BV(PD2)
|
|
||||||
#define EIMSK_BIT _BV(INT2)
|
|
||||||
#define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
|
|
||||||
#define SERIAL_PIN_INTERRUPT INT2_vect
|
|
||||||
#elif SOFT_SERIAL_PIN == D3
|
|
||||||
#define SERIAL_PIN_MASK _BV(PD3)
|
|
||||||
#define EIMSK_BIT _BV(INT3)
|
|
||||||
#define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
|
|
||||||
#define SERIAL_PIN_INTERRUPT INT3_vect
|
|
||||||
#endif
|
|
||||||
#elif SOFT_SERIAL_PIN == E6
|
|
||||||
#define SERIAL_PIN_DDR DDRE
|
|
||||||
#define SERIAL_PIN_PORT PORTE
|
|
||||||
#define SERIAL_PIN_INPUT PINE
|
|
||||||
#define SERIAL_PIN_MASK _BV(PE6)
|
|
||||||
#define EIMSK_BIT _BV(INT6)
|
|
||||||
#define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
|
|
||||||
#define SERIAL_PIN_INTERRUPT INT6_vect
|
|
||||||
#else
|
|
||||||
#error invalid SOFT_SERIAL_PIN value
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
#error serial.c now support ATmega32U4 only
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//////////////// for backward compatibility ////////////////////////////////
|
|
||||||
#ifndef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
/* --- USE Simple API (OLD API, compatible with let's split serial.c) */
|
|
||||||
#if SERIAL_SLAVE_BUFFER_LENGTH > 0
|
|
||||||
uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
|
|
||||||
#endif
|
|
||||||
#if SERIAL_MASTER_BUFFER_LENGTH > 0
|
|
||||||
uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
|
|
||||||
#endif
|
|
||||||
uint8_t volatile status0 = 0;
|
|
||||||
|
|
||||||
SSTD_t transactions[] = {
|
|
||||||
{ (uint8_t *)&status0,
|
|
||||||
#if SERIAL_MASTER_BUFFER_LENGTH > 0
|
|
||||||
sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer,
|
|
||||||
#else
|
|
||||||
0, (uint8_t *)NULL,
|
|
||||||
#endif
|
|
||||||
#if SERIAL_SLAVE_BUFFER_LENGTH > 0
|
|
||||||
sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer
|
|
||||||
#else
|
|
||||||
0, (uint8_t *)NULL,
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void serial_master_init(void)
|
|
||||||
{ soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); }
|
|
||||||
|
|
||||||
void serial_slave_init(void)
|
|
||||||
{ soft_serial_target_init(transactions, TID_LIMIT(transactions)); }
|
|
||||||
|
|
||||||
// 0 => no error
|
|
||||||
// 1 => slave did not respond
|
|
||||||
// 2 => checksum error
|
|
||||||
int serial_update_buffers()
|
|
||||||
{
|
|
||||||
int result;
|
|
||||||
result = soft_serial_transaction();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // end of Simple API (OLD API, compatible with let's split serial.c)
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#define ALWAYS_INLINE __attribute__((always_inline))
|
|
||||||
#define NO_INLINE __attribute__((noinline))
|
|
||||||
#define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
|
|
||||||
|
|
||||||
// parity check
|
|
||||||
#define ODD_PARITY 1
|
|
||||||
#define EVEN_PARITY 0
|
|
||||||
#define PARITY EVEN_PARITY
|
|
||||||
|
|
||||||
#ifdef SERIAL_DELAY
|
|
||||||
// custom setup in config.h
|
|
||||||
// #define TID_SEND_ADJUST 2
|
|
||||||
// #define SERIAL_DELAY 6 // micro sec
|
|
||||||
// #define READ_WRITE_START_ADJUST 30 // cycles
|
|
||||||
// #define READ_WRITE_WIDTH_ADJUST 8 // cycles
|
|
||||||
#else
|
|
||||||
// ============ Standard setups ============
|
|
||||||
|
|
||||||
#ifndef SELECT_SOFT_SERIAL_SPEED
|
|
||||||
#define SELECT_SOFT_SERIAL_SPEED 1
|
|
||||||
// 0: about 189kbps
|
|
||||||
// 1: about 137kbps (default)
|
|
||||||
// 2: about 75kbps
|
|
||||||
// 3: about 39kbps
|
|
||||||
// 4: about 26kbps
|
|
||||||
// 5: about 20kbps
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define TID_SEND_ADJUST 14
|
|
||||||
#else
|
|
||||||
#define TID_SEND_ADJUST 2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SELECT_SOFT_SERIAL_SPEED == 0
|
|
||||||
// Very High speed
|
|
||||||
#define SERIAL_DELAY 4 // micro sec
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define READ_WRITE_START_ADJUST 33 // cycles
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 3 // cycles
|
|
||||||
#else
|
|
||||||
#define READ_WRITE_START_ADJUST 34 // cycles
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 7 // cycles
|
|
||||||
#endif
|
|
||||||
#elif SELECT_SOFT_SERIAL_SPEED == 1
|
|
||||||
// High speed
|
|
||||||
#define SERIAL_DELAY 6 // micro sec
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define READ_WRITE_START_ADJUST 30 // cycles
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 3 // cycles
|
|
||||||
#else
|
|
||||||
#define READ_WRITE_START_ADJUST 33 // cycles
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 7 // cycles
|
|
||||||
#endif
|
|
||||||
#elif SELECT_SOFT_SERIAL_SPEED == 2
|
|
||||||
// Middle speed
|
|
||||||
#define SERIAL_DELAY 12 // micro sec
|
|
||||||
#define READ_WRITE_START_ADJUST 30 // cycles
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 3 // cycles
|
|
||||||
#else
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 7 // cycles
|
|
||||||
#endif
|
|
||||||
#elif SELECT_SOFT_SERIAL_SPEED == 3
|
|
||||||
// Low speed
|
|
||||||
#define SERIAL_DELAY 24 // micro sec
|
|
||||||
#define READ_WRITE_START_ADJUST 30 // cycles
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 3 // cycles
|
|
||||||
#else
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 7 // cycles
|
|
||||||
#endif
|
|
||||||
#elif SELECT_SOFT_SERIAL_SPEED == 4
|
|
||||||
// Very Low speed
|
|
||||||
#define SERIAL_DELAY 36 // micro sec
|
|
||||||
#define READ_WRITE_START_ADJUST 30 // cycles
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 3 // cycles
|
|
||||||
#else
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 7 // cycles
|
|
||||||
#endif
|
|
||||||
#elif SELECT_SOFT_SERIAL_SPEED == 5
|
|
||||||
// Ultra Low speed
|
|
||||||
#define SERIAL_DELAY 48 // micro sec
|
|
||||||
#define READ_WRITE_START_ADJUST 30 // cycles
|
|
||||||
#if __GNUC__ < 6
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 3 // cycles
|
|
||||||
#else
|
|
||||||
#define READ_WRITE_WIDTH_ADJUST 7 // cycles
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#error invalid SELECT_SOFT_SERIAL_SPEED value
|
|
||||||
#endif /* SELECT_SOFT_SERIAL_SPEED */
|
|
||||||
#endif /* SERIAL_DELAY */
|
|
||||||
|
|
||||||
#define SERIAL_DELAY_HALF1 (SERIAL_DELAY/2)
|
|
||||||
#define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY/2)
|
|
||||||
|
|
||||||
#define SLAVE_INT_WIDTH_US 1
|
|
||||||
#ifndef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
#define SLAVE_INT_RESPONSE_TIME SERIAL_DELAY
|
|
||||||
#else
|
|
||||||
#define SLAVE_INT_ACK_WIDTH_UNIT 2
|
|
||||||
#define SLAVE_INT_ACK_WIDTH 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static SSTD_t *Transaction_table = NULL;
|
|
||||||
static uint8_t Transaction_table_size = 0;
|
|
||||||
|
|
||||||
inline static void serial_delay(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_delay(void) {
|
|
||||||
_delay_us(SERIAL_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static void serial_delay_half1(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_delay_half1(void) {
|
|
||||||
_delay_us(SERIAL_DELAY_HALF1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static void serial_delay_half2(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_delay_half2(void) {
|
|
||||||
_delay_us(SERIAL_DELAY_HALF2);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static void serial_output(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_output(void) {
|
|
||||||
SERIAL_PIN_DDR |= SERIAL_PIN_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make the serial pin an input with pull-up resistor
|
|
||||||
inline static void serial_input_with_pullup(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_input_with_pullup(void) {
|
|
||||||
SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
|
|
||||||
SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static uint8_t serial_read_pin(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
uint8_t serial_read_pin(void) {
|
|
||||||
return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static void serial_low(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_low(void) {
|
|
||||||
SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static void serial_high(void) ALWAYS_INLINE;
|
|
||||||
inline static
|
|
||||||
void serial_high(void) {
|
|
||||||
SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size)
|
|
||||||
{
|
|
||||||
Transaction_table = sstd_table;
|
|
||||||
Transaction_table_size = (uint8_t)sstd_table_size;
|
|
||||||
serial_output();
|
|
||||||
serial_high();
|
|
||||||
}
|
|
||||||
|
|
||||||
void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size)
|
|
||||||
{
|
|
||||||
Transaction_table = sstd_table;
|
|
||||||
Transaction_table_size = (uint8_t)sstd_table_size;
|
|
||||||
serial_input_with_pullup();
|
|
||||||
|
|
||||||
// Enable INT0-INT3,INT6
|
|
||||||
EIMSK |= EIMSK_BIT;
|
|
||||||
#if SERIAL_PIN_MASK == _BV(PE6)
|
|
||||||
// Trigger on falling edge of INT6
|
|
||||||
EICRB &= EICRx_BIT;
|
|
||||||
#else
|
|
||||||
// Trigger on falling edge of INT0-INT3
|
|
||||||
EICRA &= EICRx_BIT;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used by the sender to synchronize timing with the reciver.
|
|
||||||
static void sync_recv(void) NO_INLINE;
|
|
||||||
static
|
|
||||||
void sync_recv(void) {
|
|
||||||
for (uint8_t i = 0; i < SERIAL_DELAY*5 && serial_read_pin(); i++ ) {
|
|
||||||
}
|
|
||||||
// This shouldn't hang if the target disconnects because the
|
|
||||||
// serial line will float to high if the target does disconnect.
|
|
||||||
while (!serial_read_pin());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used by the reciver to send a synchronization signal to the sender.
|
|
||||||
static void sync_send(void) NO_INLINE;
|
|
||||||
static
|
|
||||||
void sync_send(void) {
|
|
||||||
serial_low();
|
|
||||||
serial_delay();
|
|
||||||
serial_high();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reads a byte from the serial line
|
|
||||||
static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) NO_INLINE;
|
|
||||||
static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) {
|
|
||||||
uint8_t byte, i, p, pb;
|
|
||||||
|
|
||||||
_delay_sub_us(READ_WRITE_START_ADJUST);
|
|
||||||
for( i = 0, byte = 0, p = PARITY; i < bit; i++ ) {
|
|
||||||
serial_delay_half1(); // read the middle of pulses
|
|
||||||
if( serial_read_pin() ) {
|
|
||||||
byte = (byte << 1) | 1; p ^= 1;
|
|
||||||
} else {
|
|
||||||
byte = (byte << 1) | 0; p ^= 0;
|
|
||||||
}
|
|
||||||
_delay_sub_us(READ_WRITE_WIDTH_ADJUST);
|
|
||||||
serial_delay_half2();
|
|
||||||
}
|
|
||||||
/* recive parity bit */
|
|
||||||
serial_delay_half1(); // read the middle of pulses
|
|
||||||
pb = serial_read_pin();
|
|
||||||
_delay_sub_us(READ_WRITE_WIDTH_ADJUST);
|
|
||||||
serial_delay_half2();
|
|
||||||
|
|
||||||
*pterrcount += (p != pb)? 1 : 0;
|
|
||||||
|
|
||||||
return byte;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sends a byte with MSB ordering
|
|
||||||
void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE;
|
|
||||||
void serial_write_chunk(uint8_t data, uint8_t bit) {
|
|
||||||
uint8_t b, p;
|
|
||||||
for( p = PARITY, b = 1<<(bit-1); b ; b >>= 1) {
|
|
||||||
if(data & b) {
|
|
||||||
serial_high(); p ^= 1;
|
|
||||||
} else {
|
|
||||||
serial_low(); p ^= 0;
|
|
||||||
}
|
|
||||||
serial_delay();
|
|
||||||
}
|
|
||||||
/* send parity bit */
|
|
||||||
if(p & 1) { serial_high(); }
|
|
||||||
else { serial_low(); }
|
|
||||||
serial_delay();
|
|
||||||
|
|
||||||
serial_low(); // sync_send() / senc_recv() need raise edge
|
|
||||||
}
|
|
||||||
|
|
||||||
static void serial_send_packet(uint8_t *buffer, uint8_t size) NO_INLINE;
|
|
||||||
static
|
|
||||||
void serial_send_packet(uint8_t *buffer, uint8_t size) {
|
|
||||||
for (uint8_t i = 0; i < size; ++i) {
|
|
||||||
uint8_t data;
|
|
||||||
data = buffer[i];
|
|
||||||
sync_send();
|
|
||||||
serial_write_chunk(data,8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) NO_INLINE;
|
|
||||||
static
|
|
||||||
uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) {
|
|
||||||
uint8_t pecount = 0;
|
|
||||||
for (uint8_t i = 0; i < size; ++i) {
|
|
||||||
uint8_t data;
|
|
||||||
sync_recv();
|
|
||||||
data = serial_read_chunk(&pecount, 8);
|
|
||||||
buffer[i] = data;
|
|
||||||
}
|
|
||||||
return pecount == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static
|
|
||||||
void change_sender2reciver(void) {
|
|
||||||
sync_send(); //0
|
|
||||||
serial_delay_half1(); //1
|
|
||||||
serial_low(); //2
|
|
||||||
serial_input_with_pullup(); //2
|
|
||||||
serial_delay_half1(); //3
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static
|
|
||||||
void change_reciver2sender(void) {
|
|
||||||
sync_recv(); //0
|
|
||||||
serial_delay(); //1
|
|
||||||
serial_low(); //3
|
|
||||||
serial_output(); //3
|
|
||||||
serial_delay_half1(); //4
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint8_t nibble_bits_count(uint8_t bits)
|
|
||||||
{
|
|
||||||
bits = (bits & 0x5) + (bits >> 1 & 0x5);
|
|
||||||
bits = (bits & 0x3) + (bits >> 2 & 0x3);
|
|
||||||
return bits;
|
|
||||||
}
|
|
||||||
|
|
||||||
// interrupt handle to be used by the target device
|
|
||||||
ISR(SERIAL_PIN_INTERRUPT) {
|
|
||||||
|
|
||||||
#ifndef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
serial_low();
|
|
||||||
serial_output();
|
|
||||||
SSTD_t *trans = Transaction_table;
|
|
||||||
#else
|
|
||||||
// recive transaction table index
|
|
||||||
uint8_t tid, bits;
|
|
||||||
uint8_t pecount = 0;
|
|
||||||
sync_recv();
|
|
||||||
bits = serial_read_chunk(&pecount,7);
|
|
||||||
tid = bits>>3;
|
|
||||||
bits = (bits&7) != nibble_bits_count(tid);
|
|
||||||
if( bits || pecount> 0 || tid > Transaction_table_size ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
serial_delay_half1();
|
|
||||||
|
|
||||||
serial_high(); // response step1 low->high
|
|
||||||
serial_output();
|
|
||||||
_delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT*SLAVE_INT_ACK_WIDTH);
|
|
||||||
SSTD_t *trans = &Transaction_table[tid];
|
|
||||||
serial_low(); // response step2 ack high->low
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// target send phase
|
|
||||||
if( trans->target2initiator_buffer_size > 0 )
|
|
||||||
serial_send_packet((uint8_t *)trans->target2initiator_buffer,
|
|
||||||
trans->target2initiator_buffer_size);
|
|
||||||
// target switch to input
|
|
||||||
change_sender2reciver();
|
|
||||||
|
|
||||||
// target recive phase
|
|
||||||
if( trans->initiator2target_buffer_size > 0 ) {
|
|
||||||
if (serial_recive_packet((uint8_t *)trans->initiator2target_buffer,
|
|
||||||
trans->initiator2target_buffer_size) ) {
|
|
||||||
*trans->status = TRANSACTION_ACCEPTED;
|
|
||||||
} else {
|
|
||||||
*trans->status = TRANSACTION_DATA_ERROR;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
*trans->status = TRANSACTION_ACCEPTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_recv(); //weit initiator output to high
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////
|
|
||||||
// start transaction by initiator
|
|
||||||
//
|
|
||||||
// int soft_serial_transaction(int sstd_index)
|
|
||||||
//
|
|
||||||
// Returns:
|
|
||||||
// TRANSACTION_END
|
|
||||||
// TRANSACTION_NO_RESPONSE
|
|
||||||
// TRANSACTION_DATA_ERROR
|
|
||||||
// this code is very time dependent, so we need to disable interrupts
|
|
||||||
#ifndef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
int soft_serial_transaction(void) {
|
|
||||||
SSTD_t *trans = Transaction_table;
|
|
||||||
#else
|
|
||||||
int soft_serial_transaction(int sstd_index) {
|
|
||||||
if( sstd_index > Transaction_table_size )
|
|
||||||
return TRANSACTION_TYPE_ERROR;
|
|
||||||
SSTD_t *trans = &Transaction_table[sstd_index];
|
|
||||||
#endif
|
|
||||||
cli();
|
|
||||||
|
|
||||||
// signal to the target that we want to start a transaction
|
|
||||||
serial_output();
|
|
||||||
serial_low();
|
|
||||||
_delay_us(SLAVE_INT_WIDTH_US);
|
|
||||||
|
|
||||||
#ifndef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
// wait for the target response
|
|
||||||
serial_input_with_pullup();
|
|
||||||
_delay_us(SLAVE_INT_RESPONSE_TIME);
|
|
||||||
|
|
||||||
// check if the target is present
|
|
||||||
if (serial_read_pin()) {
|
|
||||||
// target failed to pull the line low, assume not present
|
|
||||||
serial_output();
|
|
||||||
serial_high();
|
|
||||||
*trans->status = TRANSACTION_NO_RESPONSE;
|
|
||||||
sei();
|
|
||||||
return TRANSACTION_NO_RESPONSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
// send transaction table index
|
|
||||||
int tid = (sstd_index<<3) | (7 & nibble_bits_count(sstd_index));
|
|
||||||
sync_send();
|
|
||||||
_delay_sub_us(TID_SEND_ADJUST);
|
|
||||||
serial_write_chunk(tid, 7);
|
|
||||||
serial_delay_half1();
|
|
||||||
|
|
||||||
// wait for the target response (step1 low->high)
|
|
||||||
serial_input_with_pullup();
|
|
||||||
while( !serial_read_pin() ) {
|
|
||||||
_delay_sub_us(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if the target is present (step2 high->low)
|
|
||||||
for( int i = 0; serial_read_pin(); i++ ) {
|
|
||||||
if (i > SLAVE_INT_ACK_WIDTH + 1) {
|
|
||||||
// slave failed to pull the line low, assume not present
|
|
||||||
serial_output();
|
|
||||||
serial_high();
|
|
||||||
*trans->status = TRANSACTION_NO_RESPONSE;
|
|
||||||
sei();
|
|
||||||
return TRANSACTION_NO_RESPONSE;
|
|
||||||
}
|
|
||||||
_delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// initiator recive phase
|
|
||||||
// if the target is present syncronize with it
|
|
||||||
if( trans->target2initiator_buffer_size > 0 ) {
|
|
||||||
if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer,
|
|
||||||
trans->target2initiator_buffer_size) ) {
|
|
||||||
serial_output();
|
|
||||||
serial_high();
|
|
||||||
*trans->status = TRANSACTION_DATA_ERROR;
|
|
||||||
sei();
|
|
||||||
return TRANSACTION_DATA_ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// initiator switch to output
|
|
||||||
change_reciver2sender();
|
|
||||||
|
|
||||||
// initiator send phase
|
|
||||||
if( trans->initiator2target_buffer_size > 0 ) {
|
|
||||||
serial_send_packet((uint8_t *)trans->initiator2target_buffer,
|
|
||||||
trans->initiator2target_buffer_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
// always, release the line when not in use
|
|
||||||
sync_send();
|
|
||||||
|
|
||||||
*trans->status = TRANSACTION_END;
|
|
||||||
sei();
|
|
||||||
return TRANSACTION_END;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef SERIAL_USE_MULTI_TRANSACTION
|
|
||||||
int soft_serial_get_and_clean_status(int sstd_index) {
|
|
||||||
SSTD_t *trans = &Transaction_table[sstd_index];
|
|
||||||
cli();
|
|
||||||
int retval = *trans->status;
|
|
||||||
*trans->status = 0;;
|
|
||||||
sei();
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Helix serial.c history
|
|
||||||
// 2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc)
|
|
||||||
// 2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4)
|
|
||||||
// (adjusted with avr-gcc 4.9.2)
|
|
||||||
// 2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78)
|
|
||||||
// (adjusted with avr-gcc 4.9.2)
|
|
||||||
// 2018-8-11 add support multi-type transaction (#3608, feb5e4aae)
|
|
||||||
// (adjusted with avr-gcc 4.9.2)
|
|
||||||
// 2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff)
|
|
||||||
// (adjusted with avr-gcc 7.3.0)
|
|
||||||
// 2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66)
|
|
||||||
// (adjusted with avr-gcc 5.4.0, 7.3.0)
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/* Copyright 2020 Paul James
|
||||||
|
*
|
||||||
|
* 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 0x706A
|
||||||
|
#define PRODUCT_ID 0x0002
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Peej
|
||||||
|
#define PRODUCT Lumberjack
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
#define MATRIX_ROW_PINS { C0, B5, B4, B3, B2, B1 }
|
||||||
|
#define MATRIX_COL_PINS { B0, D7, D6, D5, D4, D1, D0, C1, C2, C3 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 100
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Lumberjack",
|
||||||
|
"url": "https://github.com/peej/lumberjack-keyboard",
|
||||||
|
"maintainer": "Peej",
|
||||||
|
"width": 12,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_5x12": {
|
||||||
|
"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": 0, "y": 1 },
|
||||||
|
{ "x": 1, "y": 1 },
|
||||||
|
{ "x": 2, "y": 1 },
|
||||||
|
{ "x": 3, "y": 1 },
|
||||||
|
{ "x": 4, "y": 1 },
|
||||||
|
{ "x": 5, "y": 1 },
|
||||||
|
{ "x": 6, "y": 1 },
|
||||||
|
{ "x": 7, "y": 1 },
|
||||||
|
{ "x": 8, "y": 1 },
|
||||||
|
{ "x": 9, "y": 1 },
|
||||||
|
{ "x": 10, "y": 1 },
|
||||||
|
{ "x": 11, "y": 1 },
|
||||||
|
{ "x": 0, "y": 2 },
|
||||||
|
{ "x": 1, "y": 2 },
|
||||||
|
{ "x": 2, "y": 2 },
|
||||||
|
{ "x": 3, "y": 2 },
|
||||||
|
{ "x": 4, "y": 2 },
|
||||||
|
{ "x": 5, "y": 2 },
|
||||||
|
{ "x": 6, "y": 2 },
|
||||||
|
{ "x": 7, "y": 2 },
|
||||||
|
{ "x": 8, "y": 2 },
|
||||||
|
{ "x": 9, "y": 2 },
|
||||||
|
{ "x": 10, "y": 2 },
|
||||||
|
{ "x": 11, "y": 2 },
|
||||||
|
{ "x": 0, "y": 3 },
|
||||||
|
{ "x": 1, "y": 3 },
|
||||||
|
{ "x": 2, "y": 3 },
|
||||||
|
{ "x": 3, "y": 3 },
|
||||||
|
{ "x": 4, "y": 3 },
|
||||||
|
{ "x": 5, "y": 3 },
|
||||||
|
{ "x": 6, "y": 3 },
|
||||||
|
{ "x": 7, "y": 3 },
|
||||||
|
{ "x": 8, "y": 3 },
|
||||||
|
{ "x": 9, "y": 3 },
|
||||||
|
{ "x": 10, "y": 3 },
|
||||||
|
{ "x": 11, "y": 3 },
|
||||||
|
{ "x": 0, "y": 4 },
|
||||||
|
{ "x": 1, "y": 4 },
|
||||||
|
{ "x": 2, "y": 4 },
|
||||||
|
{ "x": 3, "y": 4 },
|
||||||
|
{ "x": 4, "y": 4 },
|
||||||
|
{ "x": 5, "y": 4 },
|
||||||
|
{ "x": 6, "y": 4 },
|
||||||
|
{ "x": 7, "y": 4 },
|
||||||
|
{ "x": 8, "y": 4 },
|
||||||
|
{ "x": 9, "y": 4 },
|
||||||
|
{ "x": 10, "y": 4 },
|
||||||
|
{ "x": 11, "y": 4 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
/* Copyright 2020 Paul James
|
||||||
|
*
|
||||||
|
* 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 = 0,
|
||||||
|
_FUNCTION
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FN MO(_FUNCTION)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Del |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Shft | Z | X | C | V | B | | N | M | , | . | / | Entr |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Ctrl | Fn | Alt | Cmd | Fn | Spac | | Spac | Fn | Left | Down | Up | Rght |
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT_ortho_5x12(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_DEL,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||||
|
KC_LCTL, FN, KC_LALT, KC_LGUI, FN, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Function
|
||||||
|
* ,------------------------------------------. ,-----------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Del | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | | F12 |ISO # |ISO / | | | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_FUNCTION] = LAYOUT_ortho_5x12(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/* Copyright 2020 Paul James
|
||||||
|
*
|
||||||
|
* 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_5x12(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_DEL,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||||
|
KC_LCTL, MO(2), KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_ortho_5x12(
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
[2] = LAYOUT_ortho_5x12(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
[3] = LAYOUT_ortho_5x12(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright 2020 Paul James
|
||||||
|
*
|
||||||
|
* 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 "lumberjack.h"
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
writePin(LED1, record->event.pressed);
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||||
|
writePinLow(LED1);
|
||||||
|
writePin(LED2, state);
|
||||||
|
|
||||||
|
return layer_state_set_user(state);
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* Copyright 2020 Paul James
|
||||||
|
*
|
||||||
|
* 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_ortho_5x12( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k0b, k0a, k09, k08, k07 }, \
|
||||||
|
{ k10, k11, k12, k13, k05, k1b, k1a, k19, k18, k06 }, \
|
||||||
|
{ k20, k21, k22, k14, k15, k2b, k2a, k29, k17, k16 }, \
|
||||||
|
{ k30, k31, k23, k24, k25, k3b, k3a, k28, k27, k26 }, \
|
||||||
|
{ k40, k32, k33, k34, k35, k4b, k39, k38, k37, k36 }, \
|
||||||
|
{ k41, k42, k43, k44, k45, k4a, k49, k48, k47, k46 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LED1 C5
|
||||||
|
#define LED2 C4
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Lumberjack ## Through-hole ortholinear 60% keyboard PCB
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
12x5 ortholinear PCB for 60% tray mount cases with only through hole components.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Paul James](https://github.com/peej)
|
||||||
|
* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/peej/lumberjack-keyboard)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make peej/lumberjack:default
|
||||||
|
|
||||||
|
## Bootloader
|
||||||
|
|
||||||
|
Use usbasploader in [hsgw's repository](https://github.com/hsgw/USBaspLoader/tree/plaid).
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega328p
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = USBasp
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
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
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = ortho_5x12
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright 2021 MCKeebs <[email protected]>
|
||||||
|
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 0x4D43 // MCKeebs
|
||||||
|
#define PRODUCT_ID 0x6060
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER MCKeebs
|
||||||
|
#define PRODUCT PKB65
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
/* key matrix pins */
|
||||||
|
#define MATRIX_ROW_PINS { C7, C6, B6, B7, F0 }
|
||||||
|
#define MATRIX_COL_PINS { B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_PIN
|
||||||
|
#define BACKLIGHT_LEVELS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 0
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "PKB65",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 16,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"Backspace", "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":"Delete", "x":15, "y":2},
|
||||||
|
{"label":"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":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"\u2191", "x":14, "y":3},
|
||||||
|
{"label":"PrtSc", "x":15, "y":3},
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"Fn", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"\u2190", "x":13, "y":4},
|
||||||
|
{"label":"\u2193", "x":14, "y":4},
|
||||||
|
{"label":"\u2192", "x":15, "y":4}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright 2021 MCKeebs <[email protected]>
|
||||||
|
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] = {
|
||||||
|
|
||||||
|
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_END,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_DEL,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
LAYOUT(
|
||||||
|
KC_GRAVE, 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_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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),
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright 2021 MCKeebs <[email protected]>
|
||||||
|
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] = {
|
||||||
|
|
||||||
|
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_DEL,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PSCR,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
LAYOUT(
|
||||||
|
KC_GRAVE, 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_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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),
|
||||||
|
|
||||||
|
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),
|
||||||
|
|
||||||
|
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),
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright 2021 MCKeebs <[email protected]>
|
||||||
|
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 "pkb65.h"
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright 2021 MCKeebs <[email protected]>
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
|
||||||
|
K400, K401, K402, K405, K409, K410, K411, K412, K413 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \
|
||||||
|
{ K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, K412, K413 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# PKB65
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A regular 65% layout keyboard. This will be the default layout flashed for all pkb65 boards.
|
||||||
|
Made and sold by MCKeebs. [More info on MCKeebDeisgn](https://www.mckeebdesign.com)
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [MCKeebs](https://github.com/chrisquocmai)
|
||||||
|
* Hardware Supported: [PKB65 PCB](https://https://mckeebdesign.com/PKB65/)
|
||||||
|
* Hardware Availability: [PKB65](https://mckeebdesign.com/PKB65/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment:
|
||||||
|
|
||||||
|
make pkb65: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).
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
|
||||||
|
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 = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -232,7 +232,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
// Colemak DM-MK Mod
|
// Colemak DH-MK Mod
|
||||||
[_COLEMAKDHMK] = LAYOUT(
|
[_COLEMAKDHMK] = LAYOUT(
|
||||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
|
XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
|
||||||
@@ -247,7 +247,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
|
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
|
||||||
),
|
),
|
||||||
|
|
||||||
// Colemak DM-MK Mod, Mac version (CTRL and GUI are swapped)
|
// Colemak DH-MK Mod, Mac version (CTRL and GUI are swapped)
|
||||||
[_COLEMAKDHMK_MAC] = LAYOUT(
|
[_COLEMAKDHMK_MAC] = LAYOUT(
|
||||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
|
XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 sendyyeah
|
||||||
|
*
|
||||||
|
* 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 "bevi.h"
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* Copyright 2021 sendyyeah
|
||||||
|
*
|
||||||
|
* 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(\
|
||||||
|
K94 , K00 , K10 , K01 , K11 , K02 , K12 , K03 , K13 , K04 , K14 , K05 , K15 , K06 , K16 , K07 , K17 , K97 , K85 , \
|
||||||
|
K84 , K20 , K30 , K21 , K31 , K22 , K32 , K23 , K33 , K24 , K34 , K25 , K35 , K26 , K36 , K27 , K37 , K77 , \
|
||||||
|
K40 , K50 , K41 , K51 , K42 , K52 , K43 , K53 , K44 , K54 , K45 , K55 , K46 , K56 , K47 , K57 , \
|
||||||
|
K93 , K60 , K70 , K61 , K71 , K62 , K72 , K63 , K73 , K64 , K74 , K65 , K75 , K66 , K76 , K67 , \
|
||||||
|
K80 , K90 , K81 , K91 , K82 , K92 , K83 , K95 , K86 , K96 , K87 \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
|
||||||
|
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
|
||||||
|
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \
|
||||||
|
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
|
||||||
|
{ K70, K71, K72, K73, K74, K75, K76, K77 }, \
|
||||||
|
{ K80, K81, K82, K83, K84, K85, K86, K87 }, \
|
||||||
|
{ K90, K91, K92, K93, K94, K95, K96, K97 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/* Copyright 2021 sendyyeah
|
||||||
|
*
|
||||||
|
* 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 0x5359
|
||||||
|
#define PRODUCT_ID 0x4256
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER sendyyeah
|
||||||
|
#define PRODUCT beVi
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B3, B2, D3, D2, D1, D0, D4, C6, D7, E6 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B6, B4, B5 }
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
Loaded 100 of 151 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user