예제 #1
0
파일: keymap.c 프로젝트: 0xdec/qmk_firmware
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
    }
}
예제 #2
0
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
{
  // MACRODOWN only works in this function
      switch(id) {
        case 0:   
        if (record->event.pressed) {

          play_notes(&walk_up, 3, false);
          // play_note(440, 20);
          // register_code(KC_RSFT);
          #ifdef BACKLIGHT_ENABLE
            backlight_set(BACKLIGHT_LEVELS);
          #endif
          default_layer_and(0); 
          default_layer_or((1<<5));

          // uint8_t low = boot_lock_fuse_bits_get(0x0000);
          // uint8_t high = boot_lock_fuse_bits_get(0x0003);
          // uint8_t ext = boot_lock_fuse_bits_get(0x0002);
          // uint8_t lock = boot_lock_fuse_bits_get(0x0001);

          // register_code(hextokeycode((low & 0xF0) >> 4));
          // unregister_code(hextokeycode((low & 0xF0) >> 4));
          // register_code(hextokeycode((low & 0x0F)));
          // unregister_code(hextokeycode((low & 0x0F)));


          // register_code(hextokeycode((high & 0xF0) >> 4));
          // unregister_code(hextokeycode((high & 0xF0) >> 4));
          // register_code(hextokeycode((high & 0x0F)));
          // unregister_code(hextokeycode((high & 0x0F)));


          // register_code(hextokeycode((ext & 0xF0) >> 4));
          // unregister_code(hextokeycode((ext & 0xF0) >> 4));
          // register_code(hextokeycode((ext & 0x0F)));
          // unregister_code(hextokeycode((ext & 0x0F)));


          // register_code(hextokeycode((lock & 0xF0) >> 4));
          // unregister_code(hextokeycode((lock & 0xF0) >> 4));
          // register_code(hextokeycode((lock & 0x0F)));
          // unregister_code(hextokeycode((lock & 0x0F)));

        } else {
          unregister_code(KC_RSFT);
          play_notes(&walk_dn, 3, false);
          #ifdef BACKLIGHT_ENABLE
            backlight_set(0);
          #endif
          default_layer_and(0); 
          default_layer_or(0);
        }
        break;
      } 
    return MACRO_NONE;
};
예제 #3
0
void keyboard_slave_loop(void) {
   matrix_init();

   //Init RGB
   #ifdef RGBLIGHT_ENABLE
      rgblight_init();
   #endif

   while (1) {
    // Matrix Slave Scan
    matrix_slave_scan();

    // Read Backlight Info
    #ifdef BACKLIGHT_ENABLE
        #ifdef USE_I2C
            if (BACKLIT_DIRTY) {
                backlight_set(i2c_slave_buffer[I2C_BACKLIT_START]);
                BACKLIT_DIRTY = false;
            }
        #else // USE_SERIAL
            backlight_set(serial_m2s_buffer.backlight_level);
        #endif
    #endif
    // Read RGB Info
    #ifdef RGBLIGHT_ENABLE
        #ifdef USE_I2C
            if (RGB_DIRTY) {
                // Disable interupts (RGB data is big)
                cli();
                // Create new DWORD for RGB data
                uint32_t dword;

                // Fill the new DWORD with the data that was sent over
                uint8_t *dword_dat = (uint8_t *)(&dword);
                for (int i = 0; i < 4; i++) {
                    dword_dat[i] = i2c_slave_buffer[I2C_RGB_START+i];
                }

                // Update the RGB now with the new data and set RGB_DIRTY to false
                rgblight_update_dword(dword);
                RGB_DIRTY = false;
                // Re-enable interupts now that RGB is set
                sei();
            }
        #else // USE_SERIAL
          #ifdef RGBLIGHT_SPLIT
            // Add serial implementation for RGB here
          #endif
        #endif
    #endif
   }
}
예제 #4
0
void suspend_power_down(void)
{
#ifdef BACKLIGHT_ENABLE
    backlight_set(0);
#endif
#ifndef NO_SUSPEND_POWER_DOWN
    // Enable watchdog to wake from MCU sleep
    cli();
    wdt_reset();

    // Watchdog Interrupt and System Reset Mode
    //wdt_enable(WDTO_1S);
    //WDTCSR |= _BV(WDIE);
    
    // Watchdog Interrupt Mode
    wdt_intr_enable(WDTO_120MS);
    
    // TODO: more power saving
    // See PicoPower application note
    // - I/O port input with pullup
    // - prescale clock
    // - BOD disable
    // - Power Reduction Register PRR
    // sleep in power down mode
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_enable();
    sei();
    sleep_cpu();
    sleep_disable();

    // Disable watchdog after sleep
    wdt_disable();
#endif
}
예제 #5
0
파일: keymap.c 프로젝트: 0xdec/qmk_firmware
void custom_backlight_level(uint8_t level) {
    if (level > BACKLIGHT_LEVELS)
        level = BACKLIGHT_LEVELS;
    backlight_config.level = level;
    backlight_config.enable = !!backlight_config.level;
    backlight_set(backlight_config.level);
}
예제 #6
0
파일: tui.c 프로젝트: urjaman/carlcdp
static void tui_blsettingmenu(void) {
	uint8_t sel = 0;
	for(;;) {
		sel = tui_gen_listmenu((PGM_P)tui_blsm_name, tui_blsm_table, 5, sel);
		switch (sel) {
			case 0: {
			uint8_t v = tui_gen_nummenu((PGM_P)tui_blsm_s1, 0, 16, backlight_get());
			backlight_set(v);
			}
			break;

			case 1: {
			uint8_t v = tui_gen_nummenu((PGM_P)tui_blsm_s2, 0, backlight_get(), backlight_get_dv());
			backlight_set_dv(v);
			}
			break;

			case 2: {
			uint8_t v = tui_gen_nummenu((PGM_P)tui_blsm_s3, 1, 255, backlight_get_to());
			backlight_set_to(v);
			}
			break;

			case 3:
			tui_contrast_set_util();
			break;

			default:
			return;
		}
	}
}
예제 #7
0
void backlight_init(void)
{
    /* check signature */
    if (!eeconfig_is_enabled()) {
        eeconfig_init();
    }
    backlight_config.raw = eeconfig_read_backlight();
    backlight_set(backlight_config.enable ? backlight_config.level : 0);
}
예제 #8
0
	//TD dot to toggle layer 2
