Skip to content

Commit e2a0af9

Browse files
committed
Cleanup readmes
1 parent 67ef78d commit e2a0af9

File tree

8 files changed

+244
-67
lines changed

8 files changed

+244
-67
lines changed

README.md

+56-40
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,58 @@
11
# 42 Keyboard
22

3-
42 is an ergonomic keyboard with the following features:
4-
5-
- 40% layout
6-
- handwired
7-
- orthogonal
8-
- Bluetooth enabled
9-
10-
It uses the Feather 32u4 controller, and its layout is defined using the QMK
11-
firmware. The case is made of four 3D printed pieces glued and screwed together.
12-
In this repo you can find all files necessary to build and configure one yourself.
13-
14-
### Front
15-
16-
![keyboard front](/42.jpg?v3)
17-
18-
### PCB
19-
20-
![keyboard PCB](/42-pcb.jpg)
21-
![keyboard PCB close up](/42-pcb-close-up.jpg)
22-
23-
## Useful resources
24-
25-
- [A modern handwiring guide](https://geekhack.org/index.php?topic=87689.0)
26-
Even if you don't end up putting into practice what's written in this guide,
27-
it will definitely be helpful for understanding how things are connected in
28-
a keyboard.
29-
- [How to build your very own keyboard firmware](https://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html)
30-
This guide is really all you need if you're going to make your own firmware.
31-
If you want some special functions that are not described there, you can check
32-
TMK docs and you'll probably find what you're looking for.
33-
- [Keyboard PCB Guide](https://github.com/ruiqimao/keyboard-pcb-guide)
34-
Here you can find most of what you need to know for designing a PCB. You might
35-
need to search for some things that are not covered there, like how to create a
36-
footprint for a component that is not present in any library. The basics are
37-
all covered though.
38-
- [/r/MechanicalKeyboards/](https://www.reddit.com/r/MechanicalKeyboards/)
39-
A lot of my Google searches ended up on threads from this subreddit, the
40-
community seems super helpful, if you're stuck somewhere, this is probably the
41-
best place to ask.
42-
- [Elite C Pinout](https://deskthority.net/wiki/Elite-C)
3+
A 40% mechanical keyboard.
4+
5+
## Project Structure
6+
7+
- [Build](./build/README.md) – Build log, bill of materials, tips on where to
8+
source parts, assembling tips, learning resources I used while designing this
9+
keyboard.
10+
11+
- [Case](./case/README.md) – Fusion 360 project and STL files for 3D printing
12+
the enclosure.
13+
14+
- [Firmware](./firmware/README.md) – QMK configuration. There is a Makefile to
15+
build and load the firmware.
16+
17+
- [PCB](./pcb/README.md) – Kicad project and Gerber files for manufacturing the
18+
circuit board.
19+
20+
## Why?
21+
22+
In January 2018 I wanted a keyboard with a specific set of features. The
23+
simplest options to get that keyboard were to wait for a group-buy or build my
24+
own. Waiting time and costs for both options seemed similar, so I went with the
25+
option where I would learn the most.
26+
27+
Needs and knowledge changed over time, so I made different iterations to add new
28+
features and account for the lessons learned from previous builds.
29+
30+
## Features
31+
32+
- 40% – Each key is at most one unit of distance from where the finger that
33+
should press it rests. In other words there's no awkward reaching for keys
34+
that are placed far from the home row.
35+
- Staggered columns - Because a comfortable keyboard should follow the shape of
36+
your hands.
37+
- Low profile - The PCB supports Choc (PG1350) switch mounts as well as Cherry MX/Alps.
38+
39+
## Feedback
40+
41+
If you have some feedback or questions, feel free to [create an issue](https://github.com/nglgzz/42/issues/new). Your input is more than welcome!
42+
43+
## Pics
44+
45+
Pictures for the current version will come soon. In the meantime, you can check
46+
the previous versions.
47+
48+
## Previous Versions
49+
50+
- [version 3](https://github.com/nglgzz/42/tree/rev-3)
51+
PCB, QMK, Bluetooth, micro USB
52+
<br/><img alt="v3 picture" src="https://github.com/nglgzz/42/blob/rev-3/42.jpg?raw=true" width="400">
53+
- [version 2](https://github.com/nglgzz/42/tree/rev-2)
54+
Handwired, QMK, Bluetooth, micro USB
55+
<br/><img alt="v2 picture" src="https://github.com/nglgzz/42/blob/rev-2/42.jpg?raw=true" width="400">
56+
- [version 1:](https://github.com/nglgzz/42/tree/rev-1)
57+
PCB, Split, TMK firmware, USB C
58+
<br/><img alt="v1 picture" src="https://raw.githubusercontent.com/nglgzz/42/rev-1/42.jpeg" width="400">

build/README.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# [42 Keyboard](../README.md) – Build
2+
3+
Everything that is related to assembling or designing the keyboard.
4+
5+
- [Materials](./materials.md) – Bill of materials and tips on buying parts.
6+
7+
- [Build log](./build-log.md) – Build log and assembling tips.
8+
9+
- [Resources](./resources.md) – Learning resources I used while designing
10+
and building this keyboard.

build/build-log.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# [42 Keyboard](../README.md)[Build](./README.md) – Log
2+
3+
Coming soon.

build/materials.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# [42 Keyboard](../README.md)[Build](README.md) – Materials
2+
3+
The table below lists all the components needed for assembling the keyboard,
4+
their cost at the time of writing, and a link to buy them.
5+
6+
Quantities [in brackets] mean the component is optional.
7+
8+
| Description | Quantity | Cost (EUR) | Link |
9+
| ------------------------------------ | -------------------: | ---------: | -------------------------------------------------------------------------------------------- |
10+
| Mill Max Controller sockets and pins | [1 socket / 24 pins] | 7.74 | [MK Ultra](https://mkultra.click/mill-max-micro-controller-sockets-and-pins/) |
11+
| Switches (Kailh Choc) | 42 | 21.50 | [MK Ultra](https://mkultra.click/choc-switches) |
12+
| Keycaps (Kailh Choc) | 42 | 12.90 | [MK Ultra](https://mkultra.click/mbk-choc-keycaps) |
13+
| 1N4148 diodes | 42 | 5 | [Candy Keys](https://candykeys.com/product/fairchild-semiconductor-diode-1n4148-pack-of-100) |
14+
| Elite C (rev4) | 1 | 19.90 | [Candy Keys](https://candykeys.com/product/elite-c-v4) |
15+
| PCB | 1 | 17.01 | [JLC PCB](https://jlcpcb.com) |
16+
| M3x12 Screws | 6 | - | |
17+
| M3x4 Heat set inserts | 6 | - | |
18+
| Enclosure | 1 | - | |
19+
| . | | | |
20+
| Total (MK Ultra) | | 42.14 | |
21+
| Total (Candy Keys) | | 24.90 | |
22+
| Total (JLC PCB) | | 17.01 | |
23+
| Total | | 84.05 | |
24+
25+
## Notes
26+
27+
- Prices don't include shipping and potential import taxes.
28+
- The minimum order on JLC PCB is 5 circuit boards, so the price above is for 5
29+
circuit boards.
30+
31+
### If you live in the EU
32+
33+
- JLC PCB offers [DHL Packet European](https://twitter.com/JLCPCB/status/1244461189200920576)
34+
as a shipping method. It takes between 4-8 business days and you will not be
35+
charged import taxes as they will ship to you from their European distributor.
36+
Depending on where in the EU you are located, the cost of PCBs and how much
37+
you're willing to wait, this might be your best option.
38+
- It's a good idea to check [this page](https://ec.europa.eu/taxation_customs/individuals/buying-goods-services-online-personal-use/buying-goods/buying-goods-online-coming-from-a-noneu-union-country_en)
39+
and your local customs agency website to get an idea of the fees you'll
40+
have to pay when ordering from outside the EU.
41+
- QMK suggests to buy the Proton C from mykeyboard.eu if you're in Europe, but
42+
I've never seen it in stock there. My suggestion is to buy it from
43+
[/r/mechmarket](https:/reddit/com/r/mechmarket), or order it from the US.
44+
45+
## Alternatives
46+
47+
- Switches, keycaps, and cables – plenty of resellers are listed in the
48+
[/r/MechanicalKeyboards Wiki](https://www.reddit.com/r/MechanicalKeyboards/wiki/recommendedsellers).
49+
50+
- PCBs – In my experience JLC PCB was always the cheapest option, but that might
51+
be different depending on where you are located. You can check
52+
[PCB Shopper](https://pcbshopper.com/) to compare PCB manufacturers in your
53+
location.
54+
55+
## Disclaimer
56+
57+
I'm in no way affiliated with any of the sellers/manufacturers mentioned here.

build/resources.md

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# [42 Keyboard](../README.md)[Build](./README.md) – Resources
2+
3+
Here is a list of the resources I found most useful while designing and building
4+
the keyboard.
5+
6+
## General
7+
8+
- [/r/MechanicalKeyboards Wiki](https://www.reddit.com/r/MechanicalKeyboards/wiki/customkeyboards)
9+
The most complete keyboard wiki I found so far. Most links in this list are there too.
10+
11+
## Firmware
12+
13+
- [QMK Docs](https://docs.qmk.fm/#/)
14+
Guides and documentation for configuring the QMK firmware for your keyboard.
15+
The content is easy to follow and they cover most use cases.
16+
17+
- [QMK Firmware](https://github.com/qmk/qmk_firmware/)
18+
If something wasn't in the docs, or it was not clear, reading code from other
19+
keyboards helped understanding it. Clone the repository locally and search the
20+
codebase for keywords if you want to see examples. Just keep in mind not all
21+
keyboards are up to date.
22+
23+
- [How to make a keyboard: The Matrix](http://blog.komar.be/how-to-make-a-keyboard-the-matrix/)
24+
Explains starting from basic electronics concepts, how a keyboard matrix
25+
works. It's a fascinating read even though in most cases you don't need to
26+
know this.
27+
28+
- [Testing and Debugging QMK](https://beta.docs.qmk.fm/tutorial/newbs_testing_debugging#debugging-with-hid_listen)
29+
Useful to know what's going on in the firmware if you're actually touching the
30+
firmware code.
31+
32+
## PCB
33+
34+
- [A modern handwiring guide](https://geekhack.org/index.php?topic=87689.0)
35+
It helps understanding how a keyboard is wired. Useful even if you end up
36+
designing a PCB.
37+
38+
- [Keyboard PCB Guide](https://github.com/ruiqimao/keyboard-pcb-guide)
39+
A step-by-step guide on designing a PCB using Kicad. You might need to search for
40+
some things that are not covered here (eg. how to create a footprint), but the
41+
basics are all covered.
42+
43+
- [daprice/keyswitches.pretty](https://github.com/daprice/keyswitches.pretty)
44+
Not a learning resource. Footprint library for a bunch of different switch sockets.
45+
46+
- [Why split keyboards don't use USB](https://www.reddit.com/r/MechanicalKeyboards/comments/a641ls/split_keyboard_trrs_shorting_and_protection/ebryvx5)
47+
In-depth explanation why TRRS has become the standard for split keyboards. I
48+
wish I have read this before going with USB-C on my first keyboard.
49+
50+
- [Elite C Pinout](https://deskthority.net/wiki/Elite-C)
51+
52+
## Case
53+
54+
- [Fusion 360 Tutorial for Absolute Beginners](https://www.youtube.com/watch?v=A5bc9c3S12g)
55+
I spent a long time trying to design the enclosure with awkward-to-use tools.
56+
Until I found and instantly fell in love with Fusion 360. Once you learn the
57+
basics, you'll see how incredibly intuitive yet powerful this software is.
58+
59+
## Help
60+
61+
- [/r/MechanicalKeyboards](https://www.reddit.com/r/MechanicalKeyboards/)
62+
Many of my Google searches ended up on threads from this subreddit. If you get
63+
stuck, this seems like a great place to ask.
64+
65+
- [QMK Discord Server](https://discord.gg/Uq7gcHh)
66+
I had no idea if what I wanted to achieve was supported in QMK and the QMK
67+
devs pointed me in the right direction here. They also have some channels for
68+
more entry level questions in case you get stuck while following their
69+
documentation.
70+
71+
## Disclaimer
72+
73+
I'm in no way affiliated with any of the resources mentioned here.

case/README.md

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
## 42 keyboard case
1+
# [42 Keyboard](../README.md) – Case
2+
3+
## Work In Progress
4+
5+
The STL files in this folder are outdated, I'll add the new (low and regular
6+
profile) STLs once I'm done designing them.
7+
8+
## 3D printing
29

310
The enclosure can be made in two ways depending on the machines you have
411
available.
@@ -8,12 +15,9 @@ You can print the top piece and the bottom in one piece.
815
Or, if they are too big to print in one piece (this was the case for me), you
916
can print them in two pieces (left and right), and glue them together.
1017

11-
In both cases top and bottom are meant to be pieced together using M3x8 screws.
12-
13-
### Switch plate
14-
15-
![switch-plate](/case/top.png)
18+
In both cases all parts are meant to be printed face down with no supports and
19+
top and bottom are meant to be pieced together using M3x8 screws.
1620

17-
### Bottom cover
21+
## Useful Resources
1822

19-
![bottom-cover](/case/bottom.png)
23+
[../build/resources.md](../build/resources.md#case)

firmware/README.md

+26-19
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,44 @@
1-
## 42 keyboard firware
1+
# [42 Keyboard](../README.md) – Firmware
22

3-
### Build
3+
The firmware for this keyboard is also located in the
4+
[QMK repository](https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/42).
5+
If you're building it from there (or using other QMK tools), the keyboard is
6+
called `handwired/42`.
7+
8+
## Build
49

510
To build and load the firmware into your board, cd into this directory and run:
611

712
```
8-
make all
13+
make init
14+
make build
915
```
1016

11-
The firmware is built for the atmega32u4 controller (I'm using Feather 32u4 from
12-
Adafruit), and avrdude is required to load the firmware.
17+
The firmware is built for the Elite-C controller. It should work with the Pro
18+
Micro too with no need for changes (I haven't tested though).
1319

14-
### Keymap
20+
## Keymap
1521

16-
The keymap can be adapted in `keymaps/default/keymap.c`, and a legend can be found on [KeyboardLayoutEditor](http://www.keyboard-layout-editor.com/#/gists/bdcb70e56b88022d86f30f0957648d67).
22+
The keymap can be adapted in `keymaps/default/keymap.c`, and a legend can be
23+
found on [KeyboardLayoutEditor](https://www.keyboard-layout-editor.com/#/gists/bdcb70e56b88022d86f30f0957648d67).
1724

18-
How to read the labels:
25+
How to read the labels (L = layer):
1926

2027
```
2128
/--------------\
22-
|L0 L1|
23-
| L1+Shift L2|
24-
|L0+Shift L3|
29+
L0 L1
30+
L1+Shift L2
31+
L0+Shift L3
2532
\--------------/
26-
Dual role
33+
\ dual role /
2734
```
2835

29-
- L0: default layer
30-
- L1: numbers, symbols, F keys
31-
- L2: navigation and media keys
32-
- L3: mouse controls
33-
- Dual role: use L0 when tapped quickly, use the value on the front label when kept pressed and used as a modifier
36+
- L0 default layer
37+
- L1 numbers, symbols, F keys
38+
- L2 navigation and media keys
39+
- L3 mouse controls
40+
- Dual role: use L0 when tapped quickly, use the value on the front label when kept pressed or used as a modifier
3441

35-
### Useful Resources
42+
## Useful Resources
3643

37-
- [How to build your very own keyboard firmware](https://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html)
44+
[../build/resources.md](../build/resources.md#firmware)

pcb/README.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# [42 Keyboard](../README.md) – PCB
2+
3+
Here you can find the Kicad project for the keyboard's circuit board, and the Gerber files needed to manufacture it.
4+
5+
## Useful Resources
6+
7+
[../build/resources.md](../build/resources.md#pcb)

0 commit comments

Comments
 (0)