keyboard
- keyboard pcb guide - guide on how to design keyboard pcbs with kicad
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?
keypad
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