From 799046fd9de389f15651d121d64f5be373e7dffe Mon Sep 17 00:00:00 2001 From: npspears <40127181+npspears@users.noreply.github.com> Date: Fri, 16 Sep 2022 12:37:39 -0500 Subject: Quark revision - rotary encoder and 7u support (#17664) by npspears --- keyboards/checkerboards/quark/config.h | 21 ++---- keyboards/checkerboards/quark/info.json | 57 ++++++++++++++ .../quark/keymaps/default_5x12_7u/config.h | 19 +++++ .../quark/keymaps/default_5x12_7u/keymap.c | 86 ++++++++++++++++++++++ keyboards/checkerboards/quark/keymaps/via/keymap.c | 8 ++ keyboards/checkerboards/quark/keymaps/via/rules.mk | 1 + keyboards/checkerboards/quark/quark.c | 12 +++ keyboards/checkerboards/quark/quark.h | 18 ++++- keyboards/checkerboards/quark/rules.mk | 4 +- 9 files changed, 207 insertions(+), 19 deletions(-) create mode 100644 keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h create mode 100644 keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c diff --git a/keyboards/checkerboards/quark/config.h b/keyboards/checkerboards/quark/config.h index dda0f9f189..295629f885 100644 --- a/keyboards/checkerboards/quark/config.h +++ b/keyboards/checkerboards/quark/config.h @@ -38,22 +38,6 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - // ws2812 options #define RGB_DI_PIN D0 // pin the DI on the ws2812 is hooked-up to #define RGBLIGHT_ANIMATIONS // run RGB animations @@ -61,3 +45,8 @@ #define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue #define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation #define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness) + +// rotary encoder parameters +#define ENCODERS_PAD_A { B0 } +#define ENCODERS_PAD_B { D1 } +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/checkerboards/quark/info.json b/keyboards/checkerboards/quark/info.json index 6b08316a0f..d3a571d627 100644 --- a/keyboards/checkerboards/quark/info.json +++ b/keyboards/checkerboards/quark/info.json @@ -127,6 +127,63 @@ {"x": 10.5, "y": 4, "w": 1.5} ] }, + "LAYOUT_ortho_5x12_7u": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":7}, + {"x":9.5, "y":4, "w":1.25}, + {"x":10.75, "y":4, "w":1.25} + ] + }, "LAYOUT_ortho_4x12": { "layout": [ {"x": 0, "y": 0}, diff --git a/keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h new file mode 100644 index 0000000000..c6f30237d1 --- /dev/null +++ b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c new file mode 100644 index 0000000000..e5797a4e9e --- /dev/null +++ b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | OS | Alt | Space & Layer | Caps | Layer 2 | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_5x12_7u( + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI, KC_LALT, LT(1, KC_SPC), KC_CAPS, TT(2) + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | | | '|' | ` | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_5x12_7u( + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, _______, KC_NUBS, KC_GRV + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | QK_BOOT | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_5x12_7u( + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + QK_BOOT, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark/keymaps/via/keymap.c b/keyboards/checkerboards/quark/keymaps/via/keymap.c index 01e916bfe4..f8a5c215f1 100644 --- a/keyboards/checkerboards/quark/keymaps/via/keymap.c +++ b/keyboards/checkerboards/quark/keymaps/via/keymap.c @@ -84,3 +84,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QK_BOOT, _______, _______, _______, _______, _______, _______, _______ ) }; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) }, +}; +#endif diff --git a/keyboards/checkerboards/quark/keymaps/via/rules.mk b/keyboards/checkerboards/quark/keymaps/via/rules.mk index 1e5b99807c..f1adcab005 100644 --- a/keyboards/checkerboards/quark/keymaps/via/rules.mk +++ b/keyboards/checkerboards/quark/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/checkerboards/quark/quark.c b/keyboards/checkerboards/quark/quark.c index 02610c4203..736b955424 100644 --- a/keyboards/checkerboards/quark/quark.c +++ b/keyboards/checkerboards/quark/quark.c @@ -15,3 +15,15 @@ */ #include "quark.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLD, 10); + } else { + tap_code_delay(KC_VOLU, 10); + } + } + return true; +} diff --git a/keyboards/checkerboards/quark/quark.h b/keyboards/checkerboards/quark/quark.h index e1af96eb76..be2cc3f932 100644 --- a/keyboards/checkerboards/quark/quark.h +++ b/keyboards/checkerboards/quark/quark.h @@ -39,13 +39,27 @@ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \ - k40, k41, k43, k48, k4A, k4B \ + k40, k41, k44, k47, k4A, k4B \ ) { \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \ - { k40, k41, XXX, XXX, k43, XXX, XXX, k48, XXX, XXX, k4A, k4B } \ + { k40, k41, XXX, XXX, k44, XXX, XXX, k47, XXX, XXX, k4A, k4B } \ +} + +#define LAYOUT_ortho_5x12_7u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \ + k40, k41, k44, k4A, k4B \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \ + { k40, k41, XXX, XXX, k44, XXX, XXX, XXX, XXX, XXX, k4A, k4B } \ } #define LAYOUT_ortho_4x12( \ diff --git a/keyboards/checkerboards/quark/rules.mk b/keyboards/checkerboards/quark/rules.mk index f56c1ed29e..a161eb06d3 100644 --- a/keyboards/checkerboards/quark/rules.mk +++ b/keyboards/checkerboards/quark/rules.mk @@ -17,9 +17,11 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode +ENCODER_ENABLE = yes # Enable Rotary Encoders -LAYOUTS = ortho_4x12 planck_mit # Disable unsupported hardware AUDIO_SUPPORTED = no BACKLIGHT_SUPPORTED = no + +LAYOUTS = ortho_4x12 planck_mit -- cgit v1.2.1