aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDA <56441863+duongaanh@users.noreply.github.com>2022-01-14 11:37:40 +0700
committerGitHub <noreply@github.com>2022-01-13 20:37:40 -0800
commit851cb7e406ec775462b9eb9975f1b0f34445b48f (patch)
tree3f88242b1dc9a4f0d31f786591c3364cc3e81473
parent5d51fd4015151c900e79fefc8ece887ce213fae3 (diff)
downloadqmk_firmware-851cb7e406ec775462b9eb9975f1b0f34445b48f.tar.gz
qmk_firmware-851cb7e406ec775462b9eb9975f1b0f34445b48f.zip
[Keyboard] and CB87v2 and CB87RGB and fixed CB1800 and CB87 (#15824)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--keyboards/cherrybstudio/cb1800/config.h2
-rw-r--r--keyboards/cherrybstudio/cb87/config.h2
-rw-r--r--keyboards/cherrybstudio/cb87rgb/cb87rgb.c60
-rw-r--r--keyboards/cherrybstudio/cb87rgb/cb87rgb.h37
-rw-r--r--keyboards/cherrybstudio/cb87rgb/config.h106
-rw-r--r--keyboards/cherrybstudio/cb87rgb/info.json102
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c34
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md1
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c51
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk2
-rw-r--r--keyboards/cherrybstudio/cb87rgb/readme.md26
-rw-r--r--keyboards/cherrybstudio/cb87rgb/rules.mk21
-rw-r--r--keyboards/cherrybstudio/cb87v2/cb87v2.c14
-rw-r--r--keyboards/cherrybstudio/cb87v2/cb87v2.h36
-rw-r--r--keyboards/cherrybstudio/cb87v2/config.h74
-rw-r--r--keyboards/cherrybstudio/cb87v2/info.json103
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c34
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md1
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c51
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk2
-rw-r--r--keyboards/cherrybstudio/cb87v2/readme.md26
-rw-r--r--keyboards/cherrybstudio/cb87v2/rules.mk18
22 files changed, 802 insertions, 1 deletions
diff --git a/keyboards/cherrybstudio/cb1800/config.h b/keyboards/cherrybstudio/cb1800/config.h
index 81d24669d..a9932fe73 100644
--- a/keyboards/cherrybstudio/cb1800/config.h
+++ b/keyboards/cherrybstudio/cb1800/config.h
@@ -48,7 +48,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48#define LED_CAPS_LOCK_PIN F5 48#define LED_CAPS_LOCK_PIN F5
49#define LED_NUM_LOCK_PIN F6 49#define LED_NUM_LOCK_PIN F6
50#define LED_SCROLL_LOCK_PIN F7 50#define LED_SCROLL_LOCK_PIN F7
51 51#define LED_PIN_ON_STATE 0
52 52
53/* Set 0 if debouncing isn't needed */ 53/* Set 0 if debouncing isn't needed */
54#define DEBOUNCE 5 54#define DEBOUNCE 5
diff --git a/keyboards/cherrybstudio/cb87/config.h b/keyboards/cherrybstudio/cb87/config.h
index 41a153081..41c7f3f25 100644
--- a/keyboards/cherrybstudio/cb87/config.h
+++ b/keyboards/cherrybstudio/cb87/config.h
@@ -49,6 +49,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49#endif 49#endif
50 50
51#define LED_CAPS_LOCK_PIN F0 51#define LED_CAPS_LOCK_PIN F0
52#define LED_SCROLL_LOCK_PIN F4
53#define LED_PIN_ON_STATE 0
52 54
53/* Set 0 if debouncing isn't needed */ 55/* Set 0 if debouncing isn't needed */
54#define DEBOUNCE 5 56#define DEBOUNCE 5
diff --git a/keyboards/cherrybstudio/cb87rgb/cb87rgb.c b/keyboards/cherrybstudio/cb87rgb/cb87rgb.c
new file mode 100644
index 000000000..362a99165
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/cb87rgb.c
@@ -0,0 +1,60 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#include "cb87rgb.h"
15
16//x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION
17//y = 64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION
18
19#ifdef RGB_MATRIX_ENABLE
20led_config_t g_led_config = { {
21 // Key Matrix to LED Index
22 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
23 { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
24 { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
25 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 },
26 { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 },
27 { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 },
28 { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },
29 { 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 },
30 { 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 },
31 { 90, 91, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
32}, {
33 // LED Index to Physical Position
34 { 0, 0 }, { 13, 0 }, { 26, 0 }, { 39, 0 }, { 52, 0 }, { 65, 0 }, { 78, 0 }, { 91, 0 }, { 104, 0 }, { 117, 0 }, { 130, 0 }, { 143, 0 }, { 156, 0 }, { 195, 0 }, { 208, 0 }, { 224, 0 },
35 { 0, 12 }, { 13, 12 }, { 26, 12 }, { 39, 12 }, { 52, 12 }, { 65, 12 }, { 78, 12 }, { 91, 12 }, { 104, 12 }, { 117, 12 }, { 130, 12 }, { 143, 12 }, { 156, 12 }, { 169, 12 }, { 182, 24 }, { 195, 12 }, { 208, 12 }, { 224, 12 },
36 { 0, 24 }, { 13, 24 }, { 26, 24 }, { 39, 24 }, { 52, 24 }, { 65, 24 }, { 78, 24 }, { 91, 24 }, { 104, 24 }, { 117, 24 }, { 130, 24 }, { 143, 24 }, { 156, 24 }, { 169, 24 }, { 195, 24 }, { 208, 24 }, { 224, 24 },
37 { 0, 36 }, { 13, 36 }, { 26, 36 }, { 39, 36 }, { 52, 36 }, { 65, 36 }, { 78, 36 }, { 91, 36 }, { 104, 36 }, { 117, 36 }, { 130, 36 }, { 143, 36 }, { 156, 36 }, { 169, 36 },
38 { 0, 48 }, { 13, 48 }, { 26, 48 }, { 39, 48 }, { 52, 48 }, { 65, 48 }, { 78, 48 }, { 91, 48 }, { 104, 48 }, { 117, 48 }, { 130, 48 }, { 143, 48 }, { 156, 48 }, { 169, 48 }, { 208, 48 },
39 { 0, 64 }, { 13, 64 }, { 26, 64 }, { 78, 64 }, { 130, 64 }, { 143, 64 }, { 156, 64 }, { 169, 64 }, { 195, 64 }, { 208, 64 }, { 224, 64 }, { 182, 0 }
40}, {
41 // LED Index to Flag
42 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
43 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
44 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
45 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
46 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
47 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
48
49} };
50
51__attribute__ ((weak))
52void rgb_matrix_indicators_user(void) {
53 if (host_keyboard_led_state().caps_lock) {
54 rgb_matrix_set_color(51, 255, 255, 255);
55 }
56 if (host_keyboard_led_state().scroll_lock) {
57 rgb_matrix_set_color(14, 255, 255, 255);
58 }
59}
60#endif
diff --git a/keyboards/cherrybstudio/cb87rgb/cb87rgb.h b/keyboards/cherrybstudio/cb87rgb/cb87rgb.h
new file mode 100644
index 000000000..16702e516
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/cb87rgb.h
@@ -0,0 +1,37 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#pragma once
15
16#include "quantum.h"
17
18#define LAYOUT_all( \
19 K000, K001, K002, K003,K004, K005, K006, K007,K008, K009, K100, K101, K102, K901, K103, K104, K105, \
20 K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, K303, \
21 K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K500, \
22 K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, K604, \
23 K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, \
24 K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K900 \
25) { \
26 { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, }, \
27 { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, }, \
28 { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, }, \
29 { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, }, \
30 { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, }, \
31 { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, }, \
32 { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, }, \
33 { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, }, \
34 { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, }, \
35 { K900, K901 } \
36}
37
diff --git a/keyboards/cherrybstudio/cb87rgb/config.h b/keyboards/cherrybstudio/cb87rgb/config.h
new file mode 100644
index 000000000..ccf7aceee
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/config.h
@@ -0,0 +1,106 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#pragma once
15
16#include "config_common.h"
17
18/* USB Device descriptor parameter */
19#define VENDOR_ID 0x4342 // CB
20#define PRODUCT_ID 0x8785
21#define DEVICE_VER 0x0001
22#define MANUFACTURER CherryB.Studio
23#define PRODUCT CB87RGB
24
25/* key matrix size */
26#define MATRIX_ROWS 10
27#define MATRIX_COLS 10
28
29/*
30 * Keyboard Matrix Assignments
31 *
32 * Change this to how you wired your keyboard
33 * COLS: AVR pins used for columns, left to right
34 * ROWS: AVR pins used for rows, top to bottom
35 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
36 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
37 *
38 * 0 1 2 3 4 5 6 7 8 9
39*/
40#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, F6 }
41#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 }
42//#define UNUSED_PINS
43
44/* COL2ROW, ROW2COL*/
45#define DIODE_DIRECTION COL2ROW
46
47
48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCE 5
50
51#define RGB_DI_PIN E6
52#define DRIVER_LED_TOTAL 92
53#define RGB_DISABLE_WHEN_USB_SUSPENDED
54#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
55#define RGB_MATRIX_LED_FLUSH_LIMIT 16
56#define RGB_MATRIX_KEYPRESSES
57
58// RGB Matrix Animation modes. Explicitly enabled
59// For full list of effects, see:
60// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
61# define ENABLE_RGB_MATRIX_ALPHAS_MODS
62# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
63# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
64# define ENABLE_RGB_MATRIX_BREATHING
65# define ENABLE_RGB_MATRIX_BAND_SAT
66# define ENABLE_RGB_MATRIX_BAND_VAL
67# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
68# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
69# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
70# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
71# define ENABLE_RGB_MATRIX_CYCLE_ALL
72# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
73# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
74# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
75# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
76# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
77# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
78# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
79# define ENABLE_RGB_MATRIX_DUAL_BEACON
80# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
81# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
82# define ENABLE_RGB_MATRIX_RAINDROPS
83# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
84# define ENABLE_RGB_MATRIX_HUE_BREATHING
85# define ENABLE_RGB_MATRIX_HUE_PENDULUM
86# define ENABLE_RGB_MATRIX_HUE_WAVE
87# define ENABLE_RGB_MATRIX_PIXEL_RAIN
88# define ENABLE_RGB_MATRIX_PIXEL_FLOW
89# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
90// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
91# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
92# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
93// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
94# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
95# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
96# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
97# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
98# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
99# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
100# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
101# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
102# define ENABLE_RGB_MATRIX_SPLASH
103# define ENABLE_RGB_MATRIX_MULTISPLASH
104# define ENABLE_RGB_MATRIX_SOLID_SPLASH
105# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
106
diff --git a/keyboards/cherrybstudio/cb87rgb/info.json b/keyboards/cherrybstudio/cb87rgb/info.json
new file mode 100644
index 000000000..e183066bd
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/info.json
@@ -0,0 +1,102 @@
1 {
2 "keyboard_name": "cb87v2",
3 "url": "https://discord.gg/qVwv3gcq83",
4 "maintainer": "duongaanh",
5 "layouts": {
6 "LAYOUT_all": {
7 "layout": [
8 {"label":"Esc", "x":0, "y":0},
9 {"label":"F1", "x":1.25, "y":0},
10 {"label":"F2", "x":2.25, "y":0},
11 {"label":"F3", "x":3.25, "y":0},
12 {"label":"F4", "x":4.25, "y":0},
13 {"label":"F5", "x":5.5, "y":0},
14 {"label":"F6", "x":6.5, "y":0},
15 {"label":"F7", "x":7.5, "y":0},
16 {"label":"F8", "x":8.5, "y":0},
17 {"label":"F9", "x":9.75, "y":0},
18 {"label":"F10", "x":10.75, "y":0},
19 {"label":"F11", "x":11.75, "y":0},
20 {"label":"F12", "x":12.75, "y":0},
21 {"label":"Esc", "x":14, "y":0},
22 {"label":"PrtSc", "x":15.25, "y":0},
23 {"label":"Scroll Lock", "x":16.25, "y":0},
24 {"label":"Pause", "x":17.25, "y":0},
25 {"label":"~", "x":0, "y":1.5},
26 {"label":"!", "x":1, "y":1.5},
27 {"label":"@", "x":2, "y":1.5},
28 {"label":"#", "x":3, "y":1.5},
29 {"label":"$", "x":4, "y":1.5},
30 {"label":"%", "x":5, "y":1.5},
31 {"label":"^", "x":6, "y":1.5},
32 {"label":"&", "x":7, "y":1.5},
33 {"label":"*", "x":8, "y":1.5},
34 {"label":"(", "x":9, "y":1.5},
35 {"label":")", "x":10, "y":1.5},
36 {"label":"_", "x":11, "y":1.5},
37 {"label":"+", "x":12, "y":1.5},
38 {"label":"Backspace", "x":13, "y":1.5},
39 {"label":"Backspace", "x":14, "y":1.5},
40 {"label":"Insert", "x":15.25, "y":1.5},
41 {"label":"Home", "x":16.25, "y":1.5},
42 {"label":"PgUp", "x":17.25, "y":1.5},
43 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
44 {"label":"Q", "x":1.5, "y":2.5},
45 {"label":"W", "x":2.5, "y":2.5},
46 {"label":"E", "x":3.5, "y":2.5},
47 {"label":"R", "x":4.5, "y":2.5},
48 {"label":"T", "x":5.5, "y":2.5},
49 {"label":"Y", "x":6.5, "y":2.5},
50 {"label":"U", "x":7.5, "y":2.5},
51 {"label":"I", "x":8.5, "y":2.5},
52 {"label":"O", "x":9.5, "y":2.5},
53 {"label":"P", "x":10.5, "y":2.5},
54 {"label":"{", "x":11.5, "y":2.5},
55 {"label":"}", "x":12.5, "y":2.5},
56 {"label":"|", "x":13.5, "y":2.5, "w":1.5},
57 {"label":"Delete", "x":15.25, "y":2.5},
58 {"label":"End", "x":16.25, "y":2.5},
59 {"label":"PgDn", "x":17.25, "y":2.5},
60 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
61 {"label":"A", "x":1.75, "y":3.5},
62 {"label":"S", "x":2.75, "y":3.5},
63 {"label":"D", "x":3.75, "y":3.5},
64 {"label":"F", "x":4.75, "y":3.5},
65 {"label":"G", "x":5.75, "y":3.5},
66 {"label":"H", "x":6.75, "y":3.5},
67 {"label":"J", "x":7.75, "y":3.5},
68 {"label":"K", "x":8.75, "y":3.5},
69 {"label":"L", "x":9.75, "y":3.5},
70 {"label":":", "x":10.75, "y":3.5},
71 {"label":"\"", "x":11.75, "y":3.5},
72 {"label":"ISO~", "x":12.75, "y":3.5},
73 {"label":"Enter", "x":13.75, "y":3.5, "w":1.25},
74 {"label":"LShift", "x":0, "y":4.5, "w":1.25},
75 {"label":"ISO|", "x":1.25, "y":4.5},
76 {"label":"Z", "x":2.25, "y":4.5},
77 {"label":"X", "x":3.25, "y":4.5},
78 {"label":"C", "x":4.25, "y":4.5},
79 {"label":"V", "x":5.25, "y":4.5},
80 {"label":"B", "x":6.25, "y":4.5},
81 {"label":"N", "x":7.25, "y":4.5},
82 {"label":"M", "x":8.25, "y":4.5},
83 {"label":"<", "x":9.25, "y":4.5},
84 {"label":">", "x":10.25, "y":4.5},
85 {"label":"?", "x":11.25, "y":4.5},
86 {"label":"RShift", "x":12.25, "y":4.5, "w":1.75},
87 {"label":"RShift", "x":14, "y":4.5},
88 {"label":"Up", "x":16.25, "y":4.5},
89 {"label":"LCtrl", "x":0, "y":5.5, "w":1.25},
90 {"label":"LWin", "x":1.25, "y":5.5, "w":1.25},
91 {"label":"LAlt", "x":2.5, "y":5.5, "w":1.25},
92 {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
93 {"label":"RAlt", "x":10, "y":5.5, "w":1.25},
94 {"label":"RWin", "x":11.25, "y":5.5, "w":1.25},
95 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
96 {"label":"RCtrl", "x":13.75, "y":5.5, "w":1.25},
97 {"label":"Left", "x":15.25, "y":5.5},
98 {"label":"Down", "x":16.25, "y":5.5},
99 {"label":"Right", "x":17.25, "y":5.5}]
100 }
101 }
102 }
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000..343c3ebc1
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#include QMK_KEYBOARD_H
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17 [0] = LAYOUT_all(
18 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, RESET, KC_PSCR, KC_SLCK, KC_PAUS,
19 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
20 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,
21 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,
22 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_RSFT, KC_UP,
23 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
24 ),
25 [1] = LAYOUT_all(
26 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
27 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
32 ),
33
34};
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md
new file mode 100644
index 000000000..d68382007
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for cb1800 \ No newline at end of file
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c
new file mode 100644
index 000000000..56646b57c
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
1/*
2Copyright 2020 Tybera
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11You should have received a copy of the GNU General Public License
12along with this program. If not, see <http://www.gnu.org/licenses/>.
13*/
14
15#include QMK_KEYBOARD_H
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 [0] = LAYOUT_all(
19 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_ESC, KC_PSCR, KC_SLCK, KC_PAUS,
20 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
21 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,
22 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,
23 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_RSFT, KC_UP,
24 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
25 ),
26 [1] = LAYOUT_all(
27 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
33 ),
34 [2] = LAYOUT_all(
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
41 ),
42 [3] = LAYOUT_all(
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
49 ),
50};
51
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk
new file mode 100644
index 000000000..ca9fed0e6
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1LTO_ENABLE = yes
2VIA_ENABLE = yes
diff --git a/keyboards/cherrybstudio/cb87rgb/readme.md b/keyboards/cherrybstudio/cb87rgb/readme.md
new file mode 100644
index 000000000..f7c9985d8
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/readme.md
@@ -0,0 +1,26 @@
1# CherryB Studio CB87RGB
2
3![cb87rgb](https://i.imgur.com/wG1qS4I.jpg)
4
5A RGB TKL PCB including hotswap and solderable variant for CherryB Studio NEO87 and many compatible TKLs
6
7* Keyboard Maintainer: duongaanh
8* Hardware Supported: cb87rgb, atmega32u4
9* Hardware Availability: [CherryB Studio](https://discord.gg/3gsCa8K)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make cherrybstudio/cb87rgb:default
14
15Flashing example for this keyboard:
16
17 make cherrybstudio/cb87rgb:default:flash
18
19## Accessing Bootloader Mode
20
21To access Bootloader Mode, do one of the following:
22
23* Tap the Reset switch mounted on the top side of the PCB to the left of the spacebar
24* Hold the top left key of the keyboard while connecting the USB cable
25
26See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cherrybstudio/cb87rgb/rules.mk b/keyboards/cherrybstudio/cb87rgb/rules.mk
new file mode 100644
index 000000000..9f610c8a9
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/rules.mk
@@ -0,0 +1,21 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = yes # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19
20RGB_MATRIX_ENABLE = yes
21RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/cherrybstudio/cb87v2/cb87v2.c b/keyboards/cherrybstudio/cb87v2/cb87v2.c
new file mode 100644
index 000000000..8d2fbba40
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/cb87v2.c
@@ -0,0 +1,14 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#include "cb87v2.h"
diff --git a/keyboards/cherrybstudio/cb87v2/cb87v2.h b/keyboards/cherrybstudio/cb87v2/cb87v2.h
new file mode 100644
index 000000000..9f60aa6b5
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/cb87v2.h
@@ -0,0 +1,36 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#pragma once
15
16#include "quantum.h"
17
18#define LAYOUT_all( \
19 K000, K001, K002, K003,K004, K005, K006, K007,K008, K009, K100, K101, K102, K103, K104, K105, \
20 K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, K303, \
21 K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K500, \
22 K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, K604, \
23 K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, \
24 K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K900, K901, K902 \
25) { \
26 { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, }, \
27 { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, }, \
28 { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, }, \
29 { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, }, \
30 { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, }, \
31 { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, }, \
32 { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, }, \
33 { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, }, \
34 { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, }, \
35 { K900, K901, K902 } \
36}
diff --git a/keyboards/cherrybstudio/cb87v2/config.h b/keyboards/cherrybstudio/cb87v2/config.h
new file mode 100644
index 000000000..782262ebf
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/config.h
@@ -0,0 +1,74 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#pragma once
15
16#include "config_common.h"
17
18/* USB Device descriptor parameter */
19#define VENDOR_ID 0x4342 // CB
20#define PRODUCT_ID 0x8788
21#define DEVICE_VER 0x0001
22#define MANUFACTURER CherryB.Studio
23#define PRODUCT CB87v2
24
25/* key matrix size */
26#define MATRIX_ROWS 10
27#define MATRIX_COLS 10
28
29/*
30 * Keyboard Matrix Assignments
31 *
32 * Change this to how you wired your keyboard
33 * COLS: AVR pins used for columns, left to right
34 * ROWS: AVR pins used for rows, top to bottom
35 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
36 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
37 *
38 * 0 1 2 3 4 5 6 7 8 9
39*/
40#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, F6 }
41#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 }
42//#define UNUSED_PINS
43
44/* COL2ROW, ROW2COL*/
45#define DIODE_DIRECTION COL2ROW
46#define LED_CAPS_LOCK_PIN F0
47#define LED_SCROLL_LOCK_PIN F4
48#define LED_PIN_ON_STATE 0
49#define BACKLIGHT_PIN B6
50#ifdef BACKLIGHT_PIN
51#define BACKLIGHT_LEVELS 3
52#endif
53
54
55/* Set 0 if debouncing isn't needed */
56#define DEBOUNCE 5
57
58#define RGB_DI_PIN E6
59#ifdef RGB_DI_PIN
60#define RGBLIGHT_EFFECT_BREATHING
61#define RGBLIGHT_EFFECT_RAINBOW_MOOD
62#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
63#define RGBLIGHT_EFFECT_SNAKE
64#define RGBLIGHT_EFFECT_KNIGHT
65#define RGBLIGHT_EFFECT_CHRISTMAS
66#define RGBLIGHT_EFFECT_STATIC_GRADIENT
67#define RGBLIGHT_EFFECT_RGB_TEST
68#define RGBLIGHT_EFFECT_ALTERNATING
69#define RGBLIGHT_EFFECT_TWINKLE
70#define RGBLED_NUM 24
71#define RGBLIGHT_HUE_STEP 8
72#define RGBLIGHT_SAT_STEP 8
73#define RGBLIGHT_VAL_STEP 8
74#endif
diff --git a/keyboards/cherrybstudio/cb87v2/info.json b/keyboards/cherrybstudio/cb87v2/info.json
new file mode 100644
index 000000000..8b79d0623
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/info.json
@@ -0,0 +1,103 @@
1{
2 "keyboard_name": "cb87v2",
3 "url": "https://discord.gg/qVwv3gcq83",
4 "maintainer": "duongaanh",
5 "layouts": {
6 "LAYOUT_all": {
7 "layout": [
8 {"label":"Esc", "x":0, "y":0},
9 {"label":"F1", "x":2, "y":0},
10 {"label":"F2", "x":3, "y":0},
11 {"label":"F3", "x":4, "y":0},
12 {"label":"F4", "x":5, "y":0},
13 {"label":"F5", "x":6.5, "y":0},
14 {"label":"F6", "x":7.5, "y":0},
15 {"label":"F7", "x":8.5, "y":0},
16 {"label":"F8", "x":9.5, "y":0},
17 {"label":"F9", "x":11, "y":0},
18 {"label":"F10", "x":12, "y":0},
19 {"label":"F11", "x":13, "y":0},
20 {"label":"F12", "x":14, "y":0},
21 {"label":"PrtSc", "x":15.25, "y":0},
22 {"label":"Scroll Lock", "x":16.25, "y":0},
23 {"label":"Pause", "x":17.25, "y":0},
24 {"label":"~", "x":0, "y":1.25},
25 {"label":"!", "x":1, "y":1.25},
26 {"label":"@", "x":2, "y":1.25},
27 {"label":"#", "x":3, "y":1.25},
28 {"label":"$", "x":4, "y":1.25},
29 {"label":"%", "x":5, "y":1.25},
30 {"label":"^", "x":6, "y":1.25},
31 {"label":"&", "x":7, "y":1.25},
32 {"label":"*", "x":8, "y":1.25},
33 {"label":"(", "x":9, "y":1.25},
34 {"label":")", "x":10, "y":1.25},
35 {"label":"_", "x":11, "y":1.25},
36 {"label":"+", "x":12, "y":1.25},
37 {"label":"Backspace", "x":13, "y":1.25},
38 {"label":"Backspace", "x":14, "y":1.25},
39 {"label":"Insert", "x":15.25, "y":1.25},
40 {"label":"Home", "x":16.25, "y":1.25},
41 {"label":"PgUp", "x":17.25, "y":1.25},
42 {"label":"Tab", "x":0, "y":2.25, "w":1.5},
43 {"label":"Q", "x":1.5, "y":2.25},
44 {"label":"W", "x":2.5, "y":2.25},
45 {"label":"E", "x":3.5, "y":2.25},
46 {"label":"R", "x":4.5, "y":2.25},
47 {"label":"T", "x":5.5, "y":2.25},
48 {"label":"Y", "x":6.5, "y":2.25},
49 {"label":"U", "x":7.5, "y":2.25},
50 {"label":"I", "x":8.5, "y":2.25},
51 {"label":"O", "x":9.5, "y":2.25},
52 {"label":"P", "x":10.5, "y":2.25},
53 {"label":"{", "x":11.5, "y":2.25},
54 {"label":"}", "x":12.5, "y":2.25},
55 {"label":"|", "x":13.5, "y":2.25, "w":1.5},
56 {"label":"Delete", "x":15.25, "y":2.25},
57 {"label":"End", "x":16.25, "y":2.25},
58 {"label":"PgDn", "x":17.25, "y":2.25},
59 {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
60 {"label":"A", "x":1.75, "y":3.25},
61 {"label":"S", "x":2.75, "y":3.25},
62 {"label":"D", "x":3.75, "y":3.25},
63 {"label":"F", "x":4.75, "y":3.25},
64 {"label":"G", "x":5.75, "y":3.25},
65 {"label":"H", "x":6.75, "y":3.25},
66 {"label":"J", "x":7.75, "y":3.25},
67 {"label":"K", "x":8.75, "y":3.25},
68 {"label":"L", "x":9.75, "y":3.25},
69 {"label":":", "x":10.75, "y":3.25},
70 {"label":"\"", "x":11.75, "y":3.25},
71 {"label":"ISO~", "x":12.75, "y":3.25},
72 {"label":"Enter", "x":13.75, "y":3.25, "w":1.25},
73 {"label":"lShift", "x":0, "y":4.25, "w":1.25},
74 {"label":"ISO|", "x":1.25, "y":4.25},
75 {"label":"Z", "x":2.25, "y":4.25},
76 {"label":"X", "x":3.25, "y":4.25},
77 {"label":"C", "x":4.25, "y":4.25},
78 {"label":"V", "x":5.25, "y":4.25},
79 {"label":"B", "x":6.25, "y":4.25},
80 {"label":"N", "x":7.25, "y":4.25},
81 {"label":"M", "x":8.25, "y":4.25},
82 {"label":"<", "x":9.25, "y":4.25},
83 {"label":">", "x":10.25, "y":4.25},
84 {"label":"?", "x":11.25, "y":4.25},
85 {"label":"rShift", "x":12.25, "y":4.25, "w":1.75},
86 {"label":"rshift", "x":14, "y":4.25},
87 {"label":"up", "x":16.25, "y":4.25},
88 {"label":"lCtrl", "x":0, "y":5.25, "w":1.25},
89 {"label":"lWin", "x":1.25, "y":5.25, "w":1.25},
90 {"label":"lAlt", "x":2.5, "y":5.25, "w":1.25},
91 {"label":"space", "x":3.75, "y":5.25, "w":2.25},
92 {"label":"space", "x":6, "y":5.25, "w":1.25},
93 {"label":"space", "x":7.25, "y":5.25, "w":2.75},
94 {"label":"rAlt", "x":10, "y":5.25, "w":1.25},
95 {"label":"rWin", "x":11.25, "y":5.25, "w":1.25},
96 {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
97 {"label":"rCtrl", "x":13.75, "y":5.25, "w":1.25},
98 {"label":"left", "x":15.25, "y":5.25},
99 {"label":"down", "x":16.25, "y":5.25},
100 {"label":"right", "x":17.25, "y":5.25}]
101 }
102 }
103}
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c
new file mode 100644
index 000000000..083350979
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6This program is distributed in the hope that it will be useful,
7but WITHOUT ANY WARRANTY; without even the implied warranty of
8MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9GNU General Public License for more details.
10You should have received a copy of the GNU General Public License
11along with this program. If not, see <http://www.gnu.org/licenses/>.
12*/
13
14#include QMK_KEYBOARD_H
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17 [0] = LAYOUT_all(
18 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,
19 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
20 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,
21 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,
22 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_RSFT, KC_UP,
23 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
24 ),
25 [1] = LAYOUT_all(
26 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
27 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
32 ),
33
34};
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md
new file mode 100644
index 000000000..d68382007
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for cb1800 \ No newline at end of file
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c
new file mode 100644
index 000000000..8c08f10a0
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
1/*
2Copyright 2020 Tybera
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11You should have received a copy of the GNU General Public License
12along with this program. If not, see <http://www.gnu.org/licenses/>.
13*/
14
15#include QMK_KEYBOARD_H
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 [0] = LAYOUT_all(
19 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,
20 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
21 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,
22 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,
23 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_RSFT, KC_UP,
24 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
25 ),
26 [1] = LAYOUT_all(
27 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
33 ),
34 [2] = LAYOUT_all(
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
41 ),
42 [3] = LAYOUT_all(
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
49 ),
50};
51
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk
new file mode 100644
index 000000000..ca9fed0e6
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1LTO_ENABLE = yes
2VIA_ENABLE = yes
diff --git a/keyboards/cherrybstudio/cb87v2/readme.md b/keyboards/cherrybstudio/cb87v2/readme.md
new file mode 100644
index 000000000..0fc32c40c
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/readme.md
@@ -0,0 +1,26 @@
1# CherryB Studio CB87v2
2
3![cb87v2](https://i.imgur.com/0DqZDXw.jpg)
4
5An advance TKL PCB with many configurable layouts
6
7* Keyboard Maintainer: duongaanh
8* Hardware Supported: cb87v2, atmega32u4
9* Hardware Availability: [CherryB Studio](https://discord.gg/qVwv3gcq83)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make cherrybstudio/cb87v2:default
14
15Flashing example for this keyboard:
16
17 make cherrybstudio/cb87v2:default:flash
18
19## Accessing Bootloader Mode
20
21To access Bootloader Mode, do one of the following:
22
23* Tap the Reset switch behind the PCB near the MCU
24* Hold the top left key of the keyboard while connecting the USB cable
25
26See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cherrybstudio/cb87v2/rules.mk b/keyboards/cherrybstudio/cb87v2/rules.mk
new file mode 100644
index 000000000..3bd45154f
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/rules.mk
@@ -0,0 +1,18 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = yes # Enable N-Key Rollover
16BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output