Added the QMK's Tri-Layer functionality to the default keymap

This commit is contained in:
atechofficials 2024-06-27 23:00:07 +05:30
parent f38ca58467
commit 586836b7c2
5 changed files with 50 additions and 66 deletions

View File

@ -8,9 +8,9 @@
* 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.
* along with this program.
* If not, see <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
@ -23,29 +23,36 @@
enum protokeeb_keymap_layers {
LAYER_BASE,
LAYER_LOWER,
LAYER_RAISE,
LAYER_ADJUST,
};
#define LOWER LT(LAYER_LOWER, KC_KP_0)
#define RAISE LT(LAYER_RAISE, KC_KP_ENTER)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT( /* Base */
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, KC_MUTE,
KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK,
KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_MINUS,
LOWER, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS
),
[LAYER_BASE] = LAYOUT(/* Base: Numpad without Num Lock*/
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, KC_MUTE, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_MINUS, LOWER, KC_KP_DOT, RAISE, KC_KP_PLUS),
[LAYER_LOWER] = LAYOUT( /* RGB Control */
RGB_MODE_PLAIN, RGB_MODE_FORWARD, RGB_MODE_REVERSE, RGB_TOG, KC_MUTE,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
KC_TRNS, RGB_MODE_SWIRL, QK_DEBUG_TOGGLE, QK_BOOT
),
[LAYER_LOWER] = LAYOUT(/* RGB Control */
RGB_MODE_PLAIN, RGB_MODE_FORWARD, RGB_MODE_REVERSE, QK_DEBUG_TOGGLE, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, RGB_MODE_SWIRL, KC_TRNS, QK_BOOT),
[LAYER_RAISE] = LAYOUT(/* Media Control and Quick Launch*/
KC_MEDIA_PLAY_PAUSE, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_MEDIA_STOP, KC_MUTE, KC_CALCULATOR, KC_MY_COMPUTER, KC_CONTROL_PANEL, KC_SYSTEM_POWER, KC_PRINT_SCREEN, KC_HOME, KC_INSERT, KC_DELETE, KC_TRNS, KC_NO, KC_TRNS, QK_REBOOT),
[LAYER_ADJUST] = LAYOUT(/* Function Keys */
KC_F1, KC_F2, KC_F3, KC_F4, KC_MUTE, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_NO, KC_TRNS, KC_NO),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[LAYER_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[LAYER_LOWER] = { ENCODER_CCW_CW(KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP) },
[LAYER_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[LAYER_LOWER] = {ENCODER_CCW_CW(KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP)},
[LAYER_RAISE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[LAYER_ADJUST] = {ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
};
#endif
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
}

View File

@ -3,3 +3,6 @@
# Rotary Encoder Keymap support
ENCODER_MAP_ENABLE = yes
# Enable Tri Layer support
TRI_LAYER_ENABLE = yes

View File

@ -8,9 +8,9 @@
* 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.
* along with this program.
* If not, see <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
@ -33,40 +33,24 @@ enum protokeeb_keymap_layers {
#define RGB_CTRL MO(LAYER_RGB_CONTROL)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_NOTES_SET_1] = LAYOUT( /* Notes Set-1 */
MI_C, MI_Cs, MI_D, MI_Ds, KC_MUTE,
MI_E, MI_F, MI_Fs, MI_G,
MI_Gs, MI_A, MI_As, MI_B,
RGB_CTRL, NOTES_SET_2, NOTES_SET_3, MI_TOGG
),
[LAYER_NOTES_SET_1] = LAYOUT(/* Notes Set-1 */
MI_C, MI_Cs, MI_D, MI_Ds, KC_MUTE, MI_E, MI_F, MI_Fs, MI_G, MI_Gs, MI_A, MI_As, MI_B, RGB_CTRL, NOTES_SET_2, NOTES_SET_3, MI_TOGG),
[LAYER_NOTES_SET_2] = LAYOUT( /* Notes Set-2 */
MI_C1, MI_Cs1, MI_D1, MI_Ds1, KC_MUTE,
MI_E1, MI_F1, MI_Fs1, MI_G1,
MI_Gs1, MI_A1, MI_As1, MI_B1,
NOTES_SET_1, KC_TRNS, NOTES_SET_3, KC_TRNS
),
[LAYER_NOTES_SET_2] = LAYOUT(/* Notes Set-2 */
MI_C1, MI_Cs1, MI_D1, MI_Ds1, KC_MUTE, MI_E1, MI_F1, MI_Fs1, MI_G1, MI_Gs1, MI_A1, MI_As1, MI_B1, NOTES_SET_1, KC_TRNS, NOTES_SET_3, KC_TRNS),
[LAYER_NOTES_SET_3] = LAYOUT( /* Notes Set-3 */
MI_C2, MI_Cs2, MI_D2, MI_Ds2, KC_MUTE,
MI_E2, MI_F2, MI_Fs2, MI_G2,
MI_Gs2, MI_A2, MI_As2, MI_B2,
NOTES_SET_1, NOTES_SET_2, KC_TRNS, KC_TRNS
),
[LAYER_NOTES_SET_3] = LAYOUT(/* Notes Set-3 */
MI_C2, MI_Cs2, MI_D2, MI_Ds2, KC_MUTE, MI_E2, MI_F2, MI_Fs2, MI_G2, MI_Gs2, MI_A2, MI_As2, MI_B2, NOTES_SET_1, NOTES_SET_2, KC_TRNS, KC_TRNS),
[LAYER_RGB_CONTROL] = LAYOUT( /* RGB Control */
RGB_MODE_PLAIN, RGB_MODE_FORWARD, RGB_MODE_REVERSE, RGB_TOG, KC_MUTE,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
),
[LAYER_RGB_CONTROL] = LAYOUT(/* RGB Control */
RGB_MODE_PLAIN, RGB_MODE_FORWARD, RGB_MODE_REVERSE, RGB_TOG, KC_MUTE, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[LAYER_NOTES_SET_1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[LAYER_NOTES_SET_2] = { ENCODER_CCW_CW(MI_OCTD, MI_OCTU) },
[LAYER_NOTES_SET_3] = { ENCODER_CCW_CW(MI_TRSD, MI_TRSU) },
[LAYER_RGB_CONTROL] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
[LAYER_NOTES_SET_1] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[LAYER_NOTES_SET_2] = {ENCODER_CCW_CW(MI_OCTD, MI_OCTU)},
[LAYER_NOTES_SET_3] = {ENCODER_CCW_CW(MI_TRSD, MI_TRSU)},
[LAYER_RGB_CONTROL] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
};
#endif

View File

@ -8,9 +8,9 @@
* 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.
* along with this program.
* If not, see <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
@ -28,24 +28,13 @@ enum protokeeb_keymap_layers {
#define LOWER LT(LAYER_LOWER, KC_KP_0)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT( /* Base */
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, KC_MUTE,
KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK,
KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_MINUS,
LOWER, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS
),
[LAYER_BASE] = LAYOUT(/* Base */
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, KC_MUTE, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_MINUS, LOWER, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS),
[LAYER_LOWER] = LAYOUT( /* RGB Control */
RGB_MODE_PLAIN, RGB_MODE_FORWARD, RGB_MODE_REVERSE, RGB_TOG, KC_MUTE,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
KC_TRNS, RGB_MODE_SWIRL, QK_DEBUG_TOGGLE, QK_BOOT
),
[LAYER_LOWER] = LAYOUT(/* RGB Control */
RGB_MODE_PLAIN, RGB_MODE_FORWARD, RGB_MODE_REVERSE, RGB_TOG, KC_MUTE, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, RGB_MODE_SWIRL, QK_DEBUG_TOGGLE, QK_BOOT),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[LAYER_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[LAYER_LOWER] = { ENCODER_CCW_CW(KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP) }
};
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {[LAYER_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [LAYER_LOWER] = {ENCODER_CCW_CW(KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP)}};
#endif

View File

@ -18,6 +18,8 @@ The default layout comes pre-flashed on every Protokeeb and consists of two laye
- Layer 1: 16-key numpad, excluding the `NUM LOCK` key.
- Layer 2: RGB LED control and keyboard boot options.
- Layer 3: Media control, quick launch application and other options.
- Layer 4: Function Keys.
Make example for this keyboard (after setting up your build environment):
@ -27,7 +29,6 @@ Flashing example for this keyboard:
make protokeeb/rev1:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader