keyboard

custom split

part price link
pcb 64.45 link
rotary encoder & knobs 9.95 link
switches, films, stabs 78.34 link
keycaps 152.00 link
grease 4.49 link
case 136.50 link
total 445.73  

to buy

  • trrs cable?
  • desk mat?
  • usb c cable?

qmk

double tap play/pause button

if you double tap the play/pause button it skips forward, but with this implementation there's no latency for a standard pause

enum {
    TD_SUPER_SKIP
};

void superskip_each(qk_tap_dance_state_t *state, void* user_data) {
    if (state->count == 1) {
        register_code(KC_MEDIA_PLAY_PAUSE);
    }
    else if (state->count == 2) {
        unregister_code(KC_MEDIA_PLAY_PAUSE);
    }
}

void superskip_finished(qk_tap_dance_state_t *state, void* user_data) {
    if (state->count == 1) {
        unregister_code(KC_MEDIA_PLAY_PAUSE);
    }
    else if (state->count == 2) {
        SEND_STRING(SS_TAP(X_MEDIA_PLAY_PAUSE) SS_DELAY(100) SS_TAP(X_MEDIA_NEXT_TRACK));
    }
    else if (state->count == 3) {
        SEND_STRING(SS_TAP(X_MEDIA_PLAY_PAUSE) SS_DELAY(100) SS_TAP(X_MEDIA_PREV_TRACK));
    }
}

qk_tap_dance_action_t tap_dance_actions[] = {
    [TD_SUPER_SKIP] = ACTION_TAP_DANCE_FN_ADVANCED(superskip_each, superskip_finished, NULL)
};

uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case TD(TD_SUPER_SKIP):
            return TAPPING_TERM * 2;
        default:
            return TAPPING_TERM;
    }
}

work keyboard

  • ymdk96
  • assembled tofu 96
  • vortex tab 90
  • kbdpad mk11