summary refs log tree commit diff
path: root/How to - Custom handwired keyboard.md
blob: b43ddccf0250a54e8bd85c93ddff01a741a38d17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
---
description: Process of how to create a custom designed hardwired keyboard
created: 2024-03-01
---

TODO ROUGH PRICE

## Plan
Start out by getting a rough plan of what you want to make, so you can order parts, as takes a while, if you wish to do 
it cheaply.

First of all you need to decide how big your keyboard needs to be, do you wish to make an 100%, macropad, ultra-compact, 
split, do you want dedicated buttons for all 24 function keys? none of the above?

You can play around with [keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/) to find a layout you like,
see different layout under "Preset"

Massive repo of inspiration: [keebfolio.netlify.app](https://keebfolio.netlify.app/)

### Switches
#### Design (Will affect keyboard design)
- Cherry MX design (classic, old, bulky, readily available, cloned into oblivion)
- Low profile?
  - Kalih Choc (Expensive, different keycaps)
  - Others
    - [gateron.co - Gateron Low Profile 2.0 Mechanical Switch](https://www.gateron.co/products/gateron-low-profile-mechanical-switch-set)
    - [keychron.com - Keychron Low Profile Mechanical Switch](https://www.keychron.com/products/keychron-low-profile-mechanical-switch)
Unsure, order a Switch tester or ask a friend to try their switches, to see what you like
#### Type
Generally there 3 types, originally made by cherry, I'd recommend none of them
- Clicky - Typically blue (obnoxious)
- Linear - Typically red (Did I press that button?)
- Tactile - Typically brown (Mushy)

But do limit your scope enough, so you don't lose interest before completing the core project.
Be ready to test ideas feasibility and scrap them if infeasible.

### Switch matrix
So what parts do you need?
You need to decide which method you wish to use, to wire up your switches
- Matrix with diodes (recommended method)
  - Requires 1 diodes per switch, diodes are cheap
  - Cable routing is more manageable
- Straight (1 wire per switch to microcontroller)
  - Requires enough pins

An I/O expander can be used to add additional pins to a microcontroller, it's also useful for split keyboards, 
as it can require only 4 pins (I²C + power and ground) from the microcontroller

## Order parts (Consumables)
### Checklist
#### Keyboard specific
- Switches
- Microcontroller, look at [QMK Compatible microcontrollers](https://docs.qmk.fm/#/compatible_microcontrollers),
i recommend a RP2040 based microcontroller
- Keycaps? Do you want to order these or [3D print them](#3d-printed-keycaps)
- Diodes [aliexpress.com - 1N4148](https://www.aliexpress.com/item/1005005435418695.html)
- Split keyboard parts
  - I/O expander route
    - I/O expander MCP23017
  - Connector [aliexpress.com - TRRS headphone jack](https://www.aliexpress.com/item/1005003146932723.html)
  - Cable [aliexpress.com - TRRS headphone cable](https://www.aliexpress.com/item/1005001781279058.html)

#### General maker
- 3D printed filament
- Solder tin
- Extra features?
Get wild, add an old [ThinkPad trackpoint](https://docs.qmk.fm/#/feature_ps2_mouse), 
a [rollerball mouse](https://shop.pimoroni.com/products/trackball-breakout?variant=27672765038675), 
rotary encoder, maybe LEDs.
- Heat shrink tube
- Magnet wire (can come in handy)

### Tools - non consumables
- 3D printer
- Soldering iron
- Continuity tester (for debugging connections)
- 

## Waiting for parts
### Layout design finalisation
Staggered?
Ortholinear?
Something else entirely?

[keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/)

[keyboard-layout-editor.com - My layout](http://www.keyboard-layout-editor.com/##@_backcolor=%23000000%3B&@_c=%230096a7&t=%23ffffff%0A%0A%0A%23ff8616%3B&=Esc%0A%0A%0AFnLock&_c=%236d6d6d%3B&=F1%0A%0A%0A%3Ci%20class%2F='fa%20fa-volume-off'%3E%3C%2F%2Fi%3E&=F2%0A%0A%0A%3Ci%20class%2F='fa%20fa-volume-down'%3E%3C%2F%2Fi%3E&=F3%0A%0A%0A%3Ci%20class%2F='fa%20fa-volume-up'%3E%3C%2F%2Fi%3E&=F4%0A%0A%0A%3Ci%20class%2F='fa%20fa-microphone-slash'%3E%3C%2F%2Fi%3E&=F5%0A%0A%0A%3Ci%20class%2F='fa%20fa-sun-o'%3E%3C%2F%2Fi%3E-&_x:3%3B&=F6%0A%0A%0A%3Ci%20class%2F='fa%20fa-sun-o'%3E%3C%2F%2Fi%3E+&=F7%0A%0A%0A%3Ci%20class%2F='fa%20fa-caret-left'%3E%3C%2F%2Fi%3E%3Ci%20class%2F='fa%20fa-caret-left'%3E%3C%2F%2Fi%3E&=F8%0A%0A%0A%3Ci%20class%2F='fa%20fa-play'%3E%3C%2F%2Fi%3E%3Ci%20class%2F='fa%20fa-pause'%3E%3C%2F%2Fi%3E&=F9%0A%0A%0A%3Ci%20class%2F='fa%20fa-caret-right'%3E%3C%2F%2Fi%3E%3Ci%20class%2F='fa%20fa-caret-right'%3E%3C%2F%2Fi%3E&_t=%23ffffff%3B&=F10&=F11&=F12&=Delete%3B&@_c=%23262626%3B&=%60%0A~&=1%0A!&=2%0A%2F@&=3%0A%23&=4%0A$&=5%0A%25&_x:3%3B&=6%0A%5E&_t=%23ffffff%0A%0A%0A%23ff8616%3B&=7%0A%2F&%0A%0A7&=8%0A*%0A%0A8&=9%0A%28%0A%0A9&=0%0A%29%0A%0A+&_t=%23ffffff%3B&=-%0A%2F_&=%2F=%0A+&_c=%236d6d6d%3B&=BckSp%3B&@=Tab&_c=%23262626%3B&=Q&=W&=E&=R&=T&_x:3%3B&=Y&_t=%23ffffff%0A%0A%0A%23ff8616%3B&=U%0A%0A%0A4&=I%0A%0A%0A5&=O%0A%0A%0A6&=P%0A%0A%0A%C3%97&_t=%23ffffff%3B&=%7B%0A%5B&=%7D%0A%5D&=%7C%0A%5C%3B&@_c=%236d6d6d&t=%23ffffff%0A%0A%0A%23ff8616%3B&=Comp%0A%0A%0ACapsL&_c=%23262626&t=%23ffffff%3B&=A&=S&=D&_n:true%3B&=F&=G&_x:3%3B&=H&_t=%23ffffff%0A%0A%0A%23ff8616&n:true%3B&=J%0A%0A%0A1&=K%0A%0A%0A2&=L%0A%0A%0A3&=%2F:%0A%2F%3B%0A%0A-&_t=%23ffffff%3B&=%22%0A'&_c=%230096a7&w:2%3B&=Enter%3B&@_c=%236d6d6d%3B&=Shift&_c=%23262626%3B&=Z&=X&=C&=V&=B&_x:3%3B&=N&_t=%23ffffff%0A%0A%0A%23ff8616%3B&=M%0A%0A%0A0&=%3C%0A,%0A%0A,&=%3E%0A.%0A%0A.&=%3F%0A%2F%2F%0A%0A%2F%2F&_c=%236d6d6d&t=%23ffffff%3B&=PgUp&_c=%23c1c1c1&t=%23000000%3B&=%E2%86%91&_c=%236d6d6d&t=%23ffffff%3B&=PgDn%3B&@=Ctrl&=Super&=Alt&_t=%23ff8616%3B&=Fn&_c=%23262626&t=%23ffffff&a:7&w:2%3B&=&_x:2&c=%23c1c1c1&t=%23000000&a:4%3B&=mous1&=mous2&=mous3&_c=%236d6d6d&t=%23ffffff%0A%0A%0A%23ff8616%3B&=Menu%0A%0A%0AInsert&=Home%0A%0A%0APrtSc&_t=%23ffffff%3B&=End&_c=%23c1c1c1&t=%23000000%3B&=%E2%86%90&_n:true%3B&=%E2%86%93&=%E2%86%92)

## Other great guides


## Switch plate generation
### Testing fit

### 3D printing
#### 3D printed keycaps


### Wiring test 3x3
The best way to eliminate unknowns and avoid wasting work, is by wiring up a small part, and testing this

### Firmware setup


### No unknowns, home run, final stretch, grind

### Extra firmware features
Inspire, show opportunities
grep QMK repo

### Show off

### Get ideas for your next version