~ruther/qmk_firmware

0ca04e6852c08c027b53c4f5bd460038636d2cb2 — QMK Bot 4 years ago f197b30 + d7747a2
Merge remote-tracking branch 'origin/master' into develop
A keyboards/durgod/k320/keymaps/moults31/config.h => keyboards/durgod/k320/keymaps/moults31/config.h +20 -0
@@ 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

A keyboards/durgod/k320/keymaps/moults31/keymap.c => keyboards/durgod/k320/keymaps/moults31/keymap.c +84 -0
@@ 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 */
      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                _______,  _______,  _______,
      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                          _______,
      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______
  ),
};


A keyboards/durgod/k320/keymaps/moults31/readme.md => keyboards/durgod/k320/keymaps/moults31/readme.md +10 -0
@@ 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

A keyboards/durgod/k320/keymaps/moults31/rules.mk => keyboards/durgod/k320/keymaps/moults31/rules.mk +2 -0
@@ 0,0 1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

A keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c => keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c +42 -0
@@ 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
    ),
};

A keyboards/dztech/dz60rgb/keymaps/moults31/readme.md => keyboards/dztech/dz60rgb/keymaps/moults31/readme.md +11 -0
@@ 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?)

A keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk => keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk +1 -0
@@ 0,0 1,1 @@
VIA_ENABLE = yes

A keyboards/gmmk/pro/keymaps/moults31/keymap.c => keyboards/gmmk/pro/keymaps/moults31/keymap.c +92 -0
@@ 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;
}

A keyboards/knobgoblin/keymaps/moults31/keymap.c => keyboards/knobgoblin/keymaps/moults31/keymap.c +170 -0
@@ 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;
	}
}

A keyboards/knobgoblin/keymaps/moults31/readme.md => keyboards/knobgoblin/keymaps/moults31/readme.md +3 -0
@@ 0,0 1,3 @@
# Ortho Knob Goblin Layout

Via functionality for the Knob Goblin. Ortho layout.
\ No newline at end of file

A keyboards/knobgoblin/keymaps/moults31/rules.mk => keyboards/knobgoblin/keymaps/moults31/rules.mk +3 -0
@@ 0,0 1,3 @@
VIA_ENABLE = YES
LTO_ENABLE = YES
BOOTLOADER = atmel-dfu

M keyboards/knobgoblin/keymaps/via/keymap.c => keyboards/knobgoblin/keymaps/via/keymap.c +4 -4
@@ 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
				 )

};
\ No newline at end of file
};

A users/moults31/gdb.c => users/moults31/gdb.c +59 -0
@@ 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;
}

A users/moults31/gdb.h => users/moults31/gdb.h +21 -0
@@ 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);

A users/moults31/moults31.c => users/moults31/moults31.c +114 -0
@@ 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

A users/moults31/moults31.h => users/moults31/moults31.h +61 -0
@@ 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,
};

A users/moults31/obs.c => users/moults31/obs.c +80 -0
@@ 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;
}

A users/moults31/obs.h => users/moults31/obs.h +21 -0
@@ 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);

A users/moults31/readme.md => users/moults31/readme.md +5 -0
@@ 0,0 1,5 @@
# moults31 Userspace

## Features

- Custom macros for VScode, OBS, GDB (Visual)

A users/moults31/rules.mk => users/moults31/rules.mk +10 -0
@@ 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

A users/moults31/vscode.c => users/moults31/vscode.c +90 -0
@@ 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;
}

A users/moults31/vscode.h => users/moults31/vscode.h +21 -0
@@ 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);