void setLayer(int layer) { if (layer == _COLEMAK) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(marioe); #endif set_single_persistent_default_layer(_COLEMAK); #ifdef BACKLIGHT_ENABLE backlight_set(0); #endif } else if (layer == _GAME) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(mario); #endif set_single_persistent_default_layer(_GAME); #ifdef BACKLIGHT_ENABLE backlight_set(15); #endif } else if (layer == _MUSIC) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(guitar); #endif set_single_persistent_default_layer(_MUSIC); #ifdef BACKLIGHT_ENABLE backlight_set(1); #endif } }
void led_set_user( uint8_t usb_led ) { static uint8_t old_usb_led = 0; wait_ms( 10 ); /* gets rid of tick */ if ( (usb_led & (1 << USB_LED_CAPS_LOCK) ) && !(old_usb_led & (1 << USB_LED_CAPS_LOCK) ) ) { /* CAPS on */ caps= true; rgblight_setrgb( 0,0,0 ); rgblight_setrgb_at(RGB_Caps_Color,12); // caps key #ifdef AUDIO_ENABLE PLAY_SONG( tone_caps ); #endif }else if ( !(usb_led & (1 << USB_LED_CAPS_LOCK) ) && (old_usb_led & (1 << USB_LED_CAPS_LOCK) ) ) { /* CAPS off */ caps= false; if (RGB_TAP_STATE==false){ rgblight_mode( RGB_LAYER0_mode ); }else{ rgblight_mode(1); rgblight_setrgb( 0,0,0 ); } #ifdef AUDIO_ENABLE PLAY_SONG( tone_caps ); #endif } old_usb_led = usb_led; } // End of led_set_user
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case FUNC: if (record->event.pressed) { layer_on(_FUNC); } else { layer_off(_FUNC); } return false; break; case PLOVER: if (!record->event.pressed) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(plover_song); #endif layer_on(_PLOVER); } 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; case MOUSE: if (record->event.pressed) { layer_on(_MOUSE); } else { layer_off(_MOUSE); } return false; break; } return true; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_qwerty); #endif persistent_default_layer_set(1UL<<_QWERTY); } return false; break; case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_colemak); #endif persistent_default_layer_set(1UL<<_COLEMAK); } return false; break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_dvorak); #endif persistent_default_layer_set(1UL<<_DVORAK); } return false; break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case ADJUST: if (record->event.pressed) { layer_on(_ADJUST); } else { layer_off(_ADJUST); } return false; break; } return true; }
void dip_update(uint8_t index, bool active) { switch (index) { case 0: if (active) { #ifdef AUDIO_ENABLE PLAY_SONG(plover_song); #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 stop_all_notes(); #endif } break; case 3: if (active) { clicky_on(); } else { clicky_off(); } } }
uint32_t default_layer_state_set_kb(uint32_t state) { if (state == 1UL<<_QWERTY) { PLAY_SONG(tone_qwerty); } else if (state == 1UL<<_NUMPAD) { PLAY_SONG(tone_numpad); } return state; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { 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 PORTE &= ~(1<<6); #endif } else { unregister_code(KC_RSFT); #ifdef KEYBOARD_planck_rev5 PORTE |= (1<<6); #endif } return false; break; case PLOVER: if (record->event.pressed) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(plover_song); #endif layer_off(_CUSTOM); 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); } 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; } return true; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_qwerty); #endif persistant_default_layer_set(1UL<<_QWERTY); } return false; break; case GAME: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(music_scale); #endif persistant_default_layer_set(1UL<<_GAME); } return false; break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case BACKLIT: if (record->event.pressed) { register_code(KC_RSFT); #ifdef BACKLIGHT_ENABLE backlight_step(); #endif } else { unregister_code(KC_RSFT); } return false; break; } return true; }
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 LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } 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); } 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; } return true; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case S_BSKTC: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_basketcase); } return false; case S_ODEJY: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_ode_to_joy); } return false; case S_RCKBY: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_rock_a_bye_baby); } return false; case S_DOEDR: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_doe_a_deer); } return false; case S_SCALE: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_scale); } return false; case S_ONEUP: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_one_up); } return false; case S_COIN: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_coin); } return false; case S_SONIC: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_sonic_ring); } return false; case S_ZELDA: if (record->event.pressed) { stop_all_notes(); PLAY_SONG(song_zelda_puzzle); } return false; } return true; }
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { if (record->event.pressed) { switch (id) { case 0: PLAY_SONG(tone_startup); break; case 1: PLAY_SONG(music_scale); break; case 2: PLAY_SONG(tone_goodbye); break; } } };
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case STENO: if (record->event.pressed) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(plover_song); #endif layer_off(RAISE_LAYER); layer_off(LOWER_LAYER); layer_off(ADJUST_LAYER); layer_on(STENO_LAYER); if (!eeconfig_is_enabled()) { eeconfig_init(); } keymap_config.raw = eeconfig_read_keymap(); keymap_config.nkro = 1; eeconfig_update_keymap(keymap_config.raw); plover_resume(); } return false; case PV_EXIT: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(plover_gb_song); #endif plover_suspend(); layer_off(STENO_LAYER); } return false; case PV_LOOK: if (record->event.pressed) { plover_lookup(); } return false; case SEND_VERSION: if (record->event.pressed) { SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION " (" QMK_BUILDDATE ")"); } return false; case SEND_MAKE: if (record->event.pressed) { SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":dfu\n"); } return false; } return true; }
void audio_off(void) { PLAY_SONG(audio_off_song); wait_ms(100); stop_all_notes(); audio_config.enable = 0; eeconfig_update_audio(audio_config.raw); }
void set_single_persistent_default_layer(uint8_t default_layer) { #ifdef AUDIO_ENABLE PLAY_SONG(default_layer_songs[default_layer]); #endif eeconfig_update_default_layer(1U<<default_layer); default_layer_set(1U<<default_layer); }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case LOWER: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_coin); #endif layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _KEYBOARD); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _KEYBOARD); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _KEYBOARD); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _KEYBOARD); } return false; break; case KC_RGUI: // set to pressed RGUI_PRESSED = record->event.pressed; // if left gui pressed and right gui pressed // turn on cap layer if (LGUI_PRESSED && RGUI_PRESSED) { // remove left gui mod unregister_code(KC_LGUI); layer_on(_CAP); // don't send gui in this case return false; } else { // if not both gui keys are pressed // then ensure cap layer is off layer_off(_CAP); // send gui button return true; } break; case KC_LGUI: // same as above LGUI_PRESSED = record->event.pressed; if (LGUI_PRESSED && RGUI_PRESSED) { // remove right gui mod unregister_code(KC_RGUI); layer_on(_CAP); return false; } else { layer_off(_CAP); return true; } break; } return true; }
void shutdown_user() { #ifdef AUDIO_ENABLE PLAY_SONG(tone_goodbye); _delay_ms(150); stop_all_notes(); #endif }
void reset_keyboard(void) { clear_keyboard(); #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) process_midi_all_notes_off(); #endif #ifdef AUDIO_ENABLE #ifndef NO_MUSIC_MODE music_all_notes_off(); #endif uint16_t timer_start = timer_read(); PLAY_SONG(goodbye_song); shutdown_user(); while(timer_elapsed(timer_start) < 250) wait_ms(1); stop_all_notes(); #else shutdown_user(); wait_ms(250); #endif // this is also done later in bootloader.c - not sure if it's neccesary here #ifdef BOOTLOADER_CATERINA *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific #endif bootloader_jump(); }
void set_single_persistent_default_layer(uint8_t default_layer) { #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) PLAY_SONG(default_layer_songs[default_layer]); #endif eeconfig_update_default_layer(1U<<default_layer); default_layer_set(1U<<default_layer); }
void startup_user() { _delay_ms(20); // gets rid of tick set_unicode_input_mode(UC_LNX); #ifdef AUDIO_ENABLE PLAY_SONG(tone_startup); #endif }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case NERD: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_nerd); #endif persistent_default_layer_set(1UL<<_NERD); } return false; break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; } return true; }
void set_qwerty(void) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(qwerty_song); #endif set_single_persistent_default_layer(_QWERTY); }
void set_colemak(void) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(colemak_song); #endif set_single_persistent_default_layer(_COLEMAK); }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { if (IS_LAYER_ON(_DVORAK)) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_qwerty); #endif layer_off(_DVORAK); } } return false; break; case DVORAK: if (record->event.pressed) { if (!IS_LAYER_ON(_DVORAK)) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_dvorak); #endif layer_on(_DVORAK); } } return false; break; case NUMBER: if (record->event.pressed) { layer_on(_NUMBER); update_tri_layer(_NUMBER, _ACTION, _FUNCTN); } else { layer_off(_NUMBER); update_tri_layer(_NUMBER, _ACTION, _FUNCTN); } return false; break; case ACTION: if (record->event.pressed) { layer_on(_ACTION); update_tri_layer(_NUMBER, _ACTION, _FUNCTN); } else { layer_off(_ACTION); update_tri_layer(_NUMBER, _ACTION, _FUNCTN); } return false; break; } return true; }
void matrix_init_kb(void) { #ifdef AUDIO_ENABLE _delay_ms(20); // gets rid of tick PLAY_SONG(tone_startup); #endif matrix_init_user(); };
// New keycode KC_LAYO rotates between available default layers (for e.g., // selecting a base layout). Shift+KC_LAYO makes the current one persistent. bool process_record_layout(uint16_t keycode, keyrecord_t *record) { uint32_t default_layer; uint8_t i; #if defined(AUDIO_ENABLE) float saved_song[][2] = SONG(COIN_SOUND); #endif if (keycode != KC_LAYO || !record->event.pressed) { return true; } if (get_mods() & (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))) { // shift pressed // save default layer. whatever the current default layer is, store that eeconfig_update_default_layer(default_layer_state); #if defined(AUDIO_ENABLE) PLAY_SONG(saved_song); #endif } else { // rotate default layer. // find the current default layer default_layer = biton32(default_layer_state); // find next valid default layer for (i = 1; i < defaultlayers_n; i++) { if (defaultlayers[(default_layer + i) % defaultlayers_n]) { break; } } if (i == defaultlayers_n) { // we fell out of the loop without finding another default layer to switch // to. return false; } default_layer = (default_layer + i) % defaultlayers_n; default_layer_set(1U<<default_layer); led_set(host_keyboard_leds()); #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) PLAY_SONG(default_layer_songs[default_layer]); #endif } return false; }
/* Tap Dance function */ void dance_cln_finished( qk_tap_dance_state_t* state, void* user_data ) { if ( state->count == 1 ) { register_code( KC_LSFT ); } else { layer_on( _SYMB ); #ifdef AUDIO_ENABLE PLAY_SONG( tone_taps ); #endif } }
void audio_init() { if (audio_initialized) { return; } // Check EEPROM #if defined(STM32_EEPROM_ENABLE) || defined(PROTOCOL_ARM_ATSAM) || defined(EEPROM_SIZE) if (!eeconfig_is_enabled()) { eeconfig_init(); } audio_config.raw = eeconfig_read_audio(); #else // ARM EEPROM audio_config.enable = true; #ifdef AUDIO_CLICKY_ON audio_config.clicky_enable = true; #endif #endif // ARM EEPROM /* * Starting DAC1 driver, setting up the output pin as analog as suggested * by the Reference Manual. */ palSetPadMode(GPIOA, 4, PAL_MODE_INPUT_ANALOG); palSetPadMode(GPIOA, 5, PAL_MODE_INPUT_ANALOG); dacStart(&DACD1, &dac1cfg1); dacStart(&DACD2, &dac1cfg2); /* * Starting GPT6/7 driver, it is used for triggering the DAC. */ START_CHANNEL_1(); START_CHANNEL_2(); /* * Starting a continuous conversion. */ dacStartConversion(&DACD1, &dacgrpcfg1, (dacsample_t *)dac_buffer, DAC_BUFFER_SIZE); dacStartConversion(&DACD2, &dacgrpcfg2, (dacsample_t *)dac_buffer_2, DAC_BUFFER_SIZE); audio_initialized = true; if (audio_config.enable) { PLAY_SONG(startup_song); } else { stop_all_notes(); } }
void matrix_scan_user (void) { uint8_t layer = biton32(layer_state); switch (layer) { case _NUMPAD: if (!numpadActive) { numpadActive = true; PLAY_SONG(tone_numpad_on); } break; default: if (numpadActive) { numpadActive = false; } } };
void matrix_init_kb(void) { #ifdef AUDIO_ENABLE _delay_ms(20); // gets rid of tick PLAY_SONG(tone_startup); #endif // // green led on // DDRD |= (1<<5); // PORTD &= ~(1<<5); // // orange led on // DDRB |= (1<<0); // PORTB &= ~(1<<0); matrix_init_user(); };
void dance_lower_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release switch(state->count){ case 1: // Normal action. Turn off layers layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); layer_off(_UNICODES); break; case 2: // Turn on _UNICODES layer layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); layer_on(_UNICODES); #ifdef AUDIO_ENABLE PLAY_SONG(tone_ctrl_mod); #endif break; } };