[Keyboard] mechwild/bde cleanup and refactor (#18149)

This commit is contained in:
Less/Rikki
2022-08-28 13:16:20 -04:00
committed by GitHub
parent 585b134729
commit 4adb64a91b
41 changed files with 479 additions and 487 deletions

View File

@@ -17,46 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
/* Key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 7
/* Key matrix pins */
#define MATRIX_ROW_PINS { C6, D7, B4, D4, E6, B2 }
#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4, B5 }
/* Encoder pins */
#define ENCODERS_PAD_A { D3 }
#define ENCODERS_PAD_B { D2 }
#define ENCODERS_PAD_A { D2 }
#define ENCODERS_PAD_B { D3 }
/* Encoder resolution */
#define ENCODER_RESOLUTION 4
#define TAP_CODE_DELAY 10
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define OLED_FONT_H "keyboards/mechwild/bde/lib/rev2.c"
#define RGB_DI_PIN B6
#ifdef RGB_DI_PIN
# define RGBLED_NUM 8
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== Chosen enabled animations ==*/
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

View File

@@ -3,5 +3,70 @@
"usb": {
"pid": "0x170A",
"device_version": "1.0.1"
},
"matrix_pins": {
"rows":[ "C6", "D7", "B4", "D4", "E6", "B2" ],
"cols": ["B3", "B1", "F7", "F6", "F5", "F4", "B5" ]
},
"diode_direction": "COL2ROW",
"rgblight": {
"led_count": 8,
"pin": "B6",
"animations": {
"rainbow_swirl": true
},
"hue_steps": 8,
"saturation_steps": 8,
"brightness_steps": 8
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "label":"Q", "x":0, "y":0},
{ "matrix": [0, 1], "label":"W", "x":1, "y":0},
{ "matrix": [0, 2], "label":"E", "x":2, "y":0},
{ "matrix": [0, 3], "label":"R", "x":3, "y":0},
{ "matrix": [0, 4], "label":"T", "x":4, "y":0},
{ "matrix": [0, 5], "label":"Y", "x":5, "y":0},
{ "matrix": [0, 6], "label":"U", "x":6, "y":0},
{ "matrix": [3, 6], "label":"I", "x":7, "y":0},
{ "matrix": [3, 5], "label":"O", "x":8, "y":0},
{ "matrix": [3, 4], "label":"P", "x":9, "y":0},
{ "matrix": [3, 3], "label":"7", "x":10, "y":0},
{ "matrix": [3, 2], "label":"8", "x":11, "y":0},
{ "matrix": [3, 1], "label":"9", "x":12, "y":0},
{ "matrix": [3, 0], "label":"Mute", "x":13, "y":0},
{ "matrix": [1, 0], "label":"A", "x":0, "y":1},
{ "matrix": [1, 1], "label":"S", "x":1, "y":1},
{ "matrix": [1, 2], "label":"D", "x":2, "y":1},
{ "matrix": [1, 3], "label":"F", "x":3, "y":1},
{ "matrix": [1, 4], "label":"G", "x":4, "y":1},
{ "matrix": [1, 5], "label":"H", "x":5, "y":1},
{ "matrix": [1, 6], "label":"J", "x":6, "y":1},
{ "matrix": [4, 6], "label":"K", "x":7, "y":1},
{ "matrix": [4, 5], "label":"L", "x":8, "y":1},
{ "matrix": [4, 4], "label":"Esc", "x":9, "y":1},
{ "matrix": [4, 3], "label":"4", "x":10, "y":1},
{ "matrix": [4, 2], "label":"5", "x":11, "y":1},
{ "matrix": [4, 1], "label":"6", "x":12, "y":1},
{ "matrix": [4, 0], "label":"0", "x":13, "y":1},
{ "matrix": [2, 0], "label":"Z", "x":0, "y":2},
{ "matrix": [2, 1], "label":"X", "x":1, "y":2},
{ "matrix": [2, 2], "label":"C", "x":2, "y":2},
{ "matrix": [2, 3], "label":"V", "x":3, "y":2},
{ "matrix": [2, 4], "label":"Back", "x":4, "y":2},
{ "matrix": [2, 5], "label":"Space", "x":5, "y":2},
{ "matrix": [2, 6], "label":"B", "x":6, "y":2},
{ "matrix": [5, 6], "label":"N", "x":7, "y":2},
{ "matrix": [5, 5], "label":"M", "x":8, "y":2},
{ "matrix": [5, 4], "label":"Enter", "x":9, "y":2},
{ "matrix": [5, 3], "label":"1", "x":10, "y":2},
{ "matrix": [5, 2], "label":"2", "x":11, "y":2},
{ "matrix": [5, 1], "label":"3", "x":12, "y":2},
{ "matrix": [5, 0], "label":"EQL", "x":13, "y":2}
]
}
}
}

View File

