A 61-key (5-octave) keyboard. Powered by Vial firmware.
Layer 0:
π keyboard-layout.png (v0.3.0)
MEMO: When pressed individually and released, it becomes the lower right keys (θ±ζ° and γγͺ).
Layer 1:
Layer 2:
MEMO: I couldn't figure out how to achieve 'fn' with adafruit_hid, so I'm using Karabiner to remap right_option to 'fn' and using it that way.
RAW data for Keyboard Layout Editor v0.15:
π keyboard-layout.rawdata.json
[{"a":4,"f":3},"Esc","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=","|\n\\","~\n`"],
[{"w":1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{"w":1.5},"BS"],
[{"w":1.75},"MO(1)\n\n\nθ±ζ°","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{"w":2.25},"Return"],
[{"w":2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{"w":1.75},"Shift","MO(2)"],
[{"w":1.25},"Ctrl",{"w":1.25},"Opt",{"w":1.25},"Cmd\n\n\nθ±ζ°",{"a":7,"w":6.25},"6.25u",{"a":4},"Cmd\n\n\nγγͺ","Opt"]
π keyboard-layout-1.rawdata.json
[{"a":4,"f":3},"Esc",{"c":"#aaccaa"},"F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",{"c":"#cccccc"},"|\n\\","~\n`"],
[{"w":1.5},"Tab",{"c":"#aaccaa"},"Home","Up","End","PgUp",{"c":"#cccccc"},"T","Y","BS",{"c":"#cccccc"},"I","O","P","{\n[","}\n]",{"w":1.5},"BS"],
[{"c":"#aaccaa","w":1.75},"","Left","Down","Right","PgDn",{"c":"#cccccc"},"G",{"c":"#aaccaa"},"Enter","kana",{"c":"#cccccc"},"K","L",":\n;","\"\n'",{"w":2.25},"Return"],
[{"w":2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{"w":1.75},"Shift",{"c":"#aaccaa"},"",{"c":"#cccccc"}],
[{"w":1.25},"Ctrl",{"w":1.25},"Opt",{"w":1.25},"Cmd\n\n\nθ±ζ°",{"a":7,"w":6.25},"6.25u",{"a":4},"Cmd\n\n\nγγͺ","Opt"]
π keyboard-layout-2.rawdata.json
[{"a":4,"f":3},"Esc",{"c":"#aaccaa"},"F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",{"c":"#cccccc"},"|\n\\","~\n`"],
[{"w":1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P",{"c":"#aaccaa"},"Up",{"c":"#cccccc"},"}\n]",{"w":1.5},"BS"],
[{"c":"#aaccaa","w":1.75},"CapsLock",{"c":"#cccccc"},"A","S","D","F","G","H","J","K","L",{"c":"#aaccaa"},"left","right",{"c":"#cccccc","w":2.25},"Return"],
[{"w":2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.",{"c":"#aaccaa"},"Down",{"c":"#cccccc","w":1.75},"Shift",{"c":"#aaccaa"},"",{"c":"#cccccc"}],
[{"w":1.25},"Ctrl",{"w":1.25},"Opt",{"w":1.25},"Cmd\n\n\nθ±ζ°",{"a":7,"w":6.25},"6.25u",{"a":4},"Cmd\n\n\nγγͺ","Opt"]]
Material | QTY | Note |
---|---|---|
Five Octave MCU Board | 1 | |
Five Octave Keys Board | 1 | |
Five Octave Enclosure | 1 | |
0151660169 | 1 | Molex 0.50mm pitch FFC, Type A, 127.00mm, 16 circuits |
Material | Symbol | QTY | Note | JLCPCB Part # |
---|---|---|---|---|
30pF 0402 | C1, C2 | 2 | C1570 | |
1uF 0402 | C3, C4 | 2 | C52923 | |
100nF 0402 | C5-C14 | 10 | C307331 | |
10uF 0402 | C15, C16 | 2 | C15525 | |
HRO_TYPE-C-31-M-12 | J1 | 1 | USB Type-C Connector, Korean Hroparts Elec | C165948 |
AFC01-S16FCC-00 | J2 | 1 | FFC Connector 0.50mm pitch 16 circuits, JUSHUO | C262272 |
WS2812C-2020-V1 | LED1 | 1 | NeoPixel RGB LED 2x2mm, Worldsemi | C2976072 |
10KΞ© 0402 | R1, R3 | 2 | C25744 | |
1KΞ© 0402 | R2, R4 | 2 | C11702 | |
27Ξ© 0402 | R5, R6 | 2 | C352446 | |
5.1KΞ© 0402 | R7, R8 | 2 | C25905 | |
SKRPANE010 | SW1, SW2 | 2 | Tactile Switch, ALPS ALPINE | C470426 |
RP2040 | U1 | 1 | MCU, Raspberry Pi | C2040 |
W25Q64JVXGIQ | U2 | 1 | 64M-bit Serial Flash, Winbond Electronics | C2940195 |
AP2112K-3.3TRG1 | U3 | 1 | 3.3V Linear Voltage Regulators | C51118 |
X322512MSB4SI | Y1 | 1 | 12MHz 20pF Crystal Resonator, SMD-3225, Yangxing Tech | C9002 |
Material | Symbol | QTY | Note | JLCPCB Part # |
---|---|---|---|---|
1N4148WS | D1-D61 | 61 | C2128 | |
CPG151101S11-16 | SW1-SW61 | 61 | How Swap Socket, Kailh | C5156480 |
AFC01-S16FCC-00 | J1 | 1 | FFC Connector 0.50mm pitch 16 circuits, JUSHUO | C262272 |
Material | Symbol | QTY | Note |
---|---|---|---|
Five Octave Enclosure - Case | 1 | (or Enclosure v2) | |
Five Octave Enclosure - Top Frame | 1 | (or Enclosure v2) | |
Screw M2 x 8mm | 4 | Secure Case and Top Frame | |
Screw M2 x 5mm or 4mm | 4 | Secure Case and Five Octave MCU | |
Poron 1.5t 3mm x 120mm | 2 | For gasket mounting | |
Poron 1.5t 3mm x 60mm | 6 | For gasket mounting | |
Poron 1.5t 3mm x 40mm | 2 | For gasket mounting |
π Five_Octave_MCU.kicad_sch (v1.0.0)
π Five_Octave_MCU.kicad_pcb (v1.0.0)
π Five_Octave_MCU.svg
π Five_Octave_Keys.kicad_sch (v1.0.0)
π Five_Octave_Keys.kicad_pcb (v1.0.0)
π Five_Octave_Keys.svg
C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | |
---|---|---|---|---|---|---|---|---|
R0 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | |
R1 | Tab | Q | W | E | R | T | ||
R2 | Caps | Z | X | A | S | D | F | G |
R3 | Shift | Ctrl | Opt | Cmd | Space | C | V | B |
R4 | 7 | 8 | 9 | 0 | - | = | \ | ` |
R5 | Y | U | I | O | P | [ | ] | BS |
R6 | H | J | K | L | ; | ' | Return | Fn |
R7 | N | M | , | . | / | Shift | Cmd | MO(1) |
π Five_Octave_Enclosure.FCStd (v1.0.1)
π Five_Octave_Enclosure_v2.FCStd (v2.1.2)
π Five_Octave_Plate.kicad_pcb (v1.0.0)
You can use Vial or CircuitPython.
- Built UF2
- Code
See vial-porting for more details.
Software for the Five Octave runs on CircuitPython. Its CircuitPython is the same as the one for Octave (https://github.com/takayoshiotake/octave-12-key-macropad).
- Built UF2
- Code
See circuitpython-app/README.md for application software.
Keycap: Drop + biip MT3 Extended 2048
MEMO: Alminum 6061 CNC + Bead blasting 120 mesh + Anodizing natural matte by JLCPCB (Five Octave Enclosure v1.0.0)
Keycap: Drop + biip MT3 Extended 2048
MEMO: Alminum 6061 CNC + Bead blasting 150 mesh + Hardcoat anodizing natural matte by JLCPCB (Five Octave Enclosure v2.1.1)
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.