void _td_dot_tg_finished (qk_tap_dance_state_t *state, void *user_data) {
  if (state->count == 1) {
    register_code(KC_DOT);
  } else if (state->count == 2) {
    backlight_set(1);
	layer_on(_L2);
	layer_off(_L1);
	layer_off(_L3);
  }
}
예제 #9
0
	//TD kp plus to toggle layer 1
void _td_kp_plus_tg_finished (qk_tap_dance_state_t *state, void *user_data) {
  if (state->count == 1) {
    register_code(KC_KP_PLUS);
  } else if (state->count == 2) {
//    layer_invert(_L1);
    backlight_set(2);
	layer_on(_L1);
	layer_off(_L2);
	layer_off(_L3);
  }
}
예제 #10
0
void backlight_increase(void)
{
#ifdef BACKLIGHT_CUSTOM
    if (backlight_config.enable) {
        if (backlight_config.level < BACKLIGHT_LEVELS) {
            backlight_config.level++;
            eeconfig_write_backlight(backlight_config.raw);
        }
        dprintf("backlight custom increase: %u\n", backlight_config.level);
        backlight_set(backlight_config.level);
    }
#else
    if(backlight_config.level < BACKLIGHT_LEVELS)
    {
        backlight_config.level++;
        backlight_config.enable = 1;
        eeconfig_write_backlight(backlight_config.raw);
#ifdef REDUCE_CALLBACK_ON_LEVEL_CHANGE
        dprintf("backlight increase: %u\n", backlight_config.level);
        backlight_set(backlight_config.level);
    }
#else
    }
