void matrix_init_kb(void) { matrix_init_user(); // Configure the Layer LED // Set up 16 bit PWM: Fast PWM, mode 15, inverted TCCR1A = 0b11111110; TCCR1B = 0b00011001; ICR1 = 0xFFFF; // PWM values - 0xFFFF = off, 0x0000 = max OCR1C = 0x0000; // B7 - Blue OCR1B = 0x0000; // B6 - Green OCR1A = 0x0FFF; // B5 - Red // Set as output DDRB |= 0b11100000; #ifndef AUDIO_ENABLE // If we're not using the audio pin, drive it low sbi(DDRC, 6); cbi(PORTC, 6); #endif #ifdef ISSI_ENABLE issi_init(); #endif #ifdef WATCHDOG_ENABLE // This is done after turning the layer LED red, if we're caught in a loop // we should get a flashing red light wdt_enable(WDTO_500MS); #endif }
void matrix_init_kb(void) { debug_enable=true; print("meira matrix_init_kb\n"); #ifdef ISSI_ENABLE issi_init(); #endif backlight_set(5); #ifdef WATCHDOG_ENABLE // This is done after turning the layer LED red, if we're caught in a loop // we should get a flashing red light wdt_enable(WDTO_500MS); #endif // put your keyboard start-up code here // runs once when the firmware starts up matrix_init_user(); }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif // persistent_default_layer_set(1UL<<_QWERTY); } return false; break; case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif // persistent_default_layer_set(1UL<<_COLEMAK); } return false; break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_dvorak, false, 0); #endif // persistent_default_layer_set(1UL<<_DVORAK); } return false; break; case LOWER: if (record->event.pressed) { //not sure how to have keyboard check mode and set it to a variable, so my work around //uses another variable that would be set to true after the first time a reactive key is pressed. if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false } else { TOG_STATUS = !TOG_STATUS; #ifdef RGBLIGHT_ENABLE rgblight_mode(16); #endif } layer_on(_LOWER); update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); } else { #ifdef RGBLIGHT_ENABLE rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change #endif TOG_STATUS = false; layer_off(_LOWER); update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { //not sure how to have keyboard check mode and set it to a variable, so my work around //uses another variable that would be set to true after the first time a reactive key is pressed. if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false } else { TOG_STATUS = !TOG_STATUS; #ifdef RGBLIGHT_ENABLE rgblight_mode(15); #endif } layer_on(_RAISE); update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); } else { #ifdef RGBLIGHT_ENABLE rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change #endif layer_off(_RAISE); TOG_STATUS = false; update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); } return false; break; case ADJUST: // FIXME add RGB feedback if (record->event.pressed) { layer_on(_ADJUST); } else { layer_off(_ADJUST); } return false; break; case BL_TOGG: #ifdef ISSI_ENABLE if (record->event.pressed) { print("Enabling backlight\n"); issi_init(); } #endif return false; break; case BL_STEP: if (record->event.pressed) { print("Stepping backlight\n"); #ifdef BACKLIGHT_ENABLE print("Really stepping backlight\n"); backlight_step(); #endif } return false; break; //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released #ifdef RGBLIGHT_ENABLE case RGB_MOD: if (record->event.pressed) { rgblight_mode(RGB_current_mode); rgblight_step(); RGB_current_mode = rgblight_config.mode; } return false; break; #endif // case BL_INC: // meira_inc_backlight_level(); // 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_NOTE_ARRAY(tone_qwerty, false, 0); #endif } return false; break; case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif } return false; break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_dvorak, false, 0); #endif } 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: // FIXME add RGB feedback if (record->event.pressed) { layer_on(_ADJUST); } else { layer_off(_ADJUST); } return false; break; case BL_TOGG: #ifdef ISSI_ENABLE if (record->event.pressed) { print("Enabling backlight\n"); issi_init(); } #endif return false; break; case BL_STEP: if (record->event.pressed) { print("Stepping backlight\n"); } return false; break; case FLIP: if (record->event.pressed) { SEND_STRING("&fliptable;"); } return false; break; case CONFUSED: if (record->event.pressed) { SEND_STRING(":-\\"); } // register_codeturn false; break; case SHIT: if (record->event.pressed) { SEND_STRING("&shit; "); } return false; break; case CRY: if (record->event.pressed) { SEND_STRING(":'-( "); } return false; break; case LLAP: if (record->event.pressed) { SEND_STRING("&llap; "); } return false; break; case GRIN: if (record->event.pressed) { SEND_STRING(":-D "); } return false; break; case TOUNGE: if (record->event.pressed) { SEND_STRING(":-P "); } return false; break; case JOY: if (record->event.pressed) { SEND_STRING(":-) "); } return false; break; case FROWN: if (record->event.pressed) { SEND_STRING(":-( "); } return false; break; case HEART: if (record->event.pressed) { SEND_STRING("<3 "); } return false; break; case SHRUG: if (record->event.pressed) { SEND_STRING("&shrug; "); } return false; break; case THMBUP: if (record->event.pressed) { SEND_STRING("&thumbup; "); } return false; break; case THMBDN: if (record->event.pressed) { SEND_STRING("&thumbdown; "); } return false; break; case FNGLEFT: if (record->event.pressed) { SEND_STRING("&fingerleft; "); } return false; break; case FNGRIGHT: if (record->event.pressed) { SEND_STRING("&fingerright; "); } return false; break; case WINK: if (record->event.pressed) { SEND_STRING(";-) "); } return false; break; case ABOVE: if (record->event.pressed) { SEND_STRING("&above; "); } return false; break; } return true; }