aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/pearlboards/atlas/atlas.c31
-rw-r--r--keyboards/pearlboards/atlas/atlas.h38
-rw-r--r--keyboards/pearlboards/atlas/config.h100
-rw-r--r--keyboards/pearlboards/atlas/keymaps/default/keymap.c34
-rw-r--r--keyboards/pearlboards/atlas/keymaps/via/keymap.c48
-rw-r--r--keyboards/pearlboards/atlas/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/atlas/readme.md22
-rw-r--r--keyboards/pearlboards/atlas/rules.mk23
-rw-r--r--keyboards/pearlboards/pandora/config.h20
-rw-r--r--keyboards/pearlboards/pandora/keymaps/default/keymap.c51
-rw-r--r--keyboards/pearlboards/pandora/keymaps/via/keymap.c73
-rw-r--r--keyboards/pearlboards/pandora/pandora.c25
-rw-r--r--keyboards/pearlboards/pandora/rules.mk2
-rw-r--r--keyboards/pearlboards/pearl/config.h94
-rw-r--r--keyboards/pearlboards/pearl/keymaps/default/keymap.c32
-rw-r--r--keyboards/pearlboards/pearl/keymaps/via/keymap.c45
-rw-r--r--keyboards/pearlboards/pearl/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/pearl/pearl.c17
-rw-r--r--keyboards/pearlboards/pearl/pearl.h36
-rw-r--r--keyboards/pearlboards/pearl/readme.md22
-rw-r--r--keyboards/pearlboards/pearl/rules.mk22
-rw-r--r--keyboards/pearlboards/zeus/config.h104
-rw-r--r--keyboards/pearlboards/zeus/keymaps/default/keymap.c36
-rw-r--r--keyboards/pearlboards/zeus/keymaps/via/keymap.c52
-rw-r--r--keyboards/pearlboards/zeus/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/zeus/readme.md22
-rw-r--r--keyboards/pearlboards/zeus/rules.mk23
-rw-r--r--keyboards/pearlboards/zeus/zeus.c30
-rw-r--r--keyboards/pearlboards/zeus/zeus.h40
-rw-r--r--keyboards/pearlboards/zeuspad/config.h90
-rw-r--r--keyboards/pearlboards/zeuspad/keymaps/default/keymap.c36
-rw-r--r--keyboards/pearlboards/zeuspad/keymaps/via/keymap.c52
-rw-r--r--keyboards/pearlboards/zeuspad/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/zeuspad/readme.md22
-rw-r--r--keyboards/pearlboards/zeuspad/rules.mk23
-rw-r--r--keyboards/pearlboards/zeuspad/zeuspad.c67
-rw-r--r--keyboards/pearlboards/zeuspad/zeuspad.h40
37 files changed, 1282 insertions, 94 deletions
diff --git a/keyboards/pearlboards/atlas/atlas.c b/keyboards/pearlboards/atlas/atlas.c
new file mode 100644
index 000000000..ff8577bde
--- /dev/null
+++ b/keyboards/pearlboards/atlas/atlas.c
@@ -0,0 +1,31 @@
1/* Copyright 2020 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "atlas.h"
18
19#ifdef ENCODER_ENABLE
20bool encoder_update_kb(uint8_t index, bool clockwise) {
21 if (!encoder_update_user(index, clockwise)) { return false; }
22 if (index == 0) {
23 if (clockwise) {
24 tap_code_delay(KC_VOLU, 10);
25 } else {
26 tap_code_delay(KC_VOLD, 10);
27 }
28 }
29 return true;
30}
31#endif
diff --git a/keyboards/pearlboards/atlas/atlas.h b/keyboards/pearlboards/atlas/atlas.h
new file mode 100644
index 000000000..93ecc82f7
--- /dev/null
+++ b/keyboards/pearlboards/atlas/atlas.h
@@ -0,0 +1,38 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17/*
18 * This layout covers all of the possible build layouts. Also, any
19 * built layouts will work without having to change anything.
20*/
21
22#pragma once
23
24#include "quantum.h"
25
26#define LAYOUT_all( \
27 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
28 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, \
29 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2f, \
30 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3f, \
31 k40, k41, k42, k47, k4b, k4c, k4d, k4f \
32) { \
33 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \
34 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, KC_NO, k1f}, \
35 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, k2f}, \
36 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, KC_NO, k3f}, \
37 { k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k4b, k4c, k4d, KC_NO, k4f } \
38}
diff --git a/keyboards/pearlboards/atlas/config.h b/keyboards/pearlboards/atlas/config.h
new file mode 100644
index 000000000..e35c7d0a9
--- /dev/null
+++ b/keyboards/pearlboards/atlas/config.h
@@ -0,0 +1,100 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x6963
24#define PRODUCT_ID 0x6964
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Koobaczech
27#define PRODUCT Atlas
28
29/* key matrix size */
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 16
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { D6, E1, C0, C4, E3 }
44#define MATRIX_COL_PINS { D5, D4, C1, C2, C3, C5, C7, A7, A6, A5, A4, A3, A2, A1, A0, F7 }
45#define UNUSED_PINS { E4, E5, E6, E7, F0, F1, F2, F3, B0, B4, B5, B7 }
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/* Encoder Function */
51#define ENCODERS_PAD_A { E0 }
52#define ENCODERS_PAD_B { D7 }
53//#define ENCODER_DIRECTION_FLIP
54#define ENCODER_RESOLUTION 1
55
56/* Audio Function */
57#define AUDIO_CLICKY
58#define AUDIO_PIN C6
59
60/* Haptic feedback */
61#define FB_ERM_LRA 0
62#define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7
63#define FB_LOOPGAIN 3 // For Low:0, Medium:1, High:2, Very High:3
64/* Motor settings */
65#define RATED_VOLTAGE 3
66#define V_PEAK 5
67
68/*== all animations enabled ==*/
69/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
70#define RGB_DI_PIN B6
71#ifdef RGB_DI_PIN
72#define RGBLIGHT_EFFECT_ALTERNATING
73#define RGBLIGHT_EFFECT_BREATHING
74#define RGBLIGHT_EFFECT_CHRISTMAS
75#define RGBLIGHT_EFFECT_KNIGHT
76#define RGBLIGHT_EFFECT_RAINBOW_MOOD
77#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
78#define RGBLIGHT_EFFECT_SNAKE
79#define RGBLIGHT_EFFECT_STATIC_GRADIENT
80#define RGBLIGHT_EFFECT_TWINKLE
81#define RGBLED_NUM 8
82#define RGBLIGHT_HUE_STEP 8
83#define RGBLIGHT_SAT_STEP 8
84#define RGBLIGHT_VAL_STEP 8
85#define RGBLIGHT_SLEEP
86#endif
87
88/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
89#define DEBOUNCE 5
90
91/* Indicator Led's*/
92#define LED_CAPS_LOCK_PIN F4
93#define LED_NUM_LOCK_PIN F5
94#define LED_SCROLL_LOCK_PIN F6
95#define LED_PIN_ON_STATE 0
96/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
97#define LOCKING_SUPPORT_ENABLE
98
99/* Locking resynchronize hack */
100#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/atlas/keymaps/default/keymap.c b/keyboards/pearlboards/atlas/keymaps/default/keymap.c
new file mode 100644
index 000000000..eac060cb7
--- /dev/null
+++ b/keyboards/pearlboards/atlas/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 LAYOUT_all(
22 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_DEL, KC_BSPC, KC_COPY,
23 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_PSTE,
24 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_FIND,
25 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 , MO(1),
26 KC_LCTL, KC_LALT, KC_MEDIA_PLAY_PAUSE, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
27
28 LAYOUT_all(
29 RESET, 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, KC_TRNS,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG, 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, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
diff --git a/keyboards/pearlboards/atlas/keymaps/via/keymap.c b/keyboards/pearlboards/atlas/keymaps/via/keymap.c
new file mode 100644
index 000000000..1d1b5ccff
--- /dev/null
+++ b/keyboards/pearlboards/atlas/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_all(
22 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_DEL, KC_BSPC, KC_BSPC,
23 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,
24 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_MEDIA_PLAY_PAUSE,
25 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 , MO(1),
26 KC_LCTL, KC_LALT, KC_MEDIA_PLAY_PAUSE, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
27
28 [1] = LAYOUT_all(
29 RESET, 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, KC_TRNS,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG, 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, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
34
35 [2] = LAYOUT_all(
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,
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,
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, 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),
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,
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,
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, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
48};
diff --git a/keyboards/pearlboards/atlas/keymaps/via/rules.mk b/keyboards/pearlboards/atlas/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/pearlboards/atlas/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/atlas/readme.md b/keyboards/pearlboards/atlas/readme.md
new file mode 100644
index 000000000..ac02df971
--- /dev/null
+++ b/keyboards/pearlboards/atlas/readme.md
@@ -0,0 +1,22 @@
1# Atlas
2
3![Atlas](https://i.imgur.com/jm6DyWAh.jpg)
4
5Atlas is a timeless Greek themed 65 percent keyboard. The construction uses 6061 alu, pvd coated brass/stainless steel and dyed polycarbonate. The finishes include e-coating, anodizing, micro arc anodization, metal polish and fine beadblasting. Layouts are limited to a few ANSI variations such as tsangan/wkl and ISO. The keyboard also has a usb-c daugtherboard, an integrated dual usb hub with an audio jack and dac, and a rotary encoder. The case has indicator lights and is gasket mounted. The pcb is designed by me in house and has some super cool tricks up its sleeve as well.
6
7* Keyboard Maintainer: Koobaczech
8* Hardware Supported: Koobaczech
9* Availability: https://pearlboards.net/products/atlas65
10
11Make example for this keyboard (after setting up your build environment):
12
13 make pearlboards/atlas:default
14
15See 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).
16
17## Bootloader
18
19Enter the bootloader in 2 ways:
20
21* **Physical reset button**: Briefly press the button on the back of the PCB labeled "RESET"
22* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/atlas/rules.mk b/keyboards/pearlboards/atlas/rules.mk
new file mode 100644
index 000000000..b75d68754
--- /dev/null
+++ b/keyboards/pearlboards/atlas/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = at90usb1286
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # 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 = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = yes # Audio output
19ENCODER_ENABLE = yes
20HAPTIC_ENABLE = yes
21HAPTIC_DRIVER = DRV2605L
22
23LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/pandora/config.h b/keyboards/pearlboards/pandora/config.h
index 2df4bcffc..5a9a997be 100644
--- a/keyboards/pearlboards/pandora/config.h
+++ b/keyboards/pearlboards/pandora/config.h
@@ -58,12 +58,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
58/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */ 58/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
59#define RGB_DI_PIN B1 59#define RGB_DI_PIN B1
60#ifdef RGB_DI_PIN 60#ifdef RGB_DI_PIN
61# define RGBLIGHT_ANIMATIONS 61#define RGBLIGHT_EFFECT_ALTERNATING
62# define RGBLED_NUM 12 62#define RGBLIGHT_EFFECT_BREATHING
63# define RGBLIGHT_HUE_STEP 8 63#define RGBLIGHT_EFFECT_CHRISTMAS
64# define RGBLIGHT_SAT_STEP 8 64#define RGBLIGHT_EFFECT_KNIGHT
65# define RGBLIGHT_VAL_STEP 8 65#define RGBLIGHT_EFFECT_RAINBOW_MOOD
66# define RGBLIGHT_SLEEP 66#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
67#define RGBLIGHT_EFFECT_SNAKE
68#define RGBLIGHT_EFFECT_STATIC_GRADIENT
69#define RGBLIGHT_EFFECT_TWINKLE
70#define RGBLED_NUM 12
71#define RGBLIGHT_HUE_STEP 8
72#define RGBLIGHT_SAT_STEP 8
73#define RGBLIGHT_VAL_STEP 8
74#define RGBLIGHT_SLEEP
67#endif 75#endif
68 76
69/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 77/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/pearlboards/pandora/keymaps/default/keymap.c b/keyboards/pearlboards/pandora/keymaps/default/keymap.c
index 879ea04a1..a0feb7ea3 100644
--- a/keyboards/pearlboards/pandora/keymaps/default/keymap.c
+++ b/keyboards/pearlboards/pandora/keymaps/default/keymap.c
@@ -43,42 +43,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
43}; 43};
44 44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 [0] = LAYOUT_all( 46 [0] = LAYOUT_all(
47 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_DEL, KC_BSPC, 47 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_DEL, KC_BSPC,
48 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, 48 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,
49 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, 49 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,
50 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), 50 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),
51 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), 51 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
52 52
53 [1] = LAYOUT_all( 53 [1] = LAYOUT_all(
54 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_TRNS, KC_DEL, 54 RESET, 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_DEL,
55 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, 55 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
56 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, 56 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
57 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_UP, KC_TRNS, 57 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
58 KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT) 58 KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT)
59}; 59};
60
61// Encoder rotate function
62bool encoder_update_user(uint8_t index, bool clockwise) {
63 /* First encoder */
64 if (index == 0) {
65 if (clockwise) {
66 tap_code(KC_AUDIO_VOL_UP);
67 } else {
68 tap_code(KC_AUDIO_VOL_DOWN);
69 }
70 }
71 return true;
72}
73// Encoder click function
74bool dip_switch_update_user(uint8_t index, bool active) {
75 switch (index) {
76 /* First encoder */
77 case 0:
78 if (active) {
79 tap_code(KC_MEDIA_PLAY_PAUSE);
80 }
81 break;
82 }
83 return true;
84}
diff --git a/keyboards/pearlboards/pandora/keymaps/via/keymap.c b/keyboards/pearlboards/pandora/keymaps/via/keymap.c
index 55bbff967..aad4ddf29 100644
--- a/keyboards/pearlboards/pandora/keymaps/via/keymap.c
+++ b/keyboards/pearlboards/pandora/keymaps/via/keymap.c
@@ -43,56 +43,31 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
43}; 43};
44 44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 [0] = LAYOUT_all( 46 [0] = LAYOUT_all(
47 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_DEL, KC_BSPC, 47 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_DEL, KC_BSPC,
48 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, 48 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,
49 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, 49 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,
50 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), 50 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),
51 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), 51 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
52 52
53 [1] = LAYOUT_all( 53 [1] = LAYOUT_all(
54 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_TRNS, KC_DEL, 54 RESET, 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_DEL,
55 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, 55 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
56 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, 56 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
57 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_UP, KC_TRNS, 57 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
58 KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), 58 KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT),
59 59
60 [2] = LAYOUT_all( 60 [2] = LAYOUT_all(
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
65 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 65 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
66 66
67 [3] = LAYOUT_all( 67 [3] = LAYOUT_all(
68 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 68 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
71 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 71 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
73}; 73};
74
75// Encoder rotate function
76bool encoder_update_user(uint8_t index, bool clockwise) {
77 /* First encoder */
78 if (index == 0) {
79 if (clockwise) {
80 tap_code(KC_AUDIO_VOL_UP);
81 } else {
82 tap_code(KC_AUDIO_VOL_DOWN);
83 }
84 }
85 return true;
86}
87// Encoder click function
88bool dip_switch_update_user(uint8_t index, bool active) {
89 switch (index) {
90 /* First encoder */
91 case 0:
92 if (active) {
93 tap_code(KC_MEDIA_PLAY_PAUSE);
94 }
95 break;
96 }
97 return true;
98}
diff --git a/keyboards/pearlboards/pandora/pandora.c b/keyboards/pearlboards/pandora/pandora.c
index 78368e968..5ce5d22b0 100644
--- a/keyboards/pearlboards/pandora/pandora.c
+++ b/keyboards/pearlboards/pandora/pandora.c
@@ -15,3 +15,28 @@
15 */ 15 */
16 16
17#include "pandora.h" 17#include "pandora.h"
18
19// Encoder rotate function
20bool encoder_update_user(uint8_t index, bool clockwise) {
21 /* First encoder */
22 if (index == 0) {
23 if (clockwise) {
24 tap_code(KC_AUDIO_VOL_UP);
25 } else {
26 tap_code(KC_AUDIO_VOL_DOWN);
27 }
28 }
29 return true;
30}
31// Encoder click function
32bool dip_switch_update_user(uint8_t index, bool active) {
33 switch (index) {
34 /* First encoder */
35 case 0:
36 if (active) {
37 tap_code(KC_MEDIA_PLAY_PAUSE);
38 }
39 break;
40 }
41 return true;
42}
diff --git a/keyboards/pearlboards/pandora/rules.mk b/keyboards/pearlboards/pandora/rules.mk
index 1fc37ebbd..04aacf572 100644
--- a/keyboards/pearlboards/pandora/rules.mk
+++ b/keyboards/pearlboards/pandora/rules.mk
@@ -18,5 +18,5 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output 18AUDIO_ENABLE = no # Audio output
19DIP_SWITCH_ENABLE = yes 19DIP_SWITCH_ENABLE = yes
20ENCODER_ENABLE = yes 20ENCODER_ENABLE = yes
21OLED_ENABLE = no # Future release 21
22LTO_ENABLE = yes 22LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/pearl/config.h b/keyboards/pearlboards/pearl/config.h
new file mode 100644
index 000000000..002c2a5f5
--- /dev/null
+++ b/keyboards/pearlboards/pearl/config.h
@@ -0,0 +1,94 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x6963
24#define PRODUCT_ID 0x6965
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Koobaczech
27#define PRODUCT Pearl
28
29/* key matrix size */
30#define MATRIX_ROWS 4
31#define MATRIX_COLS 13
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { D3, F7, F0, E6 }
44#define MATRIX_COL_PINS { D2, F1, F4, F5, F6, C7, B6, B5, B4, D7, D6, D4, D5 }
45
46/* COL2ROW, ROW2COL*/
47#define DIODE_DIRECTION COL2ROW
48
49/* Audio Function */
50#define AUDIO_CLICKY
51#define AUDIO_PIN C6
52
53/* Haptic feedback */
54#define FB_ERM_LRA 0
55#define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7
56#define FB_LOOPGAIN 1 // For Low:0, Medium:1, High:2, Very High:3
57/* Motor settings */
58#define RATED_VOLTAGE 3
59#define V_PEAK 5
60
61/*== all animations enabled ==*/
62/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
63#define RGB_DI_PIN B3
64#ifdef RGB_DI_PIN
65#define RGBLIGHT_EFFECT_ALTERNATING
66#define RGBLIGHT_EFFECT_BREATHING
67#define RGBLIGHT_EFFECT_CHRISTMAS
68#define RGBLIGHT_EFFECT_KNIGHT
69#define RGBLIGHT_EFFECT_RAINBOW_MOOD
70#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
71#define RGBLIGHT_EFFECT_RGB_TEST
72#define RGBLIGHT_EFFECT_SNAKE
73#define RGBLIGHT_EFFECT_STATIC_GRADIENT
74#define RGBLIGHT_EFFECT_TWINKLE
75# define RGBLED_NUM 10
76# define RGBLIGHT_HUE_STEP 8
77# define RGBLIGHT_SAT_STEP 8
78# define RGBLIGHT_VAL_STEP 8
79# define RGBLIGHT_SLEEP
80#endif
81
82/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
83#define DEBOUNCE 4
84
85/* Indicator Led's*/
86#define LED_CAPS_LOCK_PIN B0
87#define LED_NUM_LOCK_PIN B1
88#define LED_SCROLL_LOCK_PIN B2
89#define LED_PIN_ON_STATE 0
90/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
91#define LOCKING_SUPPORT_ENABLE
92
93/* Locking resynchronize hack */
94#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/pearl/keymaps/default/keymap.c b/keyboards/pearlboards/pearl/keymaps/default/keymap.c
new file mode 100644
index 000000000..05af40ada
--- /dev/null
+++ b/keyboards/pearlboards/pearl/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 LAYOUT_all(
22 KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC,
23 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
24 KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
25 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_BSPC, KC_APP, MO(1)),
26
27 LAYOUT_all(
28 RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_DEL,
29 KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
30 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG,
31 RGB_MOD, RGB_HUI, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS)
32};
diff --git a/keyboards/pearlboards/pearl/keymaps/via/keymap.c b/keyboards/pearlboards/pearl/keymaps/via/keymap.c
new file mode 100644
index 000000000..29e8fe1e8
--- /dev/null
+++ b/keyboards/pearlboards/pearl/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21
22 [0] = LAYOUT_all(
23 KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC,
24 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
25 KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_BSPC, KC_APP, MO(1)),
27
28 [1] = LAYOUT_all(
29 RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_DEL,
30 KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
31 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG,
32 RGB_MOD, RGB_HUI, KC_TRNS, RGB_TOG, 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,
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,
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,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
39
40 [3] = LAYOUT_all(
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
45};
diff --git a/keyboards/pearlboards/pearl/keymaps/via/rules.mk b/keyboards/pearlboards/pearl/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/pearlboards/pearl/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/pearl/pearl.c b/keyboards/pearlboards/pearl/pearl.c
new file mode 100644
index 000000000..f1ccf3fd9
--- /dev/null
+++ b/keyboards/pearlboards/pearl/pearl.c
@@ -0,0 +1,17 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "pearl.h"
diff --git a/keyboards/pearlboards/pearl/pearl.h b/keyboards/pearlboards/pearl/pearl.h
new file mode 100644
index 000000000..d0a2fcb93
--- /dev/null
+++ b/keyboards/pearlboards/pearl/pearl.h
@@ -0,0 +1,36 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17/*
18 * This layout covers all of the possible build layouts. Also, any
19 * built layouts will work without having to change anything.
20*/
21
22#pragma once
23
24#include "quantum.h"
25
26#define LAYOUT_all( \
27 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
28 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
29 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
30 k30, k31, k32, k33, k34, k35, k36 \
31){ \
32 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \
33 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, KC_NO}, \
34 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO}, \
35 { k30, k31, k32, k33, k34, k35, k36, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} \
36}
diff --git a/keyboards/pearlboards/pearl/readme.md b/keyboards/pearlboards/pearl/readme.md
new file mode 100644
index 000000000..7679b270b
--- /dev/null
+++ b/keyboards/pearlboards/pearl/readme.md
@@ -0,0 +1,22 @@
1# Pearl
2
3![Pearl](https://i.imgur.com/xdEtT7uh.jpg)
4
5Pearl is a future-proof premium 40%. This is the second round of it, reworked for 2021. This firmware is for the latest QMK PCB's.
6
7* Keyboard Maintainer: Koobaczech
8* Hardware Supported: Pearl
9* Availability: https://pearlboards.net/products/pearl-40
10
11Make example for this keyboard (after setting up your build environment):
12
13 make pearlboards/pearl:default
14
15See 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).
16
17## Bootloader
18
19Enter the bootloader in 2 ways:
20
21* **Physical reset button**: Briefly press the button on the front left of the PCB labeled "RESET"
22* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/pearl/rules.mk b/keyboards/pearlboards/pearl/rules.mk
new file mode 100644
index 000000000..3d9fec280
--- /dev/null
+++ b/keyboards/pearlboards/pearl/rules.mk
@@ -0,0 +1,22 @@
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 = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = no # 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 = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = yes # Audio output
19HAPTIC_ENABLE = yes
20HAPTIC_DRIVER = DRV2605L
21
22LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/config.h b/keyboards/pearlboards/zeus/config.h
new file mode 100644
index 000000000..7de94efcc
--- /dev/null
+++ b/keyboards/pearlboards/zeus/config.h
@@ -0,0 +1,104 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x6963
24#define PRODUCT_ID 0x6966
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Koobaczech
27#define PRODUCT Zeus
28
29/* key matrix size */
30#define MATRIX_ROWS 6
31#define MATRIX_COLS 18
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { F0, C1, E1, E0, D7, D6 }
44#define MATRIX_COL_PINS { F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C7, C2, C0 }
45#define UNUSED_PINS { E3, E4, E5, B0, B4, B5, B6, B7, D4 }
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/* Encoder Function */
51#define ENCODERS_PAD_A { E7 }
52#define ENCODERS_PAD_B { E6 }
53//#define ENCODER_DIRECTION_FLIP
54#define ENCODER_RESOLUTION 1
55
56/* Audio Function */
57#define AUDIO_CLICKY
58#define AUDIO_PIN C6
59#ifdef AUDIO_ENABLE
60#define AUDIO_ENABLE_TONE_MULTIPLEXING
61#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10
62#endif
63
64/* Haptic feedback */
65#define FB_ERM_LRA 0
66#define FB_BRAKEFACTOR 1 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7
67#define FB_LOOPGAIN 3 // For Low:0, Medium:1, High:2, Very High:3
68/* Motor settings */
69#define RATED_VOLTAGE 2
70#define V_PEAK 5
71
72/*== all animations enabled ==*/
73/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
74#define RGB_DI_PIN D5
75#ifdef RGB_DI_PIN
76#define RGBLIGHT_EFFECT_ALTERNATING
77#define RGBLIGHT_EFFECT_BREATHING
78#define RGBLIGHT_EFFECT_CHRISTMAS
79#define RGBLIGHT_EFFECT_KNIGHT
80#define RGBLIGHT_EFFECT_RAINBOW_MOOD
81#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
82#define RGBLIGHT_EFFECT_SNAKE
83#define RGBLIGHT_EFFECT_STATIC_GRADIENT
84#define RGBLIGHT_EFFECT_TWINKLE
85#define RGBLED_NUM 2
86#define RGBLIGHT_HUE_STEP 8
87#define RGBLIGHT_SAT_STEP 8
88#define RGBLIGHT_VAL_STEP 8
89#define RGBLIGHT_SLEEP
90#endif
91
92/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
93#define DEBOUNCE 5
94
95/* Indicator Led's*/
96#define LED_CAPS_LOCK_PIN C5
97#define LED_NUM_LOCK_PIN C4
98#define LED_SCROLL_LOCK_PIN C3
99#define LED_PIN_ON_STATE 0
100/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
101#define LOCKING_SUPPORT_ENABLE
102
103/* Locking resynchronize hack */
104#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/zeus/keymaps/default/keymap.c b/keyboards/pearlboards/zeus/keymaps/default/keymap.c
new file mode 100644
index 000000000..2b9d56e9c
--- /dev/null
+++ b/keyboards/pearlboards/zeus/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 LAYOUT_all(
22 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
23 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_DEL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
24 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,
25 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,
26 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_MEDIA_PLAY_PAUSE, KC_UP,
27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
28
29 LAYOUT_all(
30 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,
31 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, HPT_TOG, HPT_FBK, HPT_MODI, HPT_RST, 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 KC_TRNS, CK_ON, CK_TOGG, MU_TOG, MU_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
36};
diff --git a/keyboards/pearlboards/zeus/keymaps/via/keymap.c b/keyboards/pearlboards/zeus/keymaps/via/keymap.c
new file mode 100644
index 000000000..6cb23a6fb
--- /dev/null
+++ b/keyboards/pearlboards/zeus/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_all(
22 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
23 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_DEL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
24 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,
25 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,
26 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_MEDIA_PLAY_PAUSE, KC_UP,
27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
28
29 [1] = LAYOUT_all(
30 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,
31 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, HPT_TOG, HPT_FBK, HPT_MODI, HPT_RST, 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 KC_TRNS, CK_ON, CK_TOGG, MU_TOG, MU_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
36
37 [2] = LAYOUT_all(
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,
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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
44
45 [3] = LAYOUT_all(
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,
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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
52};
diff --git a/keyboards/pearlboards/zeus/keymaps/via/rules.mk b/keyboards/pearlboards/zeus/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/pearlboards/zeus/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/readme.md b/keyboards/pearlboards/zeus/readme.md
new file mode 100644
index 000000000..9d85549d3
--- /dev/null
+++ b/keyboards/pearlboards/zeus/readme.md
@@ -0,0 +1,22 @@
1# Zeus
2
3![Zeus](https://i.imgur.com/jdCaP1mh.jpg)
4
5Zeus is a modern Greek themed TKL keyboard. The construction uses 6061 alu, pvd coated brass/stainless steel and dyed polycarbonate. The finishes include e-coating, anodizing, micro arc anodization, metal polish and fine beadblasting. The keyboard has a usb-c daugtherboard, an integrated dual usb hub with an audio jack and dac, an internal speaker and a rotary encoder. The case has indicator lights and is top mounted. The pcb is designed by me in house and has some super cool tricks up its sleeve as well.
6
7* Keyboard Maintainer: Koobaczech
8* Hardware Supported: Koobaczech
9* Availability: https://pearlboards.net/products/zeus-tkl?variant=39646626250884
10
11Make example for this keyboard (after setting up your build environment):
12
13 make pearlboards/zeus:default
14
15See 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).
16
17## Bootloader
18
19Enter the bootloader in 2 ways:
20
21* **Physical reset button**: Briefly press the button on the back of the PCB labeled "RESET"
22* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/zeus/rules.mk b/keyboards/pearlboards/zeus/rules.mk
new file mode 100644
index 000000000..b75d68754
--- /dev/null
+++ b/keyboards/pearlboards/zeus/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = at90usb1286
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # 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 = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = yes # Audio output
19ENCODER_ENABLE = yes
20HAPTIC_ENABLE = yes
21HAPTIC_DRIVER = DRV2605L
22
23LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/zeus.c b/keyboards/pearlboards/zeus/zeus.c
new file mode 100644
index 000000000..42b77b283
--- /dev/null
+++ b/keyboards/pearlboards/zeus/zeus.c
@@ -0,0 +1,30 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "zeus.h"
18
19// Encoder rotate function
20bool encoder_update_user(uint8_t index, bool clockwise) {
21 /* First encoder */
22 if (index == 0) {
23 if (clockwise) {
24 tap_code(KC_AUDIO_VOL_UP);
25 } else {
26 tap_code(KC_AUDIO_VOL_DOWN);
27 }
28 }
29 return true;
30}
diff --git a/keyboards/pearlboards/zeus/zeus.h b/keyboards/pearlboards/zeus/zeus.h
new file mode 100644
index 000000000..f8b24e401
--- /dev/null
+++ b/keyboards/pearlboards/zeus/zeus.h
@@ -0,0 +1,40 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17/*
18 * This layout covers all of the possible build layouts. Also, any
19 * built layouts will work without having to change anything.
20*/
21
22#pragma once
23
24#include "quantum.h"
25
26#define LAYOUT_all( \
27 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
28 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
29 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2f, k2g, k2h, \
30 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
31 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, k4g, \
32 k50, k51, k52, k56, k59, k5a, k5b, k5c, k5f, k5g, k5h \
33) { \
34 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
35 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \
36 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, k2f, k2g, k2h }, \
37 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, KC_NO, KC_NO, KC_NO, KC_NO}, \
38 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, KC_NO, k4f, k4g, KC_NO}, \
39 { k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, k59, k5a, k5b, k5c, KC_NO, KC_NO, k5f, k5g, k5h } \
40}
diff --git a/keyboards/pearlboards/zeuspad/config.h b/keyboards/pearlboards/zeuspad/config.h
new file mode 100644
index 000000000..3c12bfae1
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/config.h
@@ -0,0 +1,90 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x6963
24#define PRODUCT_ID 0x6967
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Koobaczech
27#define PRODUCT Zeuspad
28
29/* key matrix size */
30#define MATRIX_ROWS 6
31#define MATRIX_COLS 4
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { D2, D3, D5, F7, F4, F1 }
44#define MATRIX_COL_PINS { B0, F0, F5, F6 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/* OLED Settings */
51#define OLED_TIMEOUT 120000
52#define OLED_FADE_OUT
53/* Audio Function */
54#define AUDIO_CLICKY
55#define AUDIO_PIN C6
56
57/* Encoder Function */
58#define ENCODERS_PAD_A { D6 }
59#define ENCODERS_PAD_B { D4 }
60//#define ENCODER_DIRECTION_FLIP
61#define ENCODER_RESOLUTION 1
62
63/*== all animations enabled ==*/
64/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
65#define RGB_DI_PIN B7
66#ifdef RGB_DI_PIN
67#define RGBLIGHT_EFFECT_ALTERNATING
68#define RGBLIGHT_EFFECT_BREATHING
69#define RGBLIGHT_EFFECT_CHRISTMAS
70#define RGBLIGHT_EFFECT_KNIGHT
71#define RGBLIGHT_EFFECT_RAINBOW_MOOD
72#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
73#define RGBLIGHT_EFFECT_SNAKE
74#define RGBLIGHT_EFFECT_STATIC_GRADIENT
75#define RGBLIGHT_EFFECT_TWINKLE
76#define RGBLED_NUM 2
77#define RGBLIGHT_HUE_STEP 8
78#define RGBLIGHT_SAT_STEP 8
79#define RGBLIGHT_VAL_STEP 8
80#define RGBLIGHT_SLEEP
81#endif
82
83/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
84#define DEBOUNCE 0
85
86/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
87#define LOCKING_SUPPORT_ENABLE
88
89/* Locking resynchronize hack */
90#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/zeuspad/keymaps/default/keymap.c b/keyboards/pearlboards/zeuspad/keymaps/default/keymap.c
new file mode 100644
index 000000000..3faa70348
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_all(
22 KC_ESC, KC_LCTL, KC_LALT, KC_MEDIA_PLAY_PAUSE,
23 KC_NLCK, KC_PSLS, KC_PAST, MO(1),
24 KC_P7, KC_P8, KC_P9, KC_PPLS,
25 KC_P4, KC_P5, KC_P6, KC_PPLS,
26 KC_P1, KC_P2, KC_P3, KC_PENT,
27 KC_P0, KC_P0, KC_PDOT, KC_PENT),
28
29 [1] = LAYOUT_all(
30 RESET, KC_LCTL, KC_LALT, KC_TRNS,
31 RGB_TOG, RGB_MOD, RGB_HUI, KC_PMNS,
32 KC_P7, KC_P8, KC_P9, KC_PPLS,
33 KC_P4, KC_P5, KC_P6, KC_PPLS,
34 KC_P1, KC_P2, KC_P3, KC_PENT,
35 KC_P0, KC_P0, KC_PDOT, KC_PENT)
36};
diff --git a/keyboards/pearlboards/zeuspad/keymaps/via/keymap.c b/keyboards/pearlboards/zeuspad/keymaps/via/keymap.c
new file mode 100644
index 000000000..a0c6b0c69
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
1/*
2Copyright 2021 Koobaczech
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include <stdio.h>
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_all(
22 KC_ESC, RGB_TOG, RGB_MOD, KC_MEDIA_PLAY_PAUSE,
23 KC_NLCK, KC_PSLS, KC_PAST, MO(1),
24 KC_P7, KC_P8, KC_P9, KC_PPLS,
25 KC_P4, KC_P5, KC_P6, KC_PPLS,
26 KC_P1, KC_P2, KC_P3, KC_PENT,
27 KC_P0, KC_P0, KC_PDOT, KC_PENT),
28
29 [1] = LAYOUT_all(
30 RESET, KC_LCTL, KC_LALT, KC_TRNS,
31 RGB_TOG, RGB_MOD, RGB_HUI, KC_PMNS,
32 KC_P7, KC_P8, KC_P9, KC_PPLS,
33 KC_P4, KC_P5, KC_P6, KC_PPLS,
34 KC_P1, KC_P2, KC_P3, KC_PENT,
35 KC_P0, KC_P0, KC_PDOT, KC_PENT),
36
37 [2] = LAYOUT_all(
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
44
45 [3] = LAYOUT_all(
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
52};
diff --git a/keyboards/pearlboards/zeuspad/keymaps/via/rules.mk b/keyboards/pearlboards/zeuspad/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/zeuspad/readme.md b/keyboards/pearlboards/zeuspad/readme.md
new file mode 100644
index 000000000..e22f48e65
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/readme.md
@@ -0,0 +1,22 @@
1# Zeuspad
2
3![Zeuspad](https://i.imgur.com/F657DWwh.png)
4
5Zeuspad is the perfect numpad complement to my TKL, Zeus. Standalone it is a glorious numpad with an encoder, oled and rgb.
6
7* Keyboard Maintainer: Koobaczech
8* Hardware Supported: Zeuspad
9* Availability: https://pearlboards.net/products/zeuspadl-coming-2022?variant=39642771718276
10
11Make example for this keyboard (after setting up your build environment):
12
13 make pearlboards/zeuspad:default
14
15See 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).
16
17## Bootloader
18
19Enter the bootloader in 2 ways:
20
21* **Physical reset button**: Briefly press the button on the front of the PCB labeled "RESET"
22* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/zeuspad/rules.mk b/keyboards/pearlboards/zeuspad/rules.mk
new file mode 100644
index 000000000..0299b99a2
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/rules.mk
@@ -0,0 +1,23 @@
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 = no # 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 = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19ENCODER_ENABLE = yes
20OLED_ENABLE = yes
21OLED_DRIVER = SSD1306
22
23LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeuspad/zeuspad.c b/keyboards/pearlboards/zeuspad/zeuspad.c
new file mode 100644
index 000000000..fd79058e8
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/zeuspad.c
@@ -0,0 +1,67 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "zeuspad.h"
18
19// Encoder rotate function
20bool encoder_update_user(uint8_t index, bool clockwise) {
21 /* First encoder */
22 if (index == 0) {
23 if (clockwise) {
24 tap_code(KC_AUDIO_VOL_UP);
25 } else {
26 tap_code(KC_AUDIO_VOL_DOWN);
27 }
28 }
29 return true;
30}
31
32//21 characters max
33#ifdef OLED_ENABLE
34void oled_task_user(void) {
35 oled_write_P(PSTR("ZEUSPAD BY KOOBACZECH"), false);
36 // Keyboard Layer Status
37 oled_write_P(PSTR("LAYER: "), false);
38
39 switch (get_highest_layer(layer_state)) {
40 case 1:
41 oled_write_ln_P(PSTR("FN"), false);
42 break;
43 default:
44 oled_write_ln_P(PSTR("Default"), false);
45 }
46 // Keyboard Locking Status
47 led_t led_state = host_keyboard_led_state();
48 oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false);
49 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
50 oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
51
52 switch (rgblight_is_enabled() ? 1 : 2) {
53 case 1:
54 // Or use the write_ln shortcut over adding '\n' to the end of your string
55 oled_write_P(PSTR("RGB"), false);
56 static char led_buf[30];
57 snprintf(led_buf, sizeof(led_buf) - 1, "\nMODE:%2d BRIGHT:%2d/10",
58 (uint8_t)(rgblight_get_mode()),
59 (uint8_t)(rgblight_get_val()/25.5));
60 oled_write(led_buf, false);
61 break;
62 default:
63 oled_write_ln_P(PSTR(""), false);
64 oled_write_P(PSTR("\n"), false);
65 }
66}
67#endif
diff --git a/keyboards/pearlboards/zeuspad/zeuspad.h b/keyboards/pearlboards/zeuspad/zeuspad.h
new file mode 100644
index 000000000..ea52fd81c
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/zeuspad.h
@@ -0,0 +1,40 @@
1/* Copyright 2021 Koobaczech
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17/*
18 * This layout covers all of the possible build layouts. Also, any
19 * built layouts will work without having to change anything.
20*/
21
22#pragma once
23
24#include "quantum.h"
25
26#define LAYOUT_all( \
27 k00, k01, k02, k03, \
28 k10, k11, k12, k13, \
29 k20, k21, k22, k23, \
30 k30, k31, k32, k33, \
31 k40, k41, k42, k43, \
32 k50, k51, k52, k53 \
33) { \
34 { k00, k01, k02, k03}, \
35 { k10, k11, k12, k13}, \
36 { k20, k21, k22, k23}, \
37 { k30, k31, k32, k33}, \
38 { k40, k41, k42, k43}, \
39 { k50, k51, k52, k53} \
40}