redid config for qua-ken..
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2024 zegonix (@zegonix)
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* split settings */
|
||||||
|
#define SPLIT_HAND_PIN_LOW_IS_LEFT
|
||||||
|
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
|
||||||
|
#define SERIAL_USART_TX_PIN A11 // USART TX pin
|
||||||
|
#define SERIAL_USART_RX_PIN A12 // USART RX pin
|
||||||
|
#define SERIAL_USART_DRIVER SD6 // Select UART Driver for interface 6
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define HAL_USE_SERIAL TRUE
|
||||||
|
|
||||||
|
#include_next <halconf.h>
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
"manufacturer": "=",
|
||||||
|
"keyboard_name": "qua-ken",
|
||||||
|
"maintainer": "zegonix",
|
||||||
|
"processor": "STM32F401",
|
||||||
|
"bootloader": "stm32-dfu",
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"url": "https://github.com/zegonix/qua-ken",
|
||||||
|
"features": {
|
||||||
|
"bootmagic": true,
|
||||||
|
"nkro": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"mousekey": true,
|
||||||
|
},
|
||||||
|
"required": ["lto"],
|
||||||
|
"usb": {
|
||||||
|
"device_version": "0.0.1",
|
||||||
|
"pid": "0x6337",
|
||||||
|
"vid": "0x7A78"
|
||||||
|
},
|
||||||
|
"matrix_pins": {
|
||||||
|
"cols": ["B7", "B6", "B5", "B3", "D2", "C12"],
|
||||||
|
"rows": ["B8", "B4", "C11", "C10", "A15"]
|
||||||
|
},
|
||||||
|
"encoder": {
|
||||||
|
"rotary": [
|
||||||
|
{ "pin_a": "B14", "pin_b": "B15", "resolution": 2 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"split" : {
|
||||||
|
"enabled": true,
|
||||||
|
"handedness": {
|
||||||
|
"pin": "A2",
|
||||||
|
},
|
||||||
|
"matrix_pins": {
|
||||||
|
"right": {
|
||||||
|
"cols": ["A5", "A6", "A7", "C5", "B0", "B1"],
|
||||||
|
"rows": ["A4", "C4", "B12", "B13", "C9"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"encoder": {
|
||||||
|
"right": {
|
||||||
|
"rotary": [
|
||||||
|
{ "pin_a": "A9", "pin_b": "A8", "resolution": 2 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tapping": {
|
||||||
|
"term": 200
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0, "w": 1},
|
||||||
|
{"label": "1!", "matrix": [0, 1], "x": 1, "y": 0, "w": 1},
|
||||||
|
{"label": "2@", "matrix": [0, 2], "x": 2, "y": 0, "w": 1},
|
||||||
|
{"label": "3#", "matrix": [0, 3], "x": 3, "y": 0, "w": 1},
|
||||||
|
{"label": "4$", "matrix": [0, 4], "x": 4, "y": 0, "w": 1},
|
||||||
|
{"label": "5%", "matrix": [0, 5], "x": 5, "y": 0, "w": 1},
|
||||||
|
|
||||||
|
{"label": "-_", "matrix": [5, 5], "x": 15, "y": 0, "w": 1},
|
||||||
|
{"label": "0)", "matrix": [5, 4], "x": 14, "y": 0, "w": 1},
|
||||||
|
{"label": "9(", "matrix": [5, 3], "x": 13, "y": 0, "w": 1},
|
||||||
|
{"label": "8*", "matrix": [5, 2], "x": 12, "y": 0, "w": 1},
|
||||||
|
{"label": "7&", "matrix": [5, 1], "x": 11, "y": 0, "w": 1},
|
||||||
|
{"label": "6^", "matrix": [5, 0], "x": 10, "y": 0, "w": 1},
|
||||||
|
|
||||||
|
{"label": "TAB", "matrix": [1, 0], "x": 0, "y": 1, "w": 1},
|
||||||
|
{"label": "Q", "matrix": [1, 1], "x": 1, "y": 1, "w": 1},
|
||||||
|
{"label": "W", "matrix": [1, 2], "x": 2, "y": 1, "w": 1},
|
||||||
|
{"label": "E", "matrix": [1, 3], "x": 3, "y": 1, "w": 1},
|
||||||
|
{"label": "R", "matrix": [1, 4], "x": 4, "y": 1, "w": 1},
|
||||||
|
{"label": "T", "matrix": [1, 5], "x": 5, "y": 1, "w": 1},
|
||||||
|
|
||||||
|
{"label": "[{", "matrix": [6, 5], "x": 15, "y": 1, "w": 1},
|
||||||
|
{"label": "P", "matrix": [6, 4], "x": 14, "y": 1, "w": 1},
|
||||||
|
{"label": "O", "matrix": [6, 3], "x": 13, "y": 1, "w": 1},
|
||||||
|
{"label": "I", "matrix": [6, 2], "x": 12, "y": 1, "w": 1},
|
||||||
|
{"label": "U", "matrix": [6, 1], "x": 11, "y": 1, "w": 1},
|
||||||
|
{"label": "Y", "matrix": [6, 0], "x": 10, "y": 1, "w": 1},
|
||||||
|
|
||||||
|
{"label": "CAPS", "matrix": [2, 0], "x": 0, "y": 2, "w": 1},
|
||||||
|
{"label": "A", "matrix": [2, 1], "x": 1, "y": 2, "w": 1},
|
||||||
|
{"label": "S", "matrix": [2, 2], "x": 2, "y": 2, "w": 1},
|
||||||
|
{"label": "D", "matrix": [2, 3], "x": 3, "y": 2, "w": 1},
|
||||||
|
{"label": "F", "matrix": [2, 4], "x": 4, "y": 2, "w": 1},
|
||||||
|
{"label": "G", "matrix": [2, 5], "x": 5, "y": 2, "w": 1},
|
||||||
|
|
||||||
|
{"label": "'\"", "matrix": [7, 5], "x": 15, "y": 2, "w": 1},
|
||||||
|
{"label": ";:", "matrix": [7, 4], "x": 14, "y": 2, "w": 1},
|
||||||
|
{"label": "L", "matrix": [7, 3], "x": 13, "y": 2, "w": 1},
|
||||||
|
{"label": "K", "matrix": [7, 2], "x": 12, "y": 2, "w": 1},
|
||||||
|
{"label": "J", "matrix": [7, 1], "x": 11, "y": 2, "w": 1},
|
||||||
|
{"label": "H", "matrix": [7, 0], "x": 10, "y": 2, "w": 1},
|
||||||
|
|
||||||
|
{"label": "LSFT", "matrix": [3, 0], "x": 0, "y": 3, "w": 1},
|
||||||
|
{"label": "Z", "matrix": [3, 1], "x": 1, "y": 3, "w": 1},
|
||||||
|
{"label": "X", "matrix": [3, 2], "x": 2, "y": 3, "w": 1},
|
||||||
|
{"label": "C", "matrix": [3, 3], "x": 3, "y": 3, "w": 1},
|
||||||
|
{"label": "V", "matrix": [3, 4], "x": 4, "y": 3, "w": 1},
|
||||||
|
{"label": "B", "matrix": [3, 5], "x": 5, "y": 3, "w": 1},
|
||||||
|
|
||||||
|
{"label": "RSFT", "matrix": [8, 5], "x": 15, "y": 3, "w": 1},
|
||||||
|
{"label": "/?", "matrix": [8, 4], "x": 14, "y": 3, "w": 1},
|
||||||
|
{"label": ".>", "matrix": [8, 3], "x": 13, "y": 3, "w": 1},
|
||||||
|
{"label": ",<", "matrix": [8, 2], "x": 12, "y": 3, "w": 1},
|
||||||
|
{"label": "M", "matrix": [8, 1], "x": 11, "y": 3, "w": 1},
|
||||||
|
{"label": "N", "matrix": [8, 0], "x": 10, "y": 3, "w": 1},
|
||||||
|
|
||||||
|
{"label": "LALT", "matrix": [4, 0], "x": 0, "y": 4, "w": 1},
|
||||||
|
{"label": "LCLT", "matrix": [4, 1], "x": 1, "y": 4, "w": 1},
|
||||||
|
{"label": "____", "matrix": [4, 2], "x": 2, "y": 4, "w": 1},
|
||||||
|
{"label": "SPC", "matrix": [4, 3], "x": 3, "y": 4, "w": 1},
|
||||||
|
{"label": "ESC", "matrix": [4, 4], "x": 4, "y": 4, "w": 1},
|
||||||
|
{"label": "ENCL", "matrix": [4, 5], "x": 5, "y": 4, "w": 1},
|
||||||
|
|
||||||
|
{"label": "ENCR", "matrix": [9, 5], "x": 15, "y": 4, "w": 1},
|
||||||
|
{"label": "BSPC", "matrix": [9, 4], "x": 14, "y": 4, "w": 1},
|
||||||
|
{"label": "ENT", "matrix": [9, 3], "x": 13, "y": 4, "w": 1},
|
||||||
|
{"label": "_NAV", "matrix": [9, 2], "x": 12, "y": 4, "w": 1},
|
||||||
|
{"label": "RALT", "matrix": [9, 1], "x": 11, "y": 4, "w": 1},
|
||||||
|
{"label": "LGUI", "matrix": [9, 0], "x": 10, "y": 4, "w": 1},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#define DEBOUNCE 8
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* KEYMAP KEYMAP KEYMAP, QUAK!
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#define QUAK_A (MT(MOD_LGUI, KC_A))
|
||||||
|
#define QUAK_S (MT(MOD_LALT, KC_S))
|
||||||
|
#define QUAK_D (MT(MOD_LSFT, KC_D))
|
||||||
|
#define QUAK_F (MT(MOD_LCTL, KC_F))
|
||||||
|
#define QUAK_J (MT(MOD_LCTL, KC_J))
|
||||||
|
#define QUAK_K (MT(MOD_LSFT, KC_K))
|
||||||
|
#define QUAK_L (MT(MOD_LALT, KC_L))
|
||||||
|
#define QUAK__ (MT(MOD_LGUI, KC_SCLN))
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_BS,
|
||||||
|
_GM,
|
||||||
|
_NV,
|
||||||
|
_CH,
|
||||||
|
_MS,
|
||||||
|
|
||||||
|
_CAPS, // for lighting layers only, do not assign keymap!
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
* keyboard layout
|
||||||
|
* ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
|
||||||
|
* │ESC │ 1! │ 2@ │ 3# │ 4$ │ 5% │ │ 6^ │ 7& │ 8* │ 9( │ 0) │ __ │
|
||||||
|
* ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||||
|
* │TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ \| │
|
||||||
|
* ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||||
|
* │_CH │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ;: │ '" │
|
||||||
|
* ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||||
|
* │LSFT│ Z │ X │ C │ V │ B │ ┌────┐ ┌────┐ │ N │ M │ ,< │ .> │ /? │RSFT│
|
||||||
|
* └────┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┐│ENCL│ │ENCL│┌──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴────┘
|
||||||
|
* │LALT│LCTL│ __ │SPC │ESC │└────┘ └────┘│LALT│LCTL│____│SPC │ESC │
|
||||||
|
* └────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
/// [TEMPLATE]
|
||||||
|
// [<LAYER>] = LAYOUT(
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// ),
|
||||||
|
|
||||||
|
// base layer
|
||||||
|
[_BS] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
MO(_CH), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, 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_RSFT,
|
||||||
|
KC_LALT, KC_LCTL, KC_ESC, KC_SPC, KC_DEL, _______, _______, KC_BSPC, KC_ENT, MO(_NV), _______, KC_RGUI,
|
||||||
|
),
|
||||||
|
|
||||||
|
// gaming layer
|
||||||
|
[_GM] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
KC_TAB, KC_T, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_LCTL, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_G, KC_B, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LALT, KC_LCTL, KC_ESC, KC_SPC, KC_DEL, DF(_BS), _______, KC_BSPC, KC_ENT, MO(_NV), _______, KC_RGUI,
|
||||||
|
),
|
||||||
|
|
||||||
|
// navigation layer
|
||||||
|
[_NV] = LAYOUT(
|
||||||
|
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_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_F12,
|
||||||
|
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______,
|
||||||
|
),
|
||||||
|
|
||||||
|
// div
|
||||||
|
[_CH] = LAYOUT(
|
||||||
|
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_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
),
|
||||||
|
|
||||||
|
// mouse layer
|
||||||
|
[_MS] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_BTN2, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
// /* Indicator LED Configuraton */
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_BASE[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_YELLOW});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_GAME[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_SPRINGGREEN});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_NAV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_DIV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_MOUS[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_CAPS[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_WHITE});
|
||||||
|
//
|
||||||
|
// const rgblight_segment_t * const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||||
|
// [_BASE] = rgb_layer_BASE,
|
||||||
|
// [_GAME] = rgb_layer_GAME,
|
||||||
|
// [_NAV] = rgb_layer_NAV,
|
||||||
|
// [_DIV] = rgb_layer_DIV,
|
||||||
|
// [_MOUS] = rgb_layer_MOUS,
|
||||||
|
// [_CAPS] = rgb_layer_CAPS
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// void keyboard_post_init_user(void) {
|
||||||
|
// rgblight_layers = rgb_layers;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// bool led_update_user(led_t led_state) {
|
||||||
|
// rgblight_set_layer_state(_CAPS, led_state.caps_lock);
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// layer_state_t default_layer_state_set_user(layer_state_t state) {
|
||||||
|
// rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
|
||||||
|
// rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME));
|
||||||
|
// return state;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
// rgblight_set_layer_state(_NAV, layer_state_cmp(state, _NAV));
|
||||||
|
// rgblight_set_layer_state(_DIV, layer_state_cmp(state, _DIV));
|
||||||
|
// rgblight_set_layer_state(_MOUS, layer_state_cmp(state, _MOUS));
|
||||||
|
// return state;
|
||||||
|
// }
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
DEBOUNCE_TYPE = sym_defer_g
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#define DEBOUNCE 8
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
* KEYMAP KEYMAP KEYMAP, QUAK!
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#define QUAK_A (MT(MOD_LGUI, KC_A))
|
||||||
|
#define QUAK_S (MT(MOD_LALT, KC_S))
|
||||||
|
#define QUAK_D (MT(MOD_LSFT, KC_D))
|
||||||
|
#define QUAK_F (MT(MOD_LCTL, KC_F))
|
||||||
|
#define QUAK_J (MT(MOD_LCTL, KC_J))
|
||||||
|
#define QUAK_K (MT(MOD_LSFT, KC_K))
|
||||||
|
#define QUAK_L (MT(MOD_LALT, KC_L))
|
||||||
|
#define QUAK__ (MT(MOD_LGUI, KC_SCLN))
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_BS,
|
||||||
|
_GM,
|
||||||
|
_NV,
|
||||||
|
_CH,
|
||||||
|
_MS,
|
||||||
|
|
||||||
|
_CAPS, // for lighting layers only, do not assign keymap!
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||||
|
[_BS] = { ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_WH_D, KC_WH_U) },
|
||||||
|
[_GM] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U) },
|
||||||
|
[_NV] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(_______, _______) },
|
||||||
|
[_CH] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||||
|
[_MS] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
* keyboard layout
|
||||||
|
* ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
|
||||||
|
* │ESC │ 1! │ 2@ │ 3# │ 4$ │ 5% │ │ 6^ │ 7& │ 8* │ 9( │ 0) │ __ │
|
||||||
|
* ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||||
|
* │TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ \| │
|
||||||
|
* ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||||
|
* │_CH │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ;: │ '" │
|
||||||
|
* ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||||
|
* │LSFT│ Z │ X │ C │ V │ B │ ┌────┐ ┌────┐ │ N │ M │ ,< │ .> │ /? │RSFT│
|
||||||
|
* └────┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┐│ENCL│ │ENCL│┌──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴────┘
|
||||||
|
* │LALT│LCTL│ESC │SPC │DEL │└────┘ └────┘│LALT│LCTL│____│SPC │ESC │
|
||||||
|
* └────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
/// [TEMPLATE]
|
||||||
|
// [<LAYER>] = LAYOUT(
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// ),
|
||||||
|
|
||||||
|
// base layer
|
||||||
|
[_BS] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
MO(_CH), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, 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_RSFT,
|
||||||
|
KC_LALT, KC_LCTL, KC_ESC, KC_SPC, KC_DEL, _______, _______, KC_BSPC, KC_ENT, MO(_NV), _______, KC_RGUI
|
||||||
|
),
|
||||||
|
|
||||||
|
// gaming layer
|
||||||
|
[_GM] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
KC_TAB, KC_T, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_LCTL, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_G, KC_B, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LALT, KC_LCTL, KC_ESC, KC_SPC, KC_DEL, DF(_BS), _______, KC_BSPC, KC_ENT, MO(_NV), _______, KC_RGUI
|
||||||
|
),
|
||||||
|
|
||||||
|
// navigation layer
|
||||||
|
[_NV] = LAYOUT(
|
||||||
|
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_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_F12,
|
||||||
|
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
// div
|
||||||
|
[_CH] = LAYOUT(
|
||||||
|
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_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
// mouse layer
|
||||||
|
[_MS] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_BTN2, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
// /* Indicator LED Configuraton */
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_BASE[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_YELLOW});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_GAME[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_SPRINGGREEN});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_NAV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_DIV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_MOUS[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE});
|
||||||
|
// const rgblight_segment_t PROGMEM rgb_layer_CAPS[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_WHITE});
|
||||||
|
//
|
||||||
|
// const rgblight_segment_t * const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||||
|
// [_BASE] = rgb_layer_BASE,
|
||||||
|
// [_GAME] = rgb_layer_GAME,
|
||||||
|
// [_NAV] = rgb_layer_NAV,
|
||||||
|
// [_DIV] = rgb_layer_DIV,
|
||||||
|
// [_MOUS] = rgb_layer_MOUS,
|
||||||
|
// [_CAPS] = rgb_layer_CAPS
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// void keyboard_post_init_user(void) {
|
||||||
|
// rgblight_layers = rgb_layers;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// bool led_update_user(led_t led_state) {
|
||||||
|
// rgblight_set_layer_state(_CAPS, led_state.caps_lock);
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// layer_state_t default_layer_state_set_user(layer_state_t state) {
|
||||||
|
// rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
|
||||||
|
// rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME));
|
||||||
|
// return state;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
// rgblight_set_layer_state(_NAV, layer_state_cmp(state, _NAV));
|
||||||
|
// rgblight_set_layer_state(_DIV, layer_state_cmp(state, _DIV));
|
||||||
|
// rgblight_set_layer_state(_MOUS, layer_state_cmp(state, _MOUS));
|
||||||
|
// return state;
|
||||||
|
// }
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
DEBOUNCE_TYPE = sym_defer_g
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include_next <mcuconf.h>
|
||||||
|
|
||||||
|
#undef STM32_SERIAL_USE_USART6
|
||||||
|
#define STM32_SERIAL_USE_USART6 TRUE
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
#include "gpio.h"
|
||||||
|
|
||||||
|
void keyboard_pre_init_kb(void) {
|
||||||
|
// set pulldown on handedness pin
|
||||||
|
gpio_set_pin_input_low(A2);
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# Description
|
||||||
|
|
||||||
|
Configuration for my custom keyboard `qua-ken` base on the `Sofle 2.1`.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [zegonix](https://github.com/zegonix)
|
||||||
|
* Hardware Supported: [qua-ken](https://github.com/zegonix/qua-ken)
|
||||||
|
* Hardware Availability: the pcb is open source, order it yourself
|
||||||
|
|
||||||
|
# Building and flashing firmware
|
||||||
|
To build and flash the firmware, set up the qmk tool and use the compile and flash commands:
|
||||||
|
|
||||||
|
```
|
||||||
|
qmk config user.keyboard=zegonix/qua_ken
|
||||||
|
qmk config user.keymap=quaken
|
||||||
|
qmk compile
|
||||||
|
qmk flash
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively you can use the QMK root level Makefile:
|
||||||
|
|
||||||
|
```
|
||||||
|
make zegonix/qua_ken:quaken // build firmware
|
||||||
|
make zegonix/qua_ken:quaken:dfu-utils // build and flash firmware
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
|
|
||||||
|
# Bootloader
|
||||||
|
|
||||||
|
Enter the bootloader in 2 ways:
|
||||||
|
|
||||||
|
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix, which is be Escape key, while connecting the keyboard. *This variant was not tested*
|
||||||
|
* **Physical reset button**: Short the two Pins of J2 (usually a pair of tweezers works well) and press the reset button (only button on the backside)
|
||||||
|
* **Keycode in layout**: Press the key mapped to `QK_BOOT`.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
SERIAL_DRIVER = usart
|
||||||
|
|
||||||
|
ENCODER_ENABLE = yes
|
||||||
|
ENCODER_MAP_ENABLE = yes
|
||||||
|
|
||||||
|
WS2812_DRIVER_REQUIRED = no
|
||||||
|
|
||||||
Reference in New Issue
Block a user