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