[Keymap] moults31 userspace and keymaps (#12025)

This commit is contained in:
Zac Moulton 2021-09-10 18:56:50 -07:00 committed by GitHub
parent 759d1927f0
commit d7747a2d70
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 924 additions and 4 deletions

View file

@ -0,0 +1,20 @@
/*
* Copyright 2021 moults31
*
* 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
#define DYNAMIC_KEYMAP_LAYER_COUNT 3

View file

@ -0,0 +1,84 @@
/* Copyright 2021 moults31
* Adapted from kuenhlee and Don Kjer and Coirault
*
* 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
#include "moults31.h"
// Layer shorthand
enum _layer {
_BASE,
_FUNC,
_LAYER3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BASE: Base Layer (Default Layer)
* ,-----------------------------------------------------------. ,--------------.
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
* |-----------------------------------------------------------| |--------------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
* |-----------------------------------------------------------| |--------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn|
* |------------------------------------------------------ Ret | `--------------'
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| |
* |-----------------------------------------------------------| ,----.
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
* |-----------------------------------------------------------| ,-------------.
* |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig |
* `-----------------------------------------------------------' `-------------'
*/
[_BASE] = LAYOUT_tkl_ansi( /* Base Layer */
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
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_BSPC, KC_INS, KC_HOME, KC_PGUP,
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,
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_ENT,
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_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap _FUNC: Function Layer
* ,-----------------------------------------------------------. ,--------------.
* | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | |
* |-----------------------------------------------------------| |--------------|
* | | | | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| |--------------|
* | | | | | | | | | | | | | | | | | | |
* |------------------------------------------------------- | `--------------'
* | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| ,----.
* | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| ,-------------.
* | | | | | |Func | | | | | | |
* `-----------------------------------------------------------' `-------------'
*/
[_FUNC] = LAYOUT_tkl_ansi( /* Function Layer */
_______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, M_VSC_MVEDTRPRVGRP, _______, M_VSC_MVEDTRNXTGRP
),
[_LAYER3] = LAYOUT_tkl_ansi( /* Function Layer */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View file

@ -0,0 +1,10 @@
# The default keymap for Durgod Taurus K320.
Layer 0 : Standard Keys TKL layout
Layer 1 : Media control and VScode navigation
- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
## Supported PCBs
This keymap intended for use on Durgod K320 ANSI

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

View file

@ -0,0 +1,42 @@
/*
* Copyright 2021 moults31
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
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_BSPC,
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,
CTL_T(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_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_SLSH, KC_RSHFT, KC_UP, LT(2, KC_DEL),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_COMM, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = 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_DEL,
_______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_HOME, KC_END, RESET,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, EEP_RST,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
),
[2] = LAYOUT(
RGB_MOD, 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,
_______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET,
_______, RGB_SAD, RGB_HUD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, _______,
_______, _______, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SPD
),
};

View file

@ -0,0 +1,11 @@
# moults31 DZ60RBG V2 Layout
Similar to the default dz60rgb v2 layout with some minor changes for quality of life in programming.
Brief summary of improvements over default:
* More intuitive media keys in layer 1
* More intuitive RGB control keys in layer 2
* Standard left-alt
* Anne Pro 2 style home/end placement in layer 1
* Grave key moved to right-alt position for easier ctrl-grave vscode shortcut
* Removed layer 4 (mac layout?)

View file

@ -0,0 +1 @@
VIA_ENABLE = yes

View file

@ -0,0 +1,92 @@
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
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
#include "moults31.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
// Tab Q W E R T Y U I O P [ ] \ PgUp
// Caps A S D F G H J K L ; " Enter PgDn
// Sh_L Z X C V B N M , . ? Sh_R Up End
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
// if that's your preference.
//
// To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
// it'll be back to normal when you plug it back in.
[0] = LAYOUT(
KC_ESC, 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_PSCR, KC_MPLY,
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_BSPC, KC_HOME,
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_END,
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_ENT, KC_DEL,
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_UP, MO(2),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, _______, _______, RESET, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT(
M_GDB_STOP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_DBGCNSLFOCUS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_PLAY, M_GDB_PAUSE,
_______, M_VSC_FILEPRV, M_VSC_FILENXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_STEPOUT, _______,
_______, _______, _______, _______, _______, _______, _______, M_GDB_RESTART, M_GDB_STEPIN, M_GDB_STEPOVER
),
};
bool encoder_update_user(uint8_t index, bool clockwise) {
const layer_state_t curr_layer = get_highest_layer(layer_state);
if(curr_layer == 2) {
if (clockwise) {
moults31_tap_custom_code(M_VSC_FILENXT);
} else {
moults31_tap_custom_code(M_VSC_FILEPRV);
}
}
else if(curr_layer == 1) {
if (clockwise) {
moults31_tap_custom_code(M_VSC_VIEWSIZEINC);
} else {
moults31_tap_custom_code(M_VSC_VIEWSIZEDEC);
}
}
else {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
return false;
}

View file

@ -0,0 +1,170 @@
/* Copyright 2020 MrT1ddl3s
*
* 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
#include "moults31.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho(
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_MUTE, MO(10), KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_ortho(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS,
KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS,
KC_END , KC_UP, KC_PGDN, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC,
KC_TRNS, MO(10), KC_BSPC, KC_DEL, KC_TRNS
),
[2] = LAYOUT_ortho(
KC_2, KC_TRNS, KC_TRNS, KC_TRNS,
M_VSC_MVEDTRPRVGRP, M_VSC_MVEDTRNXTGRP, KC_TRNS, KC_TRNS,
M_VSC_EDGRPPRV, M_VSC_EDGRPNXT, KC_TRNS, KC_TRNS,
KC_TRNS, M_VSC_SIDEBARFOCUS, M_VSC_SIDEBARCLOSE, M_VSC_TERMFOCUS, KC_TRNS,
M_VSC_FILECLOSE, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_ortho(
KC_3, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, M_GDB_PAUSE,
M_GDB_RESTART, M_GDB_STOP, KC_TRNS, M_GDB_PAUSE,
M_VSC_DBGCNSLFOCUS, M_GDB_STEPOVER, M_GDB_STEPIN, M_GDB_STEPOUT, M_GDB_PLAY,
KC_TRNS, MO(10), KC_TRNS, KC_TRNS, M_GDB_PLAY
),
[4] = LAYOUT_ortho(
KC_4, KC_TRNS, KC_TRNS, KC_TRNS,
M_OBS_VOICE_UNMUTE, M_OBS_MOOSIC_MUTE, M_OBS_MOOSIC_UNMUTE, KC_TRNS,
M_OBS_DSKT_MUTE, M_OBS_DSKT_UNMUTE, M_OBS_VOICE_MUTE, KC_TRNS,
KC_TRNS, M_OBS_BRB, M_OBS_GAME, M_OBS_JSTCHT, KC_TRNS,
KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[5] = LAYOUT_ortho(
KC_5, 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, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[6] = LAYOUT_ortho(
KC_6, 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, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[7] = LAYOUT_ortho(
KC_7, 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, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[8] = LAYOUT_ortho(
KC_8, 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, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[9] = LAYOUT_ortho(
KC_9, 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, MO(10), KC_TRNS, KC_TRNS, KC_TRNS
),
[10] = LAYOUT_ortho(
RESET, KC_TRNS, KC_TRNS, KC_TRNS,
TO(7), TO(8), TO(9), KC_TRNS,
TO(4), TO(5), TO(6), KC_TRNS,
KC_TRNS, TO(1), TO(2), TO(3), KC_TRNS,
KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS
),
};
/* byte map for the goblin logo, knob goblin text, and level text */
static void render_goblin_logo(void) {
static const char PROGMEM my_logo[] = {
0x00, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x08, 0x08, 0x08,
0x08, 0x08, 0x08, 0x10, 0x20, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x40, 0xe0, 0x00,
0x00, 0x03, 0x06, 0x3c, 0x49, 0x91, 0x21, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x00, 0x60, 0x00,
0x00, 0x60, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00, 0x21, 0x91, 0x49, 0x3c, 0x06, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x60, 0x40, 0xc0, 0x06, 0x0e, 0x0f, 0x67, 0x50, 0xc0,
0xc0, 0x50, 0x67, 0x0f, 0x0e, 0x06, 0xc0, 0x40, 0x60, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7b, 0xc7, 0x8e, 0x1e, 0x3e, 0x3e,
0x3e, 0x3e, 0x1e, 0x8e, 0xc7, 0x7b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04,
0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83,
0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x04, 0x06, 0x09, 0x10, 0x00, 0x1f, 0x03, 0x06, 0x0c, 0x1f,
0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x1f, 0x12, 0x12, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x78, 0xfc, 0x84, 0xa4, 0xa4, 0x68, 0x00, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0xfc, 0x94,
0x94, 0x68, 0x00, 0xfc, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x00, 0xfc, 0x18, 0x30, 0x60, 0xfc, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00,
0x00, 0xf0, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02,
0x01, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(my_logo, sizeof(my_logo));
}
void oled_task_user(void) {
render_goblin_logo();
oled_set_cursor(0,11);
switch (get_highest_layer(layer_state)) {
case 0:
oled_write_P(PSTR(" NUM\n"), false);
break;
case 1:
oled_write_P(PSTR(" NAV\n"), false);
break;
case 2:
oled_write_P(PSTR(" CODE\n"), false);
break;
case 3:
oled_write_P(PSTR(" GDB\n"), false);
break;
case 4:
oled_write_P(PSTR(" OBS\n"), false);
break;
default:
oled_write_P(PSTR(" NONE\n"), false);
break;
}
}

View file

@ -0,0 +1,3 @@
# Ortho Knob Goblin Layout
Via functionality for the Knob Goblin. Ortho layout.

View file

@ -0,0 +1,3 @@
VIA_ENABLE = YES
LTO_ENABLE = YES
BOOTLOADER = atmel-dfu

View file

@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_MUTE, MO(1), KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_ortho(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS,
KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS,
@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC,
KC_TRNS, KC_TRNS, KC_BSPC, KC_DEL, KC_TRNS
),
[2] = LAYOUT_ortho(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_ortho(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@ -50,4 +50,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
};

59
users/moults31/gdb.c Normal file
View file

@ -0,0 +1,59 @@
/* Copyright 2021 moults31
*
* 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 "gdb.h"
bool process_record_gdb(uint16_t keycode, keyrecord_t *record) {
bool rv = true;
switch (keycode) {
case M_GDB_PLAY:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_F5));
}
break;
case M_GDB_PAUSE:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_F6));
}
break;
case M_GDB_STEPOVER:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_F10));
}
break;
case M_GDB_STEPIN:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_F11));
}
break;
case M_GDB_STEPOUT:
if (record->event.pressed) {
SEND_STRING(SS_LSFT(SS_TAP(X_F11)));
}
break;
case M_GDB_RESTART:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LSFT(SS_TAP(X_F5))));
}
break;
case M_GDB_STOP:
if (record->event.pressed) {
SEND_STRING(SS_LSFT(SS_TAP(X_F5)));
}
break;
}
return rv;
}

21
users/moults31/gdb.h Normal file
View file

@ -0,0 +1,21 @@
/* Copyright 2021 moults31
*
* 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
#include QMK_KEYBOARD_H
#include "moults31.h"
bool process_record_gdb(uint16_t keycode, keyrecord_t *record);

114
users/moults31/moults31.c Normal file
View file

@ -0,0 +1,114 @@
/* Copyright 2021 moults31
*
* 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 "moults31.h"
bool moults31_tap_custom_code(uint16_t keycode) {
keyrecord_t record = {
.event = {
.pressed = 1,
},
};
return process_record_user(keycode, &record);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool rv = true;
switch (keycode) {
case M_MST_CODEBLOCK:
if (record->event.pressed) {
SEND_STRING("```");
}
break;
case M_VSC_TERMFOCUS:
case M_VSC_SIDEBARFOCUS:
case M_VSC_SIDEBARCLOSE:
case M_VSC_FILECLOSE:
case M_VSC_FILENXT:
case M_VSC_FILEPRV:
case M_VSC_DBGCNSLFOCUS:
case M_VSC_MVEDTRNXTGRP:
case M_VSC_MVEDTRPRVGRP:
case M_VSC_EDGRPNXT:
case M_VSC_EDGRPPRV:
case M_VSC_VIEWSIZEINC:
case M_VSC_VIEWSIZEDEC:
rv = process_record_vsc(keycode, record);
break;
case M_GDB_PLAY:
case M_GDB_PAUSE:
case M_GDB_STEPOVER:
case M_GDB_STEPIN:
case M_GDB_STEPOUT:
case M_GDB_RESTART:
case M_GDB_STOP:
rv = process_record_gdb(keycode, record);
break;
case M_OBS_BRB:
case M_OBS_GAME:
case M_OBS_JSTCHT:
case M_OBS_DSKT_MUTE:
case M_OBS_DSKT_UNMUTE:
case M_OBS_VOICE_MUTE:
case M_OBS_VOICE_UNMUTE:
case M_OBS_MOOSIC_MUTE:
case M_OBS_MOOSIC_UNMUTE:
rv = process_record_obs(keycode, record);
break;
}
return rv;
};
#ifdef ENCODER_ENABLE
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) {
const layer_state_t curr_layer = get_highest_layer(layer_state);
if (index == 1) { /* Bottom encoder */
if(curr_layer == 2 || curr_layer == 3) {
if (clockwise) {
moults31_tap_custom_code(M_VSC_FILENXT);
} else {
moults31_tap_custom_code(M_VSC_FILEPRV);
}
}
else {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
}
if (index == 0) { /* Top encoder */
if(curr_layer == 2 || curr_layer == 3) {
if (clockwise) {
moults31_tap_custom_code(M_VSC_VIEWSIZEINC);
} else {
moults31_tap_custom_code(M_VSC_VIEWSIZEDEC);
}
}
else {
if (clockwise) {
tap_code(KC_MNXT);
} else {
tap_code(KC_MPRV);
}
}
}
return false;
}
#endif

61
users/moults31/moults31.h Normal file
View file

@ -0,0 +1,61 @@
/* Copyright 2021 moults31
*
* 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
#include QMK_KEYBOARD_H
#include "vscode.h"
#include "obs.h"
#include "gdb.h"
bool moults31_tap_custom_code(uint16_t keycode);
enum custom_keycodes {
// VSCode keycodes
M_VSC_TERMFOCUS = SAFE_RANGE,
M_VSC_SIDEBARFOCUS,
M_VSC_SIDEBARCLOSE,
M_VSC_DBGCNSLFOCUS,
M_VSC_EDGRPNXT,
M_VSC_EDGRPPRV,
M_VSC_MVEDTRNXTGRP,
M_VSC_MVEDTRPRVGRP,
M_VSC_VIEWSIZEINC,
M_VSC_VIEWSIZEDEC,
M_VSC_FILECLOSE,
M_VSC_FILENXT,
M_VSC_FILEPRV,
// GDB keycodes (for vscode debugger)
M_GDB_PLAY,
M_GDB_PAUSE,
M_GDB_STEPOVER,
M_GDB_STEPIN,
M_GDB_STEPOUT,
M_GDB_RESTART,
M_GDB_STOP,
// MS Teams keycodes
M_MST_CODEBLOCK,
// OBS keycodes
M_OBS_BRB,
M_OBS_GAME,
M_OBS_JSTCHT,
M_OBS_DSKT_MUTE,
M_OBS_DSKT_UNMUTE,
M_OBS_VOICE_MUTE,
M_OBS_VOICE_UNMUTE,
M_OBS_MOOSIC_MUTE,
M_OBS_MOOSIC_UNMUTE,
};

80
users/moults31/obs.c Normal file
View file

@ -0,0 +1,80 @@
/* Copyright 2021 moults31
*
* 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 "obs.h"
bool process_record_obs(uint16_t keycode, keyrecord_t *record) {
// Apply all 4 mods for custom OBS macros
register_code(KC_LSHIFT);
register_code(KC_LCTL);
register_code(KC_LALT);
register_code(KC_LGUI);
switch (keycode) {
case M_OBS_BRB:
if (record->event.pressed) {
SEND_STRING("1");
}
break;
case M_OBS_GAME:
if (record->event.pressed) {
SEND_STRING("2");
}
break;
case M_OBS_JSTCHT:
if (record->event.pressed) {
SEND_STRING("3");
}
break;
case M_OBS_DSKT_MUTE:
if (record->event.pressed) {
SEND_STRING("4");
}
break;
case M_OBS_DSKT_UNMUTE:
if (record->event.pressed) {
SEND_STRING("5");
}
break;
case M_OBS_VOICE_MUTE:
if (record->event.pressed) {
SEND_STRING("6");
}
break;
case M_OBS_VOICE_UNMUTE:
if (record->event.pressed) {
SEND_STRING("7");
}
break;
case M_OBS_MOOSIC_MUTE:
if (record->event.pressed) {
SEND_STRING("8");
}
break;
case M_OBS_MOOSIC_UNMUTE:
if (record->event.pressed) {
SEND_STRING("9");
}
break;
}
// Unpress all 4 mods for custom OBS macros
unregister_code(KC_LSHIFT);
unregister_code(KC_LCTL);
unregister_code(KC_LALT);
unregister_code(KC_LGUI);
return true;
}

21
users/moults31/obs.h Normal file
View file

@ -0,0 +1,21 @@
/* Copyright 2021 moults31
*
* 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
#include QMK_KEYBOARD_H
#include "moults31.h"
bool process_record_obs(uint16_t keycode, keyrecord_t *record);

5
users/moults31/readme.md Normal file
View file

@ -0,0 +1,5 @@
# moults31 Userspace
## Features
- Custom macros for VScode, OBS, GDB (Visual)

10
users/moults31/rules.mk Normal file
View file

@ -0,0 +1,10 @@
SRC += moults31.c
# Custom macro sources
SRC += vscode.c
SRC += obs.c
SRC += gdb.c
ifneq ($(PLATFORM),CHIBIOS)
LTO_ENABLE = yes # Enable link time optimization
endif

90
users/moults31/vscode.c Normal file
View file

@ -0,0 +1,90 @@
/* Copyright 2021 moults31
*
* 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 "vscode.h"
bool process_record_vsc(uint16_t keycode, keyrecord_t *record) {
bool rv = true;
switch (keycode) {
case M_VSC_TERMFOCUS:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL("`"));
}
break;
case M_VSC_SIDEBARFOCUS:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL("0"));
}
break;
case M_VSC_SIDEBARCLOSE:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL("b"));
}
break;
case M_VSC_FILECLOSE:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL("w"));
}
break;
case M_VSC_FILENXT:
if (record->event.pressed) {
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_K) SS_TAP(X_PGDOWN) SS_UP(X_LCTRL));
}
break;
case M_VSC_FILEPRV:
if (record->event.pressed) {
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_K) SS_TAP(X_PGUP) SS_UP(X_LCTRL));
}
break;
case M_VSC_DBGCNSLFOCUS:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_D))));
}
break;
case M_VSC_MVEDTRNXTGRP:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_RIGHT))));
}
break;
case M_VSC_MVEDTRPRVGRP:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_LEFT))));
}
break;
case M_VSC_EDGRPNXT:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_L))));
}
break;
case M_VSC_EDGRPPRV:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_K))));
}
break;
case M_VSC_VIEWSIZEINC:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_P))));
}
break;
case M_VSC_VIEWSIZEDEC:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_O))));
}
break;
}
return rv;
}

21
users/moults31/vscode.h Normal file
View file

@ -0,0 +1,21 @@
/* Copyright 2021 moults31
*
* 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
#include QMK_KEYBOARD_H
#include "moults31.h"
bool process_record_vsc(uint16_t keycode, keyrecord_t *record);