diff options
author | QMK Bot <hello@qmk.fm> | 2021-09-11 01:57:21 +0000 |
---|---|---|
committer | QMK Bot <hello@qmk.fm> | 2021-09-11 01:57:21 +0000 |
commit | 0ca04e6852c08c027b53c4f5bd460038636d2cb2 (patch) | |
tree | 73be40d571b4e82ecda20009891c105db4530d55 | |
parent | f197b30a472bad581ebe7b235825bba44f31652d (diff) | |
parent | d7747a2d700eec08679011d79dc6192fe43ca402 (diff) | |
download | qmk_firmware-0ca04e6852c08c027b53c4f5bd460038636d2cb2.tar.gz qmk_firmware-0ca04e6852c08c027b53c4f5bd460038636d2cb2.zip |
Merge remote-tracking branch 'origin/master' into develop
22 files changed, 924 insertions, 4 deletions
diff --git a/keyboards/durgod/k320/keymaps/moults31/config.h b/keyboards/durgod/k320/keymaps/moults31/config.h new file mode 100644 index 000000000..01f47b8c1 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/moults31/config.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * Copyright 2021 moults31 | ||
3 | * | ||
4 | * This program is free software: you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation, either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #define DYNAMIC_KEYMAP_LAYER_COUNT 3 | ||
diff --git a/keyboards/durgod/k320/keymaps/moults31/keymap.c b/keyboards/durgod/k320/keymaps/moults31/keymap.c new file mode 100644 index 000000000..c44fe1585 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/moults31/keymap.c | |||
@@ -0,0 +1,84 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * Adapted from kuenhlee and Don Kjer and Coirault | ||
3 | * | ||
4 | * This program is free software: you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation, either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | #include QMK_KEYBOARD_H | ||
18 | |||
19 | #include "moults31.h" | ||
20 | |||
21 | // Layer shorthand | ||
22 | enum _layer { | ||
23 | _BASE, | ||
24 | _FUNC, | ||
25 | _LAYER3 | ||
26 | }; | ||
27 | |||
28 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
29 | /* Keymap _BASE: Base Layer (Default Layer) | ||
30 | * ,-----------------------------------------------------------. ,--------------. | ||
31 | * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus| | ||
32 | * |-----------------------------------------------------------| |--------------| | ||
33 | * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| | ||
34 | * |-----------------------------------------------------------| |--------------| | ||
35 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn| | ||
36 | * |------------------------------------------------------ Ret | `--------------' | ||
37 | * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| | | ||
38 | * |-----------------------------------------------------------| ,----. | ||
39 | * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | | ||
40 | * |-----------------------------------------------------------| ,-------------. | ||
41 | * |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig | | ||
42 | * `-----------------------------------------------------------' `-------------' | ||
43 | */ | ||
44 | [_BASE] = LAYOUT_tkl_ansi( /* Base Layer */ | ||
45 | 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, | ||
46 | 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, | ||
47 | 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, | ||
48 | 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, | ||
49 | 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, | ||
50 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | ||
51 | ), | ||
52 | /* Keymap _FUNC: Function Layer | ||
53 | * ,-----------------------------------------------------------. ,--------------. | ||
54 | * | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | | | ||
55 | * |-----------------------------------------------------------| |--------------| | ||
56 | * | | | | | | | | | | | | | | | | | | | | ||
57 | * |-----------------------------------------------------------| |--------------| | ||
58 | * | | | | | | | | | | | | | | | | | | | | ||
59 | * |------------------------------------------------------- | `--------------' | ||
60 | * | | | | | | | | | | | | | | | | ||
61 | * |-----------------------------------------------------------| ,----. | ||
62 | * | | | | | | | | | | | | | | | | | ||
63 | * |-----------------------------------------------------------| ,-------------. | ||
64 | * | | | | | |Func | | | | | | | | ||
65 | * `-----------------------------------------------------------' `-------------' | ||
66 | */ | ||
67 | [_FUNC] = LAYOUT_tkl_ansi( /* Function Layer */ | ||
68 | _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, | ||
69 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
70 | _______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
71 | _______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
72 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
73 | _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_MVEDTRPRVGRP, _______, M_VSC_MVEDTRNXTGRP | ||
74 | ), | ||
75 | [_LAYER3] = LAYOUT_tkl_ansi( /* Function Layer */ | ||
76 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
77 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
78 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
79 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
80 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
81 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
82 | ), | ||
83 | }; | ||
84 | |||
diff --git a/keyboards/durgod/k320/keymaps/moults31/readme.md b/keyboards/durgod/k320/keymaps/moults31/readme.md new file mode 100644 index 000000000..e3a3f150f --- /dev/null +++ b/keyboards/durgod/k320/keymaps/moults31/readme.md | |||
@@ -0,0 +1,10 @@ | |||
1 | # The default keymap for Durgod Taurus K320. | ||
2 | |||
3 | Layer 0 : Standard Keys TKL layout | ||
4 | |||
5 | Layer 1 : Media control and VScode navigation | ||
6 | - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 | ||
7 | |||
8 | ## Supported PCBs | ||
9 | |||
10 | This keymap intended for use on Durgod K320 ANSI | ||
diff --git a/keyboards/durgod/k320/keymaps/moults31/rules.mk b/keyboards/durgod/k320/keymaps/moults31/rules.mk new file mode 100644 index 000000000..36b7ba9cb --- /dev/null +++ b/keyboards/durgod/k320/keymaps/moults31/rules.mk | |||
@@ -0,0 +1,2 @@ | |||
1 | VIA_ENABLE = yes | ||
2 | LTO_ENABLE = yes | ||
diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c new file mode 100644 index 000000000..98802270a --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * Copyright 2021 moults31 | ||
3 | * | ||
4 | * This program is free software: you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation, either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #include QMK_KEYBOARD_H | ||
19 | |||
20 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
21 | [0] = LAYOUT( | ||
22 | 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, | ||
23 | 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, | ||
24 | 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, | ||
25 | 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), | ||
26 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_COMM, MO(1), KC_LEFT, KC_DOWN, KC_RGHT | ||
27 | ), | ||
28 | [1] = LAYOUT( | ||
29 | 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, | ||
30 | _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_HOME, KC_END, RESET, | ||
31 | _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, EEP_RST, | ||
32 | _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, | ||
33 | _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT | ||
34 | ), | ||
35 | [2] = LAYOUT( | ||
36 | 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, | ||
37 | _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET, | ||
38 | _______, RGB_SAD, RGB_HUD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
39 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, _______, | ||
40 | _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SPD | ||
41 | ), | ||
42 | }; | ||
diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md b/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md new file mode 100644 index 000000000..19bccf13e --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md | |||
@@ -0,0 +1,11 @@ | |||
1 | # moults31 DZ60RBG V2 Layout | ||
2 | |||
3 | Similar to the default dz60rgb v2 layout with some minor changes for quality of life in programming. | ||
4 | |||
5 | Brief summary of improvements over default: | ||
6 | * More intuitive media keys in layer 1 | ||
7 | * More intuitive RGB control keys in layer 2 | ||
8 | * Standard left-alt | ||
9 | * Anne Pro 2 style home/end placement in layer 1 | ||
10 | * Grave key moved to right-alt position for easier ctrl-grave vscode shortcut | ||
11 | * Removed layer 4 (mac layout?) | ||
diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk b/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk new file mode 100644 index 000000000..1e5b99807 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk | |||
@@ -0,0 +1 @@ | |||
VIA_ENABLE = yes | |||
diff --git a/keyboards/gmmk/pro/keymaps/moults31/keymap.c b/keyboards/gmmk/pro/keymaps/moults31/keymap.c new file mode 100644 index 000000000..90ac428c7 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/moults31/keymap.c | |||
@@ -0,0 +1,92 @@ | |||
1 | /* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com> | ||
2 | |||
3 | This program is free software: you can redistribute it and/or modify | ||
4 | it under the terms of the GNU General Public License as published by | ||
5 | the Free Software Foundation, either version 2 of the License, or | ||
6 | (at your option) any later version. | ||
7 | |||
8 | This program is distributed in the hope that it will be useful, | ||
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | GNU General Public License for more details. | ||
12 | |||
13 | You should have received a copy of the GNU General Public License | ||
14 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #include QMK_KEYBOARD_H | ||
18 | |||
19 | #include "moults31.h" | ||
20 | |||
21 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
22 | |||
23 | // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) | ||
24 | // ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del | ||
25 | // Tab Q W E R T Y U I O P [ ] \ PgUp | ||
26 | // Caps A S D F G H J K L ; " Enter PgDn | ||
27 | // Sh_L Z X C V B N M , . ? Sh_R Up End | ||
28 | // Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right | ||
29 | |||
30 | |||
31 | // 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 | ||
32 | // 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 | ||
33 | // 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 | ||
34 | // if that's your preference. | ||
35 | // | ||
36 | // 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 | ||
37 | // it'll be back to normal when you plug it back in. | ||
38 | [0] = LAYOUT( | ||
39 | 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, | ||
40 | 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, | ||
41 | 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, | ||
42 | 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, | ||
43 | 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), | ||
44 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | ||
45 | ), | ||
46 | |||
47 | [1] = LAYOUT( | ||
48 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, | ||
49 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
50 | _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, _______, _______, RESET, _______, | ||
51 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, | ||
52 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
53 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
54 | ), | ||
55 | |||
56 | [2] = LAYOUT( | ||
57 | M_GDB_STOP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_DBGCNSLFOCUS, | ||
58 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
59 | _______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
60 | _______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_PLAY, M_GDB_PAUSE, | ||
61 | _______, M_VSC_FILEPRV, M_VSC_FILENXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_STEPOUT, _______, | ||
62 | _______, _______, _______, _______, _______, _______, _______, M_GDB_RESTART, M_GDB_STEPIN, M_GDB_STEPOVER | ||
63 | ), | ||
64 | |||
65 | }; | ||
66 | |||
67 | |||
68 | bool encoder_update_user(uint8_t index, bool clockwise) { | ||
69 | const layer_state_t curr_layer = get_highest_layer(layer_state); | ||
70 | if(curr_layer == 2) { | ||
71 | if (clockwise) { | ||
72 | moults31_tap_custom_code(M_VSC_FILENXT); | ||
73 | } else { | ||
74 | moults31_tap_custom_code(M_VSC_FILEPRV); | ||
75 | } | ||
76 | } | ||
77 | else if(curr_layer == 1) { | ||
78 | if (clockwise) { | ||
79 | moults31_tap_custom_code(M_VSC_VIEWSIZEINC); | ||
80 | } else { | ||
81 | moults31_tap_custom_code(M_VSC_VIEWSIZEDEC); | ||
82 | } | ||
83 | } | ||
84 | else { | ||
85 | if (clockwise) { | ||
86 | tap_code(KC_VOLU); | ||
87 | } else { | ||
88 | tap_code(KC_VOLD); | ||
89 | } | ||
90 | } | ||
91 | return false; | ||
92 | } | ||
diff --git a/keyboards/knobgoblin/keymaps/moults31/keymap.c b/keyboards/knobgoblin/keymaps/moults31/keymap.c new file mode 100644 index 000000000..16830bc98 --- /dev/null +++ b/keyboards/knobgoblin/keymaps/moults31/keymap.c | |||
@@ -0,0 +1,170 @@ | |||
1 | /* Copyright 2020 MrT1ddl3s | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #include QMK_KEYBOARD_H | ||
18 | |||
19 | #include "moults31.h" | ||
20 | |||
21 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
22 | |||
23 | [0] = LAYOUT_ortho( | ||
24 | KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
25 | KC_P7, KC_P8, KC_P9, KC_PPLS, | ||
26 | KC_P4, KC_P5, KC_P6, KC_PPLS, | ||
27 | KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
28 | KC_MUTE, MO(10), KC_P0, KC_PDOT, KC_PENT | ||
29 | ), | ||
30 | |||
31 | [1] = LAYOUT_ortho( | ||
32 | KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, | ||
33 | KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS, | ||
34 | KC_END , KC_UP, KC_PGDN, KC_TRNS, | ||
35 | KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC, | ||
36 | KC_TRNS, MO(10), KC_BSPC, KC_DEL, KC_TRNS | ||
37 | ), | ||
38 | |||
39 | [2] = LAYOUT_ortho( | ||
40 | KC_2, KC_TRNS, KC_TRNS, KC_TRNS, | ||
41 | M_VSC_MVEDTRPRVGRP, M_VSC_MVEDTRNXTGRP, KC_TRNS, KC_TRNS, | ||
42 | M_VSC_EDGRPPRV, M_VSC_EDGRPNXT, KC_TRNS, KC_TRNS, | ||
43 | KC_TRNS, M_VSC_SIDEBARFOCUS, M_VSC_SIDEBARCLOSE, M_VSC_TERMFOCUS, KC_TRNS, | ||
44 | M_VSC_FILECLOSE, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
45 | ), | ||
46 | |||
47 | [3] = LAYOUT_ortho( | ||
48 | KC_3, KC_TRNS, KC_TRNS, KC_TRNS, | ||
49 | KC_TRNS, KC_TRNS, KC_TRNS, M_GDB_PAUSE, | ||
50 | M_GDB_RESTART, M_GDB_STOP, KC_TRNS, M_GDB_PAUSE, | ||
51 | M_VSC_DBGCNSLFOCUS, M_GDB_STEPOVER, M_GDB_STEPIN, M_GDB_STEPOUT, M_GDB_PLAY, | ||
52 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, M_GDB_PLAY | ||
53 | ), | ||
54 | |||
55 | [4] = LAYOUT_ortho( | ||
56 | KC_4, KC_TRNS, KC_TRNS, KC_TRNS, | ||
57 | M_OBS_VOICE_UNMUTE, M_OBS_MOOSIC_MUTE, M_OBS_MOOSIC_UNMUTE, KC_TRNS, | ||
58 | M_OBS_DSKT_MUTE, M_OBS_DSKT_UNMUTE, M_OBS_VOICE_MUTE, KC_TRNS, | ||
59 | KC_TRNS, M_OBS_BRB, M_OBS_GAME, M_OBS_JSTCHT, KC_TRNS, | ||
60 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
61 | ), | ||
62 | |||
63 | [5] = LAYOUT_ortho( | ||
64 | KC_5, KC_TRNS, KC_TRNS, KC_TRNS, | ||
65 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
66 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
67 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
68 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
69 | ), | ||
70 | |||
71 | [6] = LAYOUT_ortho( | ||
72 | KC_6, KC_TRNS, KC_TRNS, KC_TRNS, | ||
73 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
74 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
75 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
76 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
77 | ), | ||
78 | |||
79 | [7] = LAYOUT_ortho( | ||
80 | KC_7, KC_TRNS, KC_TRNS, KC_TRNS, | ||
81 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
82 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
83 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
84 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
85 | ), | ||
86 | |||
87 | [8] = LAYOUT_ortho( | ||
88 | KC_8, KC_TRNS, KC_TRNS, KC_TRNS, | ||
89 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
90 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
91 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
92 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
93 | ), | ||
94 | |||
95 | [9] = LAYOUT_ortho( | ||
96 | KC_9, KC_TRNS, KC_TRNS, KC_TRNS, | ||
97 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
98 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
99 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
100 | KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS | ||
101 | ), | ||
102 | |||
103 | [10] = LAYOUT_ortho( | ||
104 | RESET, KC_TRNS, KC_TRNS, KC_TRNS, | ||
105 | TO(7), TO(8), TO(9), KC_TRNS, | ||
106 | TO(4), TO(5), TO(6), KC_TRNS, | ||
107 | KC_TRNS, TO(1), TO(2), TO(3), KC_TRNS, | ||
108 | KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS | ||
109 | ), | ||
110 | |||
111 | |||
112 | |||
113 | }; | ||
114 | |||
115 | /* byte map for the goblin logo, knob goblin text, and level text */ | ||
116 | static void render_goblin_logo(void) { | ||
117 | static const char PROGMEM my_logo[] = { | ||
118 | 0x00, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x08, 0x08, 0x08, | ||
119 | 0x08, 0x08, 0x08, 0x10, 0x20, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x40, 0xe0, 0x00, | ||
120 | 0x00, 0x03, 0x06, 0x3c, 0x49, 0x91, 0x21, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x00, 0x60, 0x00, | ||
121 | 0x00, 0x60, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00, 0x21, 0x91, 0x49, 0x3c, 0x06, 0x03, 0x00, | ||
122 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x60, 0x40, 0xc0, 0x06, 0x0e, 0x0f, 0x67, 0x50, 0xc0, | ||
123 | 0xc0, 0x50, 0x67, 0x0f, 0x0e, 0x06, 0xc0, 0x40, 0x60, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
124 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7b, 0xc7, 0x8e, 0x1e, 0x3e, 0x3e, | ||
125 | 0x3e, 0x3e, 0x1e, 0x8e, 0xc7, 0x7b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
126 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, | ||
127 | 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
128 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83, | ||
129 | 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | ||
130 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x04, 0x06, 0x09, 0x10, 0x00, 0x1f, 0x03, 0x06, 0x0c, 0x1f, | ||
131 | 0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x1f, 0x12, 0x12, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
132 | 0x00, 0x78, 0xfc, 0x84, 0xa4, 0xa4, 0x68, 0x00, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0xfc, 0x94, | ||
133 | 0x94, 0x68, 0x00, 0xfc, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x00, 0xfc, 0x18, 0x30, 0x60, 0xfc, 0x00, | ||
134 | 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, | ||
135 | 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, | ||
136 | 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00, | ||
137 | 0x00, 0xf0, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
138 | 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, | ||
139 | 0x01, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 | ||
140 | }; | ||
141 | oled_write_raw_P(my_logo, sizeof(my_logo)); | ||
142 | } | ||
143 | |||
144 | void oled_task_user(void) { | ||
145 | |||
146 | render_goblin_logo(); | ||
147 | |||
148 | oled_set_cursor(0,11); | ||
149 | |||
150 | switch (get_highest_layer(layer_state)) { | ||
151 | case 0: | ||
152 | oled_write_P(PSTR(" NUM\n"), false); | ||
153 | break; | ||
154 | case 1: | ||
155 | oled_write_P(PSTR(" NAV\n"), false); | ||
156 | break; | ||
157 | case 2: | ||
158 | oled_write_P(PSTR(" CODE\n"), false); | ||
159 | break; | ||
160 | case 3: | ||
161 | oled_write_P(PSTR(" GDB\n"), false); | ||
162 | break; | ||
163 | case 4: | ||
164 | oled_write_P(PSTR(" OBS\n"), false); | ||
165 | break; | ||
166 | default: | ||
167 | oled_write_P(PSTR(" NONE\n"), false); | ||
168 | break; | ||
169 | } | ||
170 | } | ||
diff --git a/keyboards/knobgoblin/keymaps/moults31/readme.md b/keyboards/knobgoblin/keymaps/moults31/readme.md new file mode 100644 index 000000000..f137c78c3 --- /dev/null +++ b/keyboards/knobgoblin/keymaps/moults31/readme.md | |||
@@ -0,0 +1,3 @@ | |||
1 | # Ortho Knob Goblin Layout | ||
2 | |||
3 | Via functionality for the Knob Goblin. Ortho layout. \ No newline at end of file | ||
diff --git a/keyboards/knobgoblin/keymaps/moults31/rules.mk b/keyboards/knobgoblin/keymaps/moults31/rules.mk new file mode 100644 index 000000000..533af592e --- /dev/null +++ b/keyboards/knobgoblin/keymaps/moults31/rules.mk | |||
@@ -0,0 +1,3 @@ | |||
1 | VIA_ENABLE = YES | ||
2 | LTO_ENABLE = YES | ||
3 | BOOTLOADER = atmel-dfu | ||
diff --git a/keyboards/knobgoblin/keymaps/via/keymap.c b/keyboards/knobgoblin/keymaps/via/keymap.c index afe3226bb..4631dccd0 100644 --- a/keyboards/knobgoblin/keymaps/via/keymap.c +++ b/keyboards/knobgoblin/keymaps/via/keymap.c | |||
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
25 | KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT, | 25 | KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT, |
26 | KC_MUTE, MO(1), KC_P0, KC_PDOT, KC_PENT | 26 | KC_MUTE, MO(1), KC_P0, KC_PDOT, KC_PENT |
27 | ), | 27 | ), |
28 | 28 | ||
29 | [1] = LAYOUT_ortho( | 29 | [1] = LAYOUT_ortho( |
30 | KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, | 30 | KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, |
31 | KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS, | 31 | KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS, |
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
33 | KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC, | 33 | KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC, |
34 | KC_TRNS, KC_TRNS, KC_BSPC, KC_DEL, KC_TRNS | 34 | KC_TRNS, KC_TRNS, KC_BSPC, KC_DEL, KC_TRNS |
35 | ), | 35 | ), |
36 | 36 | ||
37 | [2] = LAYOUT_ortho( | 37 | [2] = LAYOUT_ortho( |
38 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | 38 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
39 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | 39 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
41 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | 41 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
42 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | 42 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS |
43 | ), | 43 | ), |
44 | 44 | ||
45 | [3] = LAYOUT_ortho( | 45 | [3] = LAYOUT_ortho( |
46 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | 46 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
47 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | 47 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
@@ -50,4 +50,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
50 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | 50 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS |
51 | ) | 51 | ) |
52 | 52 | ||
53 | }; \ No newline at end of file | 53 | }; |
diff --git a/users/moults31/gdb.c b/users/moults31/gdb.c new file mode 100644 index 000000000..42f5513ec --- /dev/null +++ b/users/moults31/gdb.c | |||
@@ -0,0 +1,59 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "gdb.h" | ||
17 | |||
18 | bool process_record_gdb(uint16_t keycode, keyrecord_t *record) { | ||
19 | bool rv = true; | ||
20 | switch (keycode) { | ||
21 | case M_GDB_PLAY: | ||
22 | if (record->event.pressed) { | ||
23 | SEND_STRING(SS_TAP(X_F5)); | ||
24 | } | ||
25 | break; | ||
26 | case M_GDB_PAUSE: | ||
27 | if (record->event.pressed) { | ||
28 | SEND_STRING(SS_TAP(X_F6)); | ||
29 | } | ||
30 | break; | ||
31 | case M_GDB_STEPOVER: | ||
32 | if (record->event.pressed) { | ||
33 | SEND_STRING(SS_TAP(X_F10)); | ||
34 | } | ||
35 | break; | ||
36 | case M_GDB_STEPIN: | ||
37 | if (record->event.pressed) { | ||
38 | SEND_STRING(SS_TAP(X_F11)); | ||
39 | } | ||
40 | break; | ||
41 | case M_GDB_STEPOUT: | ||
42 | if (record->event.pressed) { | ||
43 | SEND_STRING(SS_LSFT(SS_TAP(X_F11))); | ||
44 | } | ||
45 | break; | ||
46 | case M_GDB_RESTART: | ||
47 | if (record->event.pressed) { | ||
48 | SEND_STRING(SS_LCTRL(SS_LSFT(SS_TAP(X_F5)))); | ||
49 | } | ||
50 | break; | ||
51 | case M_GDB_STOP: | ||
52 | if (record->event.pressed) { | ||
53 | SEND_STRING(SS_LSFT(SS_TAP(X_F5))); | ||
54 | } | ||
55 | break; | ||
56 | } | ||
57 | |||
58 | return rv; | ||
59 | } | ||
diff --git a/users/moults31/gdb.h b/users/moults31/gdb.h new file mode 100644 index 000000000..385825692 --- /dev/null +++ b/users/moults31/gdb.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #pragma once | ||
17 | |||
18 | #include QMK_KEYBOARD_H | ||
19 | #include "moults31.h" | ||
20 | |||
21 | bool process_record_gdb(uint16_t keycode, keyrecord_t *record); | ||
diff --git a/users/moults31/moults31.c b/users/moults31/moults31.c new file mode 100644 index 000000000..0dbaed0bb --- /dev/null +++ b/users/moults31/moults31.c | |||
@@ -0,0 +1,114 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "moults31.h" | ||
17 | |||
18 | bool moults31_tap_custom_code(uint16_t keycode) { | ||
19 | keyrecord_t record = { | ||
20 | .event = { | ||
21 | .pressed = 1, | ||
22 | }, | ||
23 | }; | ||
24 | return process_record_user(keycode, &record); | ||
25 | } | ||
26 | |||
27 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
28 | bool rv = true; | ||
29 | switch (keycode) { | ||
30 | case M_MST_CODEBLOCK: | ||
31 | if (record->event.pressed) { | ||
32 | SEND_STRING("```"); | ||
33 | } | ||
34 | break; | ||
35 | |||
36 | case M_VSC_TERMFOCUS: | ||
37 | case M_VSC_SIDEBARFOCUS: | ||
38 | case M_VSC_SIDEBARCLOSE: | ||
39 | case M_VSC_FILECLOSE: | ||
40 | case M_VSC_FILENXT: | ||
41 | case M_VSC_FILEPRV: | ||
42 | case M_VSC_DBGCNSLFOCUS: | ||
43 | case M_VSC_MVEDTRNXTGRP: | ||
44 | case M_VSC_MVEDTRPRVGRP: | ||
45 | case M_VSC_EDGRPNXT: | ||
46 | case M_VSC_EDGRPPRV: | ||
47 | case M_VSC_VIEWSIZEINC: | ||
48 | case M_VSC_VIEWSIZEDEC: | ||
49 | rv = process_record_vsc(keycode, record); | ||
50 | break; | ||
51 | |||
52 | case M_GDB_PLAY: | ||
53 | case M_GDB_PAUSE: | ||
54 | case M_GDB_STEPOVER: | ||
55 | case M_GDB_STEPIN: | ||
56 | case M_GDB_STEPOUT: | ||
57 | case M_GDB_RESTART: | ||
58 | case M_GDB_STOP: | ||
59 | rv = process_record_gdb(keycode, record); | ||
60 | break; | ||
61 | |||
62 | case M_OBS_BRB: | ||
63 | case M_OBS_GAME: | ||
64 | case M_OBS_JSTCHT: | ||
65 | case M_OBS_DSKT_MUTE: | ||
66 | case M_OBS_DSKT_UNMUTE: | ||
67 | case M_OBS_VOICE_MUTE: | ||
68 | case M_OBS_VOICE_UNMUTE: | ||
69 | case M_OBS_MOOSIC_MUTE: | ||
70 | case M_OBS_MOOSIC_UNMUTE: | ||
71 | rv = process_record_obs(keycode, record); | ||
72 | break; | ||
73 | } | ||
74 | return rv; | ||
75 | }; | ||
76 | |||
77 | #ifdef ENCODER_ENABLE | ||
78 | __attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { | ||
79 | const layer_state_t curr_layer = get_highest_layer(layer_state); | ||
80 | if (index == 1) { /* Bottom encoder */ | ||
81 | if(curr_layer == 2 || curr_layer == 3) { | ||
82 | if (clockwise) { | ||
83 | moults31_tap_custom_code(M_VSC_FILENXT); | ||
84 | } else { | ||
85 | moults31_tap_custom_code(M_VSC_FILEPRV); | ||
86 | } | ||
87 | } | ||
88 | else { | ||
89 | if (clockwise) { | ||
90 | tap_code(KC_VOLU); | ||
91 | } else { | ||
92 | tap_code(KC_VOLD); | ||
93 | } | ||
94 | } | ||
95 | } | ||
96 | if (index == 0) { /* Top encoder */ | ||
97 | if(curr_layer == 2 || curr_layer == 3) { | ||
98 | if (clockwise) { | ||
99 | moults31_tap_custom_code(M_VSC_VIEWSIZEINC); | ||
100 | } else { | ||
101 | moults31_tap_custom_code(M_VSC_VIEWSIZEDEC); | ||
102 | } | ||
103 | } | ||
104 | else { | ||
105 | if (clockwise) { | ||
106 | tap_code(KC_MNXT); | ||
107 | } else { | ||
108 | tap_code(KC_MPRV); | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | return false; | ||
113 | } | ||
114 | #endif | ||
diff --git a/users/moults31/moults31.h b/users/moults31/moults31.h new file mode 100644 index 000000000..60e317b78 --- /dev/null +++ b/users/moults31/moults31.h | |||
@@ -0,0 +1,61 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #pragma once | ||
17 | |||
18 | #include QMK_KEYBOARD_H | ||
19 | |||
20 | #include "vscode.h" | ||
21 | #include "obs.h" | ||
22 | #include "gdb.h" | ||
23 | |||
24 | bool moults31_tap_custom_code(uint16_t keycode); | ||
25 | |||
26 | enum custom_keycodes { | ||
27 | // VSCode keycodes | ||
28 | M_VSC_TERMFOCUS = SAFE_RANGE, | ||
29 | M_VSC_SIDEBARFOCUS, | ||
30 | M_VSC_SIDEBARCLOSE, | ||
31 | M_VSC_DBGCNSLFOCUS, | ||
32 | M_VSC_EDGRPNXT, | ||
33 | M_VSC_EDGRPPRV, | ||
34 | M_VSC_MVEDTRNXTGRP, | ||
35 | M_VSC_MVEDTRPRVGRP, | ||
36 | M_VSC_VIEWSIZEINC, | ||
37 | M_VSC_VIEWSIZEDEC, | ||
38 | M_VSC_FILECLOSE, | ||
39 | M_VSC_FILENXT, | ||
40 | M_VSC_FILEPRV, | ||
41 | // GDB keycodes (for vscode debugger) | ||
42 | M_GDB_PLAY, | ||
43 | M_GDB_PAUSE, | ||
44 | M_GDB_STEPOVER, | ||
45 | M_GDB_STEPIN, | ||
46 | M_GDB_STEPOUT, | ||
47 | M_GDB_RESTART, | ||
48 | M_GDB_STOP, | ||
49 | // MS Teams keycodes | ||
50 | M_MST_CODEBLOCK, | ||
51 | // OBS keycodes | ||
52 | M_OBS_BRB, | ||
53 | M_OBS_GAME, | ||
54 | M_OBS_JSTCHT, | ||
55 | M_OBS_DSKT_MUTE, | ||
56 | M_OBS_DSKT_UNMUTE, | ||
57 | M_OBS_VOICE_MUTE, | ||
58 | M_OBS_VOICE_UNMUTE, | ||
59 | M_OBS_MOOSIC_MUTE, | ||
60 | M_OBS_MOOSIC_UNMUTE, | ||
61 | }; | ||
diff --git a/users/moults31/obs.c b/users/moults31/obs.c new file mode 100644 index 000000000..0ae5f3deb --- /dev/null +++ b/users/moults31/obs.c | |||
@@ -0,0 +1,80 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "obs.h" | ||
17 | |||
18 | bool process_record_obs(uint16_t keycode, keyrecord_t *record) { | ||
19 | // Apply all 4 mods for custom OBS macros | ||
20 | register_code(KC_LSHIFT); | ||
21 | register_code(KC_LCTL); | ||
22 | register_code(KC_LALT); | ||
23 | register_code(KC_LGUI); | ||
24 | |||
25 | switch (keycode) { | ||
26 | case M_OBS_BRB: | ||
27 | if (record->event.pressed) { | ||
28 | SEND_STRING("1"); | ||
29 | } | ||
30 | break; | ||
31 | case M_OBS_GAME: | ||
32 | if (record->event.pressed) { | ||
33 | SEND_STRING("2"); | ||
34 | } | ||
35 | break; | ||
36 | case M_OBS_JSTCHT: | ||
37 | if (record->event.pressed) { | ||
38 | SEND_STRING("3"); | ||
39 | } | ||
40 | break; | ||
41 | case M_OBS_DSKT_MUTE: | ||
42 | if (record->event.pressed) { | ||
43 | SEND_STRING("4"); | ||
44 | } | ||
45 | break; | ||
46 | case M_OBS_DSKT_UNMUTE: | ||
47 | if (record->event.pressed) { | ||
48 | SEND_STRING("5"); | ||
49 | } | ||
50 | break; | ||
51 | case M_OBS_VOICE_MUTE: | ||
52 | if (record->event.pressed) { | ||
53 | SEND_STRING("6"); | ||
54 | } | ||
55 | break; | ||
56 | case M_OBS_VOICE_UNMUTE: | ||
57 | if (record->event.pressed) { | ||
58 | SEND_STRING("7"); | ||
59 | } | ||
60 | break; | ||
61 | case M_OBS_MOOSIC_MUTE: | ||
62 | if (record->event.pressed) { | ||
63 | SEND_STRING("8"); | ||
64 | } | ||
65 | break; | ||
66 | case M_OBS_MOOSIC_UNMUTE: | ||
67 | if (record->event.pressed) { | ||
68 | SEND_STRING("9"); | ||
69 | } | ||
70 | break; | ||
71 | } | ||
72 | |||
73 | // Unpress all 4 mods for custom OBS macros | ||
74 | unregister_code(KC_LSHIFT); | ||
75 | unregister_code(KC_LCTL); | ||
76 | unregister_code(KC_LALT); | ||
77 | unregister_code(KC_LGUI); | ||
78 | |||
79 | return true; | ||
80 | } | ||
diff --git a/users/moults31/obs.h b/users/moults31/obs.h new file mode 100644 index 000000000..2a2973f80 --- /dev/null +++ b/users/moults31/obs.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #pragma once | ||
17 | |||
18 | #include QMK_KEYBOARD_H | ||
19 | #include "moults31.h" | ||
20 | |||
21 | bool process_record_obs(uint16_t keycode, keyrecord_t *record); | ||
diff --git a/users/moults31/readme.md b/users/moults31/readme.md new file mode 100644 index 000000000..3a5badbe5 --- /dev/null +++ b/users/moults31/readme.md | |||
@@ -0,0 +1,5 @@ | |||
1 | # moults31 Userspace | ||
2 | |||
3 | ## Features | ||
4 | |||
5 | - Custom macros for VScode, OBS, GDB (Visual) | ||
diff --git a/users/moults31/rules.mk b/users/moults31/rules.mk new file mode 100644 index 000000000..af7c11d9f --- /dev/null +++ b/users/moults31/rules.mk | |||
@@ -0,0 +1,10 @@ | |||
1 | SRC += moults31.c | ||
2 | |||
3 | # Custom macro sources | ||
4 | SRC += vscode.c | ||
5 | SRC += obs.c | ||
6 | SRC += gdb.c | ||
7 | |||
8 | ifneq ($(PLATFORM),CHIBIOS) | ||
9 | LTO_ENABLE = yes # Enable link time optimization | ||
10 | endif | ||
diff --git a/users/moults31/vscode.c b/users/moults31/vscode.c new file mode 100644 index 000000000..a2fcf062d --- /dev/null +++ b/users/moults31/vscode.c | |||
@@ -0,0 +1,90 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "vscode.h" | ||
17 | |||
18 | bool process_record_vsc(uint16_t keycode, keyrecord_t *record) { | ||
19 | bool rv = true; | ||
20 | |||
21 | switch (keycode) { | ||
22 | case M_VSC_TERMFOCUS: | ||
23 | if (record->event.pressed) { | ||
24 | SEND_STRING(SS_LCTRL("`")); | ||
25 | } | ||
26 | break; | ||
27 | case M_VSC_SIDEBARFOCUS: | ||
28 | if (record->event.pressed) { | ||
29 | SEND_STRING(SS_LCTRL("0")); | ||
30 | } | ||
31 | break; | ||
32 | case M_VSC_SIDEBARCLOSE: | ||
33 | if (record->event.pressed) { | ||
34 | SEND_STRING(SS_LCTRL("b")); | ||
35 | } | ||
36 | break; | ||
37 | case M_VSC_FILECLOSE: | ||
38 | if (record->event.pressed) { | ||
39 | SEND_STRING(SS_LCTRL("w")); | ||
40 | } | ||
41 | break; | ||
42 | case M_VSC_FILENXT: | ||
43 | if (record->event.pressed) { | ||
44 | SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_K) SS_TAP(X_PGDOWN) SS_UP(X_LCTRL)); | ||
45 | } | ||
46 | break; | ||
47 | case M_VSC_FILEPRV: | ||
48 | if (record->event.pressed) { | ||
49 | SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_K) SS_TAP(X_PGUP) SS_UP(X_LCTRL)); | ||
50 | } | ||
51 | break; | ||
52 | case M_VSC_DBGCNSLFOCUS: | ||
53 | if (record->event.pressed) { | ||
54 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_D)))); | ||
55 | } | ||
56 | break; | ||
57 | case M_VSC_MVEDTRNXTGRP: | ||
58 | if (record->event.pressed) { | ||
59 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_RIGHT)))); | ||
60 | } | ||
61 | break; | ||
62 | case M_VSC_MVEDTRPRVGRP: | ||
63 | if (record->event.pressed) { | ||
64 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_LEFT)))); | ||
65 | } | ||
66 | break; | ||
67 | case M_VSC_EDGRPNXT: | ||
68 | if (record->event.pressed) { | ||
69 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_L)))); | ||
70 | } | ||
71 | break; | ||
72 | case M_VSC_EDGRPPRV: | ||
73 | if (record->event.pressed) { | ||
74 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_K)))); | ||
75 | } | ||
76 | break; | ||
77 | case M_VSC_VIEWSIZEINC: | ||
78 | if (record->event.pressed) { | ||
79 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_P)))); | ||
80 | } | ||
81 | break; | ||
82 | case M_VSC_VIEWSIZEDEC: | ||
83 | if (record->event.pressed) { | ||
84 | SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_O)))); | ||
85 | } | ||
86 | break; | ||
87 | } | ||
88 | |||
89 | return rv; | ||
90 | } | ||
diff --git a/users/moults31/vscode.h b/users/moults31/vscode.h new file mode 100644 index 000000000..7e88b6591 --- /dev/null +++ b/users/moults31/vscode.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* Copyright 2021 moults31 | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #pragma once | ||
17 | |||
18 | #include QMK_KEYBOARD_H | ||
19 | #include "moults31.h" | ||
20 | |||
21 | bool process_record_vsc(uint16_t keycode, keyrecord_t *record); | ||