1
0
Fork 0

[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

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);