
Acacia-2
jpsecher/keyboards
Goals - Good ergonomics - Good for programming - No drivers - Configurable - Use standard components where possible

Goals - Good ergonomics - Good for programming - No drivers - Configurable - Use standard components where possible
Acacia is an open-source printed circuit board by jpsecher, from the jpsecher/keyboards repository on GitHub, published under the ISC licence. It is a 2-layer board of 274 × 158 mm with 127 parts on 86 nets, routed with 612 tracks and 98 vias.
It is built around the ATMEGA32U2-AU, USBLC6-2SC6 and USB4500-03-0-A. Its parts include 44 switches, 42 diodes, 8 capacitors, 8 resistors and 2 ICs. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Goals
On the ergonomics side, the initial design will be a pseudo-split staggered-column because it follows the natural physiology of the hands, and because I only need to make one or two for myself. I want to make a PCB for the keyboard, so it seems to convoluted to go all the way to curved surfaces (eg. wells). With a PCB, I can also support hot-swappable keys, which makes it possible to try out different spring weights for the individual fingers (like the Absolem). And no stabilisers should be needed because the keys should just be where your finger naturally land, and therefore there should be no need for large 2U keys. For the thumb keys, size 1.5U is probably sufficient.
Keys that need to be hold down while pressing other keys should only be operated by strong fingers. So all modifier keys and layer shifting should probably be in the thumbs area, where it will be most comfortable to hold down a keys (as opposed to tapping the key). But some modifier keys need to be hold down together, so these modifiers then need to be on opposite sides, using both thumbs at the same time.
Good ergonomics with no curvatures then means that the number of keys must be limited to avoid stretching the fingers too much. Which means that the keyboard needs to have several layers to accommodate all the ASCII characters used in programming, as well as the various European letters I use daily. I am toying with the idea of using the thumb keys exclusively for layer-shift and control keys.
The keyboard should use standard hot-swappable Cherry MX keys. And to ease experimentation, I will start out with DSA profile key caps.
Contexts:
And:
Also, I prefer that each group of keys follow the traditional QWERTY layout, simply because it makes switching between keyboards less stressful.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 42 | D | Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +26 |
| 10 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4, H5, H6, H7, H8, H9, H10 |
| 4 | 22p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C3, C4, C7 |
| 3 | 22 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2, R3, R5 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4, R6 |
| 2 | 120 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | FB1, FB2 |
| 2 | 1µ | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C5, C8 |
| 2 | 5k1 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R7, R8 |
| 1 | 16MHz | Crystal:Crystal_SMD_HC49-SD | Y1 |
| 1 | 1M | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 1µ | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C6 |
| 1 | 350mA | Resistor_SMD:R_1210_3225Metric_Pad1.30x2.65mm_HandSolder | F1 |
| 1 | 4µ7 | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1 |
| 1 | 5V | TestPoint:TestPoint_Pad_1.0x1.0mm | TP2 |
| 1 | A | mech-kbd:MX-Hotswap-1U | SW1 |
| 1 | ATmega32U2-A | Package_QFP:TQFP-32_7x7mm_P0.8mm | U2 |
| 1 | Alt | mech-kbd:MX-Hotswap-1.25U | SW19 |
| 1 | AltGr | mech-kbd:MX-Hotswap-1U | SW22 |
| 1 | B | mech-kbd:MX-Hotswap-1U | SW4 |
| 1 | Back | mech-kbd:MX-Hotswap-1U | SW16 |
| 1 | C | mech-kbd:MX-Hotswap-1U | SW10 |
| 1 | C2 | TestPoint:TestPoint_Pad_1.0x1.0mm | TP5 |
| 1 | C4 | TestPoint:TestPoint_Pad_1.0x1.0mm | TP6 |
| 1 | C5 | TestPoint:TestPoint_Pad_1.0x1.0mm | TP7 |
| 1 | Comm | mech-kbd:MX-Hotswap-1U | SW33 |
| 1 | Ctl | mech-kbd:MX-Hotswap-1U | SW25 |
| 1 | Ctl | mech-kbd:MX-Hotswap-1.5U | SW18 |
| 1 | D | mech-kbd:MX-Hotswap-1U | SW9 |
| 1 | D0 | TestPoint:TestPoint_Pad_1.0x1.0mm | TP3 |
| 1 | D1 | TestPoint:TestPoint_Pad_1.0x1.0mm | TP4 |
| 1 | Dot | mech-kbd:MX-Hotswap-1U | SW36 |
| 1 | E | mech-kbd:MX-Hotswap-1U | SW8 |
| 1 | Enter | mech-kbd:MX-Hotswap-1U | SW30 |
| 1 | F | mech-kbd:MX-Hotswap-1U | SW12 |
| 1 | Fwd | mech-kbd:MX-Hotswap-1U | SW21 |
| 1 | G | mech-kbd:MX-Hotswap-1U | SW15 |
| 1 | GND | TestPoint:TestPoint_Pad_1.0x1.0mm | TP1 |
| 1 | Gui | mech-kbd:MX-Hotswap-1U | SW17 |
| 1 | H | mech-kbd:MX-Hotswap-1U | SW41 |
| 1 | I | mech-kbd:MX-Hotswap-1U | SW31 |
| 1 | J | mech-kbd:MX-Hotswap-1U | SW27 |
| 1 | K | mech-kbd:MX-Hotswap-1U | SW32 |
| 1 | L | mech-kbd:MX-Hotswap-1U | SW35 |
| 1 | L1 | mech-kbd:MX-Hotswap-1.25U | SW24 |
| 1 | L2 | mech-kbd:MX-Hotswap-1.5U | SW23 |
| 1 | M | mech-kbd:MX-Hotswap-1U | SW28 |
| 1 | N | mech-kbd:MX-Hotswap-1U | SW29 |
| 1 | NCC0805F900KTRF | Inductor_SMD:L_CommonModeChoke_Coilcraft_0805USB | FL1 |
| 1 | O | mech-kbd:MX-Hotswap-1U | SW34 |
| 1 | P | mech-kbd:MX-Hotswap-1U | SW38 |
| 1 | Q | mech-kbd:MX-Hotswap-1U | SW48 |
| 1 | QMK | Button_Switch_SMD:SW_SPST_EVQQ2 | SW43 |
| 1 | R | mech-kbd:MX-Hotswap-1U | SW11 |
| 1 | RESET | Button_Switch_SMD:SW_SPST_EVQQ2 | SW49 |
| 1 | S | mech-kbd:MX-Hotswap-1U | SW6 |
| 1 | Semi | mech-kbd:MX-Hotswap-1U | SW39 |
| 1 | Sft | mech-kbd:MX-Hotswap-1U | SW20 |
| 1 | Slsh | mech-kbd:MX-Hotswap-1U | SW40 |
| 1 | T | mech-kbd:MX-Hotswap-1U | SW14 |
| 1 | Tab | mech-kbd:MX-Hotswap-1U | SW3 |
| 1 | U | mech-kbd:MX-Hotswap-1U | SW26 |
| 1 | USB4500-03-0-A | mech-kbd:USB4500030A | J1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U1 |
| 1 | V | mech-kbd:MX-Hotswap-1U | SW13 |
| 1 | W | mech-kbd:MX-Hotswap-1U | SW5 |
| 1 | X | mech-kbd:MX-Hotswap-1U | SW7 |
| 1 | Y | mech-kbd:MX-Hotswap-1U | SW42 |
| 1 | Z | mech-kbd:MX-Hotswap-1U | SW2 |

jpsecher/keyboards
Goals - Good ergonomics - Good for programming - No drivers - Configurable - Use standard components where possible

jpsecher/keyboards
Goals - Good ergonomics - Good for programming - No drivers - Configurable - Use standard components where possible

jpsecher/keyboards
Goals - Good ergonomics - Good for programming - No drivers - Configurable - Use standard components where possible

TinyTapeout/breakout-pcb
Tiny Tapeout breakout PCBs


FunDeckHermit/WasteIndicator
Scripts that modify Tasmota to interact with the Ximmio waste API

KiCad/kicad-source-mirror
This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.




It measures 274 × 158 mm and has 2 copper layers, 1.5 mm thick.
127 parts, built around the ATMEGA32U2-AU, USBLC6-2SC6 and USB4500-03-0-A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the jpsecher/keyboards repository on GitHub, at the commit this page was made from: the board is acacia/kicad/acacia.kicad_pcb and its schematic acacia/kicad/acacia-2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the ISC licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).