[Keymap] junonum: community keymap improvement (#19727)
Co-authored-by: Minh-tri Nguyen <mtngx@PigeonMac.local> Co-authored-by: Joel Challis <git@zvecr.com>
This commit is contained in:
		
							parent
							
								
									40f0325af8
								
							
						
					
					
						commit
						cdaac25861
					
				
					 2 changed files with 160 additions and 137 deletions
				
			
		| 
						 | 
				
			
			@ -1,5 +1,24 @@
 | 
			
		|||
/* Copyright 2023 Juno Nguyen <juno.ngx@gmail.com>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 QMK_KEYBOARD_H
 | 
			
		||||
#include "muse.h"
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
#    include "muse.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
enum planck_layers {
 | 
			
		||||
    _QWERTY,
 | 
			
		||||
| 
						 | 
				
			
			@ -120,39 +139,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
float plover_song[][2]    = SONG(PLOVER_SOUND);
 | 
			
		||||
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
 | 
			
		||||
    float plover_song[][2]    = SONG(PLOVER_SOUND);
 | 
			
		||||
    float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
 | 
			
		||||
 | 
			
		||||
float caps_song_on[][2]  = SONG(NUM_LOCK_ON_SOUND);
 | 
			
		||||
float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND);
 | 
			
		||||
    float caps_song_on[][2]  = SONG(NUM_LOCK_ON_SOUND);
 | 
			
		||||
    float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND);
 | 
			
		||||
 | 
			
		||||
// Custom songs for DPAD layer status
 | 
			
		||||
float dpad_song_on[][2] = {
 | 
			
		||||
	HD_NOTE(_A4), HD_NOTE(_A4), HD_NOTE(_A4),
 | 
			
		||||
	QD_NOTE(_F4), QD_NOTE(_C5), HD_NOTE(_A4),
 | 
			
		||||
	QD_NOTE(_F4),  QD_NOTE(_C5), WD_NOTE(_A4)
 | 
			
		||||
};
 | 
			
		||||
    // Custom songs for DPAD layer status
 | 
			
		||||
    float dpad_song_on[][2] = {
 | 
			
		||||
        HD_NOTE(_A4), HD_NOTE(_A4), HD_NOTE(_A4),
 | 
			
		||||
        QD_NOTE(_F4), QD_NOTE(_C5), HD_NOTE(_A4),
 | 
			
		||||
        QD_NOTE(_F4),  QD_NOTE(_C5), WD_NOTE(_A4)
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
float dpad_song_off[][2] = {
 | 
			
		||||
	ED_NOTE(_C6), ED_NOTE(_C6),
 | 
			
		||||
	ED_NOTE(_C6), ED_NOTE(_C6),
 | 
			
		||||
	W__NOTE(_REST), QD_NOTE(_GS5),
 | 
			
		||||
	QD_NOTE(_AS5), Q__NOTE(_C6),
 | 
			
		||||
	Q__NOTE(_AS5), Q__NOTE(_C6)
 | 
			
		||||
};
 | 
			
		||||
    float dpad_song_off[][2] = {
 | 
			
		||||
        ED_NOTE(_C6), ED_NOTE(_C6),
 | 
			
		||||
        ED_NOTE(_C6), ED_NOTE(_C6),
 | 
			
		||||
        W__NOTE(_REST), QD_NOTE(_GS5),
 | 
			
		||||
        QD_NOTE(_AS5), Q__NOTE(_C6),
 | 
			
		||||
        Q__NOTE(_AS5), Q__NOTE(_C6)
 | 
			
		||||
    };
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef BACKLIGHT_ENABLE
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
    // LED control, lighting up when Fn layer is activated
 | 
			
		||||
    state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
			
		||||
    switch (get_highest_layer(state)) {
 | 
			
		||||
#   ifdef BACKLIGHT_ENABLE
 | 
			
		||||
        // LED control, lighting up when Fn layer is activated
 | 
			
		||||
        switch (get_highest_layer(state)) {
 | 
			
		||||
        case _QWERTY:
 | 
			
		||||
            backlight_set(0);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			@ -162,112 +175,111 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		|||
        case _DPAD:
 | 
			
		||||
            backlight_set(3);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
        }
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
        case QWERTY:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                print("mode just switched to qwerty and this is a huge string\n");
 | 
			
		||||
                set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case COLEMAK:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                set_single_persistent_default_layer(_COLEMAK);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case DVORAK:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                set_single_persistent_default_layer(_DVORAK);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case BACKLIT:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                register_code(KC_RSFT);
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
    case QWERTY:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
            print("mode just switched to qwerty and this is a huge string\n");
 | 
			
		||||
            set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        break;
 | 
			
		||||
    case COLEMAK:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
            set_single_persistent_default_layer(_COLEMAK);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        break;
 | 
			
		||||
    case DVORAK:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
            set_single_persistent_default_layer(_DVORAK);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        break;
 | 
			
		||||
    case BACKLIT:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
            register_code(KC_RSFT);
 | 
			
		||||
#           ifdef BACKLIGHT_ENABLE
 | 
			
		||||
                backlight_step();
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef KEYBOARD_planck_rev5
 | 
			
		||||
#           endif
 | 
			
		||||
#           ifdef KEYBOARD_planck_rev5
 | 
			
		||||
                writePinLow(E6);
 | 
			
		||||
#endif
 | 
			
		||||
            } else {
 | 
			
		||||
                unregister_code(KC_RSFT);
 | 
			
		||||
#ifdef KEYBOARD_planck_rev5
 | 
			
		||||
#           endif
 | 
			
		||||
        } else {
 | 
			
		||||
            unregister_code(KC_RSFT);
 | 
			
		||||
#           ifdef KEYBOARD_planck_rev5
 | 
			
		||||
                writePinHigh(E6);
 | 
			
		||||
#endif
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case PLOVER:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
#           endif
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        break;
 | 
			
		||||
    case PLOVER:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                stop_all_notes();
 | 
			
		||||
                PLAY_SONG(plover_song);
 | 
			
		||||
#endif
 | 
			
		||||
                layer_off(_RAISE);
 | 
			
		||||
                layer_off(_LOWER);
 | 
			
		||||
                layer_off(_ADJUST);
 | 
			
		||||
                layer_on(_PLOVER);
 | 
			
		||||
                if (!eeconfig_is_enabled()) {
 | 
			
		||||
                    eeconfig_init();
 | 
			
		||||
                }
 | 
			
		||||
                keymap_config.raw  = eeconfig_read_keymap();
 | 
			
		||||
                keymap_config.nkro = 1;
 | 
			
		||||
                eeconfig_update_keymap(keymap_config.raw);
 | 
			
		||||
#           endif
 | 
			
		||||
            layer_off(_RAISE);
 | 
			
		||||
            layer_off(_LOWER);
 | 
			
		||||
            layer_off(_ADJUST);
 | 
			
		||||
            layer_on(_PLOVER);
 | 
			
		||||
            if (!eeconfig_is_enabled()) {
 | 
			
		||||
                eeconfig_init();
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case EXT_PLV:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
            keymap_config.raw  = eeconfig_read_keymap();
 | 
			
		||||
            keymap_config.nkro = 1;
 | 
			
		||||
            eeconfig_update_keymap(keymap_config.raw);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        break;
 | 
			
		||||
    case EXT_PLV:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                PLAY_SONG(plover_gb_song);
 | 
			
		||||
#endif
 | 
			
		||||
                layer_off(_PLOVER);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
#           endif
 | 
			
		||||
            layer_off(_PLOVER);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
            // Play audio upon switching Caps Lock and custom layers
 | 
			
		||||
 | 
			
		||||
        case KC_CAPS:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
        // Play audio upon switching Caps Lock and custom layers
 | 
			
		||||
    case KC_CAPS:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                if (host_keyboard_led_state().caps_lock) {
 | 
			
		||||
                    PLAY_SONG(caps_song_off);
 | 
			
		||||
                } else {
 | 
			
		||||
                    PLAY_SONG(caps_song_on);
 | 
			
		||||
                }
 | 
			
		||||
#endif
 | 
			
		||||
            }
 | 
			
		||||
            return true;
 | 
			
		||||
#           endif
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
 | 
			
		||||
        case DP_ON:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
            } else {  // only actived upon key release
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
    case DP_ON:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
        } else {  // only actived upon key release
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                PLAY_SONG(dpad_song_on);
 | 
			
		||||
#endif
 | 
			
		||||
#           endif
 | 
			
		||||
 | 
			
		||||
                layer_off(_FN1);
 | 
			
		||||
                layer_on(_DPAD);
 | 
			
		||||
            }
 | 
			
		||||
            layer_off(_FN1);
 | 
			
		||||
            layer_on(_DPAD);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        case DP_OFF:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
    case DP_OFF:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                PLAY_SONG(dpad_song_off);
 | 
			
		||||
#endif
 | 
			
		||||
#           endif
 | 
			
		||||
 | 
			
		||||
                layer_off(_DPAD);
 | 
			
		||||
            }
 | 
			
		||||
            layer_off(_DPAD);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -305,28 +317,28 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		|||
 | 
			
		||||
bool dip_switch_update_user(uint8_t index, bool active) {
 | 
			
		||||
    switch (index) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            if (active) {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
    case 0:
 | 
			
		||||
        if (active) {
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                PLAY_SONG(plover_song);
 | 
			
		||||
#endif
 | 
			
		||||
                layer_on(_ADJUST);
 | 
			
		||||
            } else {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
#           endif
 | 
			
		||||
            layer_on(_ADJUST);
 | 
			
		||||
        } else {
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                PLAY_SONG(plover_gb_song);
 | 
			
		||||
#endif
 | 
			
		||||
                layer_off(_ADJUST);
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case 1:
 | 
			
		||||
            if (active) {
 | 
			
		||||
                muse_mode = true;
 | 
			
		||||
            } else {
 | 
			
		||||
                muse_mode = false;
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
#           endif
 | 
			
		||||
            layer_off(_ADJUST);
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    case 1:
 | 
			
		||||
        if (active) {
 | 
			
		||||
            muse_mode = true;
 | 
			
		||||
        } else {
 | 
			
		||||
            muse_mode = false;
 | 
			
		||||
#           ifdef AUDIO_ENABLE
 | 
			
		||||
                stop_all_notes();
 | 
			
		||||
#endif
 | 
			
		||||
            }
 | 
			
		||||
#           endif
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -349,10 +361,19 @@ void matrix_scan_user(void) {
 | 
			
		|||
 | 
			
		||||
bool music_mask_user(uint16_t keycode) {
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
        case RAISE:
 | 
			
		||||
        case LOWER:
 | 
			
		||||
            return false;
 | 
			
		||||
        default:
 | 
			
		||||
            return true;
 | 
			
		||||
    case RAISE:
 | 
			
		||||
    case LOWER:
 | 
			
		||||
        return false;
 | 
			
		||||
    default:
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    void keyboard_post_init_user(void) {
 | 
			
		||||
        rgblight_enable_noeeprom(); // Enables RGB, without saving settings
 | 
			
		||||
        // Vibrant cyan
 | 
			
		||||
        rgblight_sethsv_noeeprom(HSV_SPRINGGREEN);
 | 
			
		||||
        rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue