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