forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Keymap] Add personal keymap for kprepublic BM40HSRGB (qmk#18021)
Co-authored-by: Drashna Jaelre <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Fae <[email protected]>
- Loading branch information
1 parent
34261f5
commit 11ebba6
Showing
4 changed files
with
309 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
// Copyright 2022 Fae Fankhauser (@CoffeeIsLife87) | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
|
||
#pragma once | ||
|
||
#define LAYER_STATE_8BIT | ||
|
||
// RGB Matrix effects disable | ||
#ifdef RGB_MATRIX_ENABLE | ||
# define UNDERGLOW_DISABLE | ||
|
||
# define RGB_TRIGGER_ON_KEYDOWN | ||
|
||
# define RGB_MATRIX_LED_FLUSH_LIMIT 10 | ||
|
||
# undef ENABLE_RGB_MATRIX_SOLID_COLOR | ||
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS | ||
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN | ||
# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT | ||
# undef ENABLE_RGB_MATRIX_BREATHING | ||
# undef ENABLE_RGB_MATRIX_BAND_SAT | ||
# undef ENABLE_RGB_MATRIX_BAND_VAL | ||
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT | ||
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL | ||
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT | ||
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL | ||
|
||
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN | ||
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL | ||
# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON | ||
# undef ENABLE_RGB_MATRIX_DUAL_BEACON | ||
# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON | ||
# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS | ||
# undef ENABLE_RGB_MATRIX_RAINDROPS | ||
# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS | ||
# undef ENABLE_RGB_MATRIX_HUE_BREATHING | ||
# undef ENABLE_RGB_MATRIX_HUE_PENDULUM | ||
# undef ENABLE_RGB_MATRIX_HUE_WAVE | ||
# undef ENABLE_RGB_MATRIX_PIXEL_RAIN | ||
# undef ENABLE_RGB_MATRIX_PIXEL_FLOW | ||
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL | ||
|
||
# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP | ||
# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN | ||
|
||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE | ||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS | ||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS | ||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS | ||
# undef ENABLE_RGB_MATRIX_SPLASH | ||
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH | ||
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH | ||
#endif | ||
|
||
// If RGBLight is enabled | ||
#ifdef RGBLIGHT_ENABLE | ||
# define RGBLED_NUM DRIVER_LED_TOTAL | ||
|
||
# define RGBLIGHT_EFFECT_SNAKE | ||
# define RGBLIGHT_EFFECT_STATIC_GRADIENT | ||
#endif | ||
|
||
// Feature disable | ||
#ifndef NO_PRINT | ||
# define NO_PRINT | ||
#endif | ||
|
||
#ifndef NO_DEBUG | ||
# define NO_DEBUG | ||
#endif | ||
|
||
#ifndef NO_ACTION_ONESHOT | ||
# define NO_ACTION_ONESHOT | ||
#endif | ||
|
||
// Configure features | ||
#ifdef DYNAMIC_MACRO_ENABLE | ||
# define DYNAMIC_MACRO_USER_CALL | ||
# define DYNAMIC_MACRO_NO_NESTING | ||
#endif | ||
|
||
#ifdef MOUSEKEY_ENABLE | ||
# define MOUSEKEY_INTERVAL 16 // 60 FPS | ||
# define MK_3_SPEED | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
// Copyright 2022 Fae Fankhauser (@CoffeeIsLife87) | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
|
||
#include QMK_KEYBOARD_H | ||
|
||
enum custom_keycodes { | ||
NULLKEY = SAFE_RANGE, // An empty key to start (and maybe end) the enum | ||
#ifdef DYNAMIC_MACRO_ENABLE | ||
MCR_PLY, // Macro play | ||
MCR_REC, // Macro record | ||
MCR_SWT, // Swap active macro | ||
#endif | ||
}; | ||
|
||
enum layout_names { | ||
_MAIN = 0, // Keys Layout: The main keyboard layout that has all the characters | ||
_SUB, // Extension to Main | ||
_CTR, // Macros, RGB, Audio controls, layer access. More or less the control center of my keyboard | ||
_END, | ||
}; | ||
|
||
#ifdef DYNAMIC_MACRO_ENABLE | ||
// Macro 1 is = 1, Macro 2 = -1, No macro = 0 | ||
static bool MACRO1 = true; | ||
static bool RECORDING = false; | ||
|
||
static uint16_t REC = DM_REC1; | ||
static uint16_t PLY = DM_PLY1; | ||
|
||
void dynamic_macro_record_start_user(void) { | ||
REC = DM_RSTP; | ||
RECORDING = true; | ||
} | ||
void dynamic_macro_record_end_user(int8_t direction) { | ||
RECORDING = false; | ||
} | ||
#else | ||
#define MCR_PLY KC_NO | ||
#define MCR_REC KC_NO | ||
#define MCR_SWT KC_NO | ||
#endif | ||
|
||
const uint16_t PROGMEM keymaps[_END][MATRIX_ROWS][MATRIX_COLS] = { | ||
[_MAIN] = LAYOUT_planck_mit( | ||
KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, | ||
KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, | ||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT , | ||
KC_LCTL, KC_LGUI, XXXXXXX,KC_LALT ,MO(_SUB), KC_SPC ,MO(_CTR), KC_LEFT, KC_DOWN, KC_UP , KC_RGHT | ||
), | ||
[_SUB] = LAYOUT_planck_mit( | ||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DEL, | ||
XXXXXXX, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_PGUP, | ||
_______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, KC_PGDN, | ||
_______, _______, XXXXXXX, _______, _______, _______ , _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX | ||
), | ||
[_CTR] = LAYOUT_planck_mit( | ||
XXXXXXX, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, XXXXXXX, MCR_REC, | ||
XXXXXXX, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, MCR_PLY, | ||
XXXXXXX, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, XXXXXXX, XXXXXXX, MCR_SWT, | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX | ||
) | ||
}; | ||
|
||
#define LAYER (get_highest_layer(layer_state)) | ||
#define LAYER_SIZE (MATRIX_ROWS * MATRIX_COLS) | ||
#define CHECK_LED() \ | ||
if ((i >= DRIVER_LED_TOTAL) \ | ||
|| ((g_led_config.flags[pos] == LED_FLAG_NONE) || (g_led_config.flags[pos] == LED_FLAG_UNDERGLOW))) \ | ||
continue | ||
|
||
#ifdef RGB_MATRIX_ENABLE | ||
|
||
#ifdef UNDERGLOW_DISABLE | ||
void keyboard_pre_init_user(void) { | ||
|
||
for (int key_id = 0; key_id < DRIVER_LED_TOTAL; key_id++ ) { | ||
if (g_led_config.flags[key_id] == LED_FLAG_UNDERGLOW) { | ||
g_led_config.flags[key_id] = LED_FLAG_NONE; | ||
} | ||
} | ||
} | ||
#endif | ||
|
||
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { | ||
if (LAYER != _MAIN) { | ||
|
||
int DimmedMax = UINT8_MAX - (UINT8_MAX - rgb_matrix_config.hsv.v); | ||
|
||
for (uint8_t i = led_min; i <= led_max; i++) { | ||
|
||
uint8_t pos = ((uint8_t*)g_led_config.matrix_co)[i]; | ||
|
||
CHECK_LED(); // Check LED before moving on | ||
uint16_t KC = pgm_read_word(&((uint16_t*)keymaps)[(LAYER_SIZE * LAYER) + i]); | ||
|
||
if (KC == KC_NO) { | ||
RGB_MATRIX_INDICATOR_SET_COLOR(pos, 0, 0, 0 ); | ||
} | ||
|
||
#ifdef DYNAMIC_MACRO_ENABLE | ||
else if (KC == MCR_SWT) { | ||
if (!MACRO1) { | ||
RGB_MATRIX_INDICATOR_SET_COLOR(pos, 0, DimmedMax, DimmedMax); | ||
} | ||
} else if (KC == MCR_REC) { | ||
if (RECORDING) { | ||
RGB_MATRIX_INDICATOR_SET_COLOR(pos, DimmedMax, 0, 0); | ||
} | ||
} | ||
#endif | ||
|
||
} | ||
} | ||
} | ||
#endif | ||
|
||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
|
||
#ifdef DYNAMIC_MACRO_ENABLE | ||
if (keycode == MCR_REC) keycode = REC; | ||
if (keycode == MCR_PLY) keycode = PLY; | ||
if (!process_dynamic_macro(keycode, record)) { | ||
REC = (MACRO1 ? DM_REC1 : DM_REC2); | ||
return false; | ||
} | ||
#endif | ||
|
||
switch (keycode) { | ||
#ifdef DYNAMIC_MACRO_ENABLE | ||
case MCR_SWT: | ||
if (!RECORDING && record->event.pressed) { | ||
// if the button is pressed and we're not recording | ||
MACRO1 = !MACRO1; | ||
if (MACRO1) { | ||
REC = DM_REC1; | ||
PLY = DM_PLY1; | ||
} else { | ||
REC = DM_REC2; | ||
PLY = DM_PLY2; | ||
} | ||
} | ||
return false; | ||
#endif | ||
|
||
#if defined(RGB_MATRIX_ENABLE) && defined(RGBLIGHT_ENABLE) // this only needs to be defined if both are enabled | ||
case RGB_TOG: // We can intercept this keycode ig? Cool :) | ||
if (record->event.pressed) { | ||
if (rgb_matrix_is_enabled()) { | ||
rgb_matrix_disable/*_noeeprom*/(); | ||
rgblight_enable/*_noeeprom*/(); | ||
} else if (rgblight_is_enabled()) { | ||
rgb_matrix_disable/*_noeeprom*/(); | ||
rgblight_disable/*_noeeprom*/(); | ||
} else { | ||
rgb_matrix_enable/*_noeeprom*/(); | ||
rgblight_disable/*_noeeprom*/(); | ||
} | ||
} | ||
return false; | ||
#endif | ||
|
||
default: | ||
return true; //Process all other keycodes normally | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# Kprepublic BM40HSRGB Coffee | ||
|
||
A layout that aims to be familiar to people that have used larger boards | ||
|
||
## The layout | ||
|
||
The primary layer ( `_MAIN` ) is as close to standard qwerty as I could get. | ||
``` | ||
esc | q | w | e | r | t | y | u | i | o | p | bksp | ||
tab | a | s | d | f | g | h | j | k | l | ; | ' | ||
shft | z | x | c | v | b | n | m | , | . | / | rtrn | ||
ctrl | win | | alt | SUB | spc | CTR | lft | dwn | up | rght | ||
``` | ||
|
||
The secondary layer ( `_SUB` ) is for syntax, F keys, and number keys | ||
``` | ||
grv | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | del | ||
| F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | pgup | ||
_ | F7 | F8 | F9 | F10 | F11 | F12 | | | | \ | pgdn | ||
_ | _ | | _ | _ | _ | _ | | | | | ||
``` | ||
|
||
The control layer ( `_CTR` ) is for lighting, media, and macros | ||
``` | ||
| SPD- | BRI+ | SPD+ | HUE+ | SAT+ | | | VOL+ | | | MCR_REC | ||
| EFCT- | BRI- | EFCT+ | HUE- | SAT- | | PREV | PLAY | NEXT | | MCR_PLY | ||
| | TOG | | | | | | VOL- | | | MCR_SWT | ||
| | | | | _ | | | | | | ||
``` | ||
|
||
| Key name | Explanation | | ||
| -------- | -------------------------------------- | | ||
| \_ | Passthrough the key on the layer below | | ||
| SUB | Goes to _SUB layer while held down | | ||
| CTR | Goes to _CTR layer while held down | | ||
| SPD +/- | Changes speed for the RGB effect | | ||
| BRI +/- | Changes the brightness of the lighting | | ||
| EFCT +/- | Moves to the next/previous effect | | ||
| TOG | Toggles the lighting on or off | | ||
| HUE +/- | Changes the hue for RGB effects | | ||
| SAT +/- | Changes the saturation for RGB effects | | ||
| MSE | Toggles the Mouse layer | | ||
| VOL +/- | Raises or lowers media volume | | ||
| PREV | Goes to previous media | | ||
| PLAY | Play/Pause media | | ||
| NEXT | Goes to next media | | ||
| MCR_REC | Record macro ( Press again to stop ) | | ||
| MCR_PLY | Play recorded macro | | ||
| MCR_SWT | Switch active macro | | ||
|
||
## Compiling | ||
|
||
Compiling: `make kprepublic/bm40hsrgb:coffee` | ||
|
||
Flashing: `make kprepublic/bm40hsrgb:coffee:flash` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
MOUSEKEY_ENABLE = no | ||
NKRO_ENABLE = yes | ||
DYNAMIC_MACRO_ENABLE = yes | ||
LTO_ENABLE = yes |