1
+ /* Copyright 2021 Glorious, LLC <[email protected] >
2
+ This program is free software: you can redistribute it and/or modify
3
+ it under the terms of the GNU General Public License as published by
4
+ the Free Software Foundation, either version 2 of the License, or
5
+ (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful,
7
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
+ GNU General Public License for more details.
10
+ You should have received a copy of the GNU General Public License
11
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
12
+ */
13
+
14
+ #include QMK_KEYBOARD_H
15
+
16
+ enum userspace_layers {
17
+ QWERTY ,
18
+ FNLAYER ,
19
+ POPTAB ,
20
+ };
21
+
22
+ //custom keycodes
23
+ #define MODS_ALT_MASK (MOD_BIT(KC_LALT)) // Make ALT layer for encoder use
24
+ #define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)) // Make CTRL layer for encoder use
25
+ #define SWAP_L SGUI(KC_LEFT) // Swap application to left display
26
+ #define SWAP_R SGUI(KC_RGHT) // Swap application to right display
27
+ #define MINI LGUI(KC_DOWN) // Shrink window
28
+ #define MAXI LGUI(KC_UP) // Maximize window
29
+ #define CLOSEAPPLICATION LALT(KC_F4) // Kill application
30
+ #define CLOSETAB LCTL(KC_W) // Kill current tab
31
+ #define POPOUT LCTL(LSFT(KC_K))
32
+
33
+ const uint16_t PROGMEM keymaps [][MATRIX_ROWS ][MATRIX_COLS ] = {
34
+
35
+ // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
36
+ // ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
37
+ // Tab Q W E R T Y U I O P [ ] \ PgUp
38
+ // Caps A S D F G H J K L ; " Enter PgDn
39
+ // Sh_L Z X C V B N M , . ? Sh_R Up End
40
+ // Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
41
+
42
+
43
+ // 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
44
+ // 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
45
+ // 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
46
+ // if that's your preference.
47
+ //
48
+ // 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
49
+ // it'll be back to normal when you plug it back in.
50
+
51
+ [QWERTY ] = LAYOUT (
52
+ 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_MUTE ,
53
+ 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_DEL ,
54
+ 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_PGUP ,
55
+ 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_PGDN ,
56
+ 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_END ,
57
+ KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , MO (FNLAYER ), KC_RCTL , KC_LEFT , KC_DOWN , KC_RGHT
58
+ ),
59
+
60
+ [FNLAYER ] = LAYOUT (
61
+ CLOSEAPPLICATION , CLOSETAB ,_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MEDIA_PLAY_PAUSE ,
62
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
63
+ _______ , SWAP_L , MAXI , SWAP_R , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , RESET , _______ ,
64
+ _______ , _______ , MINI , _______ , POPOUT , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
65
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
66
+ _______ , _______ , _______ , _______ , _______ , _______ , KC_TRNS , _______ , _______ , _______
67
+ ),
68
+
69
+
70
+ };
71
+
72
+
73
+ bool encoder_update_user (uint8_t index , bool clockwise )
74
+ {
75
+ if (get_mods () & MODS_ALT_MASK )
76
+ {
77
+ if (clockwise )
78
+ {
79
+ tap_code (KC_TAB );
80
+ }
81
+ else
82
+ {
83
+ tap_code16 (S (KC_TAB ));
84
+ }
85
+ }
86
+ else if (get_mods () & MODS_CTRL_MASK )
87
+ {
88
+ if (clockwise )
89
+ {
90
+ tap_code (KC_TAB );
91
+ }
92
+ else
93
+ {
94
+ tap_code16 (S (KC )_TAB ));
95
+
96
+ }
97
+ }
98
+ else if (IS_LAYER_ON (FNLAYER ))
99
+ {
100
+ if (clockwise )
101
+ {
102
+ tap_code (KC_MEDIA_NEXT_TRACK );
103
+ }
104
+ else
105
+ {
106
+ tap_code (KC_MEDIA_PREV_TRACK );
107
+ }
108
+ }
109
+ else
110
+ {
111
+ if (clockwise )
112
+ {
113
+ tap_code (KC_VOLU );
114
+ }
115
+ else
116
+ {
117
+ tap_code (KC_VOLD );
118
+ }
119
+
120
+ }
121
+ return true;
122
+
123
+ }
0 commit comments