/*
tap danc eis turned on in the rules now...
*/
#include QMK_KEYBOARD_H
#define _EMOJI 0
#define _TAPLAND 1
#define _LEDCNTL 2
enum custom_keycodes {
SHRUG,
DISFACE,
FU,
TFLIP,
TFLIP2,
SAD_EYES,
TPUT,
HAPPYFACE,
HEARTFACE,
CLOUD,
CHANFACE,
CMDCLEAR
};
//Tap Dance Declarations
enum {
TD_EXAMPLE1 = 0,
TD_EXAMPLE2,
TD_EXAMPLE3,
TD_EXAMPLE4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* EMOJI Pad
* ,-------------------------------.
* |TFLIP | TFlIP2|DISFACE| FU |
* |------+-------+-------+--------|
* | CLOUD| | | CLEAR |
* |SHRUG |DISFACE| HRTFAC| HAPPYF |
* | ENTER| |LEDCNTR| tapland|
* `-------------------------------'
//purple
[_EMOJI] = LAYOUT_ortho_4x4(
TFLIP, TFLIP2, KC_NO, FU ,
CLOUD, KC_NO, KC_NO, CMDCLEAR,
SHRUG, DISFACE, HEARTFACE, HAPPYFACE,
KC_ENT, RGB_TOG, MO(_LEDCNTL), MO(_TAPLAND)
),
/* TapLand //
* | str1 | str2 | str3 | str4 |
* | | | | |
//blue
[_TAPLAND] = LAYOUT_ortho_4x4(
TD(TD_EXAMPLE1), TD(TD_EXAMPLE2), TD(TD_EXAMPLE3), TD(TD_EXAMPLE4),
KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO
/* LEDControl Pad
* | snake|breathe|rainbow|gradient|
* | xmas | Val+ | Sat+ | HUE+ |
* |kngrdr| Val- | Sat- | HUE- |
* | swirl| PLAIN | | ON/OFF |
[_LEDCNTL] = LAYOUT_ortho_4x4(
RGB_M_SN, RGB_M_B, RGB_M_R, RGB_M_G,
RGB_M_X, RGB_VAI, RGB_SAI, RGB_HUI,
RGB_M_K, RGB_VAD, RGB_SAD, RGB_HUD,
RGB_M_SW, RGB_M_P, KC_NO, RGB_TOG
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case CLOUD:
if(record->event.pressed){
send_unicode_string("(っ◕‿◕)っ");
}
return false;
break;
case FU:
SEND_STRING("t(-_-t)");
case HAPPYFACE:
send_unicode_string("ʘ‿ʘ");
case CMDCLEAR:
register_code(KC_LGUI);
tap_code(KC_A);
unregister_code(KC_LGUI);
tap_code(KC_DEL);
case SHRUG:
send_unicode_string("¯\\_(ツ)_/¯");
case HEARTFACE:
send_unicode_string("♥‿♥");
case DISFACE:
send_unicode_string("ಠ_ಠ");
case TFLIP:
send_unicode_string("(╯°□°)╯ ︵ ┻━┻");
case TFLIP2:
send_unicode_string("┻━┻︵ \\(°□°)/ ︵ ┻━┻");
return true;
/* tap dance time */
void tdexample1(qk_tap_dance_state_t *state, void *user_data) {
if (state->count >= 2) {
SEND_STRING(EXAMPLESTRING1);
reset_tap_dance (state);
void tdexample2(qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING(EXAMPLESTRING2);
void tdexample3(qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING(EXAMPLESTRING3);
void tdexample4(qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING(EXAMPLESTRING4);
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_EXAMPLE1] = ACTION_TAP_DANCE_FN(tdexample1),
[TD_EXAMPLE2] = ACTION_TAP_DANCE_FN(tdexample2),
[TD_EXAMPLE3] = ACTION_TAP_DANCE_FN(tdexample3),
[TD_EXAMPLE4] = ACTION_TAP_DANCE_FN(tdexample4)
// Runs just one time when the keyboard initializes.
void matrix_scan_user(void) {
static bool has_ran_yet;
if (!has_ran_yet) {
has_ran_yet = true;
rgblight_setrgb (16, 0, 16);
uint32_t layer_state_set_user(uint32_t state) {
switch (biton32(state)) {
case _TAPLAND:
rgblight_setrgb(0, 16, 0); //green
case _LEDCNTL:
rgblight_setrgb(0, 0, 16); //blue
case _EMOJI:
rgblight_setrgb (16, 0, 16); //purple
default: // for any other layers, or the default layer
return state;