@@ -0,0 +1,69 @@
/* Copyright 2022 Kyle McCreery
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#define FN1_BSPC LT(1, KC_BSPC)
#define FN2_SPC LT(2, KC_SPC)
#define FN3_B LT(3, KC_B)
#define CTL_Z CTL_T(KC_Z)
#define ALT_X ALT_T(KC_X)
#define ALT_N ALGR_T(KC_N)
#define CTL_M RCTL_T(KC_M)
#define SFT_ENT RSFT_T(KC_ENT)
#define WIN_C LGUI_T(KC_C)
enum layer_names {
_BASE,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_P7, KC_P8, KC_P9, KC_MUTE,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_P4, KC_P5, KC_P6, KC_P0,
CTL_Z, ALT_X, WIN_C, KC_V, FN1_BSPC, FN2_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT, KC_P1, KC_P2, KC_P3, KC_MINS
),
[_FN1] = LAYOUT(
_______, _______, _______, QK_BOOT, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_7, KC_8, KC_9, KC_NLCK,
_______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_SCLN, KC_QUOT, KC_4, KC_5, KC_6, KC_0,
_______, _______, _______, _______, _______, KC_TAB, KC_LGUI, KC_COMM, KC_DOT, KC_SLSH, KC_1, KC_2, KC_3, KC_EQL
),
[_FN2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, KC_AMPR, KC_ASTR, KC_LPRN, KC_CLCK,
_______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_COLN, KC_DQUO, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN,
_______, _______, _______, _______, KC_DEL, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_PLUS
),
[_FN3] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
// If you are not using an encoder, remember to set ENCODER_ENABLE and ENCODER_MAP_ENABLE to no in rules.mk.
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
};
#endif

View File

@@ -0,0 +1,13 @@
# If you are using a custom Pro Micro-compatible dev board (Elite-C, Sea-Micro, etc)
# you may need to uncomment and modify this BOOTLOADER setting to use the correct
# bootloader. (e.g. Elite-Cs use "atmel-dfu", not "caterina".)
#
# See the QMK docs for more information:
# https://docs.qmk.fm/#/flashing
# https://docs.qmk.fm/#/driver_installation_zadig?id=list-of-known-bootloaders
# BOOTLOADER = caterina
# If you are not using an encoder, set these options to no.
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@@ -0,0 +1,22 @@
/* Copyright 2022 Kyle McCreery
*
* 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
#define IGNORE_MOD_TAP_INTERRUPT
/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
#define TAPPING_TERM 250

View File

@@ -0,0 +1,68 @@
/* Copyright 2022 Kyle McCreery
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#define FN1_BSPC LT(1, KC_BSPC)
#define FN2_SPC LT(2, KC_SPC)
#define FN3_B LT(3, KC_B)
#define CTL_Z CTL_T(KC_Z)
#define ALT_X ALT_T(KC_X)
#define ALT_N ALGR_T(KC_N)
#define CTL_M RCTL_T(KC_M)
#define SFT_ENT RSFT_T(KC_ENT)
#define WIN_C LGUI_T(KC_C)
enum layer_names {
_BASE,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_P7, KC_P8, KC_P9, KC_MUTE,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_P4, KC_P5, KC_P6, KC_P0,
CTL_Z, ALT_X, WIN_C, KC_V, FN1_BSPC, FN2_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT, KC_P1, KC_P2, KC_P3, KC_MINS
),
[_FN1] = LAYOUT(
_______, _______, _______, QK_BOOT, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_7, KC_8, KC_9, KC_NLCK,
_______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_SCLN, KC_QUOT, KC_4, KC_5, KC_6, KC_0,
_______, _______, _______, _______, _______, KC_TAB, KC_LGUI, KC_COMM, KC_DOT, KC_SLSH, KC_1, KC_2, KC_3, KC_EQL
),
[_FN2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, KC_AMPR, KC_ASTR, KC_LPRN, KC_CLCK,
_______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_COLN, KC_DQUO, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN,
_______, _______, _______, _______, KC_DEL, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_PLUS
),
[_FN3] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD
)
};
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
};
#endif

View File

@@ -0,0 +1,3 @@
VIA_ENABLE = yes
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@@ -1,21 +1,20 @@
/* Copyright 2022 Kyle McCreery
*
* 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 <http://www.gnu.org/licenses/>.
/* Copyright 2022 Kyle McCreery
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include "bde.h"
#include "rev2.h"
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
@@ -34,30 +33,25 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
#endif
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_270; // flips the display 270 degrees
}
static const char PROGMEM mw_logo[] = {
0x8A, 0x8B, 0x8C, 0x8D, '\r',
0xAA, 0xAB, 0xAC, 0xAD, 0xAE,
0xCA, 0xCB, 0xCC, 0xCD, '\r',
0x20, 0x8E, 0x8F, 0x90, 0x00};
static void render_logo(void) { // Render MechWild "MW" Logo
static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
oled_set_cursor(0,0);
oled_write_P(logo_1, false);
oled_set_cursor(0,1);
oled_write_P(logo_2, false);
oled_set_cursor(0,2);
oled_write_P(logo_3, false);
oled_set_cursor(0,3);
oled_write_P(logo_4, false);
}
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
return OLED_ROTATION_270; // flips the display 270 degrees
}
bool oled_task_user(void) {
render_logo();
oled_set_cursor(0,6);
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
oled_write_ln_P(PSTR("Layer"), false);
oled_write_P(mw_logo, false); // Render MechWild "MW" Logo
oled_set_cursor(0,6);
oled_write_ln_P(PSTR("Layer"), false);
switch (get_highest_layer(layer_state)) {
case 0:
@@ -75,14 +69,13 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
default:
oled_write_ln_P(PSTR("Undef"), false);
}
oled_write_ln_P(PSTR(""), false);
oled_write_ln_P(PSTR(""), false);
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
return false;
}
return true;
}
#endif

View File

@@ -16,16 +16,3 @@
#pragma once
#include "quantum.h"
#define LAYOUT( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D \
) { \
{ K00, K01, K02, K03, K04, K05, K06 }, \
{ K10, K11, K12, K13, K14, K15, K16 }, \
{ K20, K21, K22, K23, K24, K25, K26 }, \
{ K0D, K0C, K0B, K0A, K09, K08, K07 }, \
{ K1D, K1C, K1B, K1A, K19, K18, K17 }, \
{ K2D, K2C, K2B, K2A, K29, K28, K27 } \
}