예제 #11
0
파일: lfd.c 프로젝트: jrspruitt/OpenLF-lfd
static void handle_control_message(struct lfd_control_message *msg, int s)
{
	int ret = 0;

	switch (msg->command) {
		case LFD_COMMAND_GET_VOLUME:
			msg->payload = sound_get_volume();
			msg->command |= LFD_RESPONSE;
			break;

		case LFD_COMMAND_SET_VOLUME:
			sound_set_volume(msg->payload);
			break;

		case LFD_COMMAND_GET_BACKLIGHT:
			msg->payload = backlight_get();
			msg->command |= LFD_RESPONSE;
			break;

		case LFD_COMMAND_SET_BACKLIGHT:
			backlight_set(msg->payload);
			break;

		case LFD_COMMAND_SET_BACKLIGHT_NEXT:
			backlight_next();
			break;

		case LFD_COMMAND_SET_RTC_TO_SYSTIME:
			time_set_rtc();
			break;

		case LFD_COMMAND_GET_BATTERY_MV:
			msg->payload = mv;
			msg->command |= LFD_RESPONSE;
			break;

		default:
			dbprintf("unknown LFD command: 0x%X\n", msg->command);
			return;
	};

	if (msg->command & LFD_RESPONSE) {
		ret = send(s, msg, sizeof(*msg), MSG_NOSIGNAL);
		if (ret < 0)
			dbprintf("can't send response\n");
	}
}
예제 #12
0
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();
}
예제 #13
0
void transport_slave(matrix_row_t matrix[]) {
  // Copy matrix to I2C buffer
  memcpy((void*)i2c_buffer->smatrix, (void *)matrix, sizeof(i2c_buffer->smatrix));

// Read Backlight Info
#  ifdef BACKLIGHT_ENABLE
  backlight_set(i2c_buffer->backlight_level);
#  endif

#  if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  // Update the RGB with the new data
  if (i2c_buffer->rgblight_sync.status.change_flags != 0) {
      rgblight_update_sync(&i2c_buffer->rgblight_sync, false);
      i2c_buffer->rgblight_sync.status.change_flags = 0;
  }
#  endif

#  ifdef ENCODER_ENABLE
  encoder_state_raw(i2c_buffer->encoder_state);
#  endif
}
예제 #14
0
파일: keymap.c 프로젝트: 0xdec/qmk_firmware
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
    case COLEMAK:
      if (record->event.pressed) {
        set_single_persistent_default_layer(_COLEMAK);
        #ifdef BACKLIGHT_ENABLE
		  backlight_set(0);
        #endif
      }
      return false;
      break;
	case GCTOGG:
      if (record->event.pressed) {
		  if (isGame) {
              if (isMusic)
                  setLayer(_MUSIC);
              else
                  setLayer(_COLEMAK);
              isGame = false;
          } else {
              setLayer(_GAME);
              isGame = true;
          }
      }
      return false;
      break;
    case MCTOGG:
        if (record->event.pressed) {
            if (isMusic) {
                if (isGame)
                    setLayer(_GAME);
                else
                    setLayer(_COLEMAK);
                isMusic = false;
            } else {
                setLayer(_MUSIC);
                isMusic = true;
            }
        }
        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 LENNY:
    	if (record->event.pressed) {
    		SEND_STRING("()");
    	}
    	return false; break;
    case COMMENTHEAD:
    	if (record->event.pressed) {
    		SEND_STRING("// ---------------------------------------------------------------");
    	}
    	return false; break;
    case RICKANDMORT:
    	if (record->event.pressed) {
    		SEND_STRING("// ***************************************************************");
    	}
    	return false; break;
    case MARIO:
        if(record->event.pressed) {
          #ifdef AUDIO_ENABLE
            PLAY_SONG(mario);
          #endif
        }
        return false; break;
      case MARIOE:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(marioe);
            #endif
          }
          return false; break;
      case OVERWATCH:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(overwatch);
            #endif
          }
          return false; break;
      case DOOM:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(doom);
            #endif
          }
          return false; break;
      case DISNEY:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(disney);
            #endif
          }
          return false; break;
      case NUMBERONE:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(numberone);
            #endif
          }
          return false; break;
      case CABBAGE:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(cabbage);
            #endif
          }
          return false; break;
      case OLDSPICE:
          if(record->event.pressed) {
            #ifdef AUDIO_ENABLE
              PLAY_SONG(oldspice);
            #endif
          }
          return false; break;
  }
  return true;
}