new stuff
This commit is contained in:
parent
ac7386074e
commit
462d2bfb6c
8 changed files with 215 additions and 130 deletions
|
|
@ -13,4 +13,3 @@ indent_size = 2
|
||||||
|
|
||||||
[Makefile]
|
[Makefile]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|
||||||
|
|
|
||||||
15
Makefile
15
Makefile
|
|
@ -4,17 +4,16 @@
|
||||||
|
|
||||||
main: ## generate main case
|
main: ## generate main case
|
||||||
# TODO: split into printable pieces
|
# TODO: split into printable pieces
|
||||||
openscad --export-format binstl -o main.stl main.scad
|
#openscad --export-format binstl -o main.stl main.scad
|
||||||
openscad -o main.3mf main.scad
|
openscad -o main.3mf main.scad
|
||||||
|
|
||||||
keys_en-us-intl: ## generate key caps with english us interational layout
|
keyset_en-us-intl: ## generate key caps with english us interational layout
|
||||||
openscad --export-format binstl -o keys_en-us-intl.stl keys_en-us-intl.scad
|
#openscad --export-format binstl -o keyset_en-us-intl.stl keyset_en-us-intl.scad
|
||||||
openscad -o keys_en-us-intl.3mf keys_en-us-intl.scad
|
openscad -o keyset_en-us-intl.3mf keyset_en-us-intl.scad
|
||||||
|
|
||||||
keys_de: ## generate key caps with german layout
|
keyset_de: ## generate key caps with german layout
|
||||||
openscad --export-format binstl -o keys_de.stl keys_de.scad
|
#openscad --export-format binstl -o keyset_de.stl keyset_de.scad
|
||||||
openscad -o keys_de.3mf keys_de.scad
|
openscad -o keyset_de.3mf keyset_de.scad
|
||||||
|
|
||||||
help: ## display this help
|
help: ## display this help
|
||||||
@grep -Fh "##" $(MAKEFILE_LIST) | grep -Fv fgrep | sed -e 's/\\$$//' | sed -e 's/##//'
|
@grep -Fh "##" $(MAKEFILE_LIST) | grep -Fv fgrep | sed -e 's/\\$$//' | sed -e 's/##//'
|
||||||
|
|
||||||
|
|
|
||||||
102
keyset_de.scad
102
keyset_de.scad
|
|
@ -3,33 +3,33 @@
|
||||||
use <lib/mat.scad>;
|
use <lib/mat.scad>;
|
||||||
use <lib/key.scad>;
|
use <lib/key.scad>;
|
||||||
|
|
||||||
mat();
|
mat(rows=13, columns=5);
|
||||||
|
|
||||||
key(x=0, y=0, label="Esc");
|
key(x=0, y=0, label="Strg", size=2.5);
|
||||||
key(x=1, y=0, label="1 !");
|
key(x=1, y=0, label="Fn");
|
||||||
key(x=2, y=0, label="2 \"");
|
key(x=2, y=0, label="⬆", size=5); // Shift
|
||||||
key(x=3, y=0, label="3 §");
|
key(x=3, y=0, label="Alt", size=3);
|
||||||
key(x=4, y=0, label="4 $");
|
key(x=4, y=0, w=3, label="—————"); // Space
|
||||||
key(x=5, y=0, label="5 %");
|
key(x=7, y=0, label="ß?");
|
||||||
key(x=6, y=0, label="6 &");
|
key(x=8, y=0, label="´`");
|
||||||
key(x=7, y=0, label="7 /");
|
key(x=9, y=0, label="◀");
|
||||||
key(x=8, y=0, label="8 (");
|
key(x=10, y=0, label="▼");
|
||||||
key(x=9, y=0, label="9 )");
|
key(x=11, y=0, label="▶");
|
||||||
key(x=10, y=0, label="0 =");
|
key(x=12, y=0, label="Strg", size=2.5);
|
||||||
key(x=11, y=0, w=2, label="Bksp");
|
|
||||||
|
|
||||||
key(x=0, y=1, label="Q");
|
key(x=0, y=1, label="Y");
|
||||||
key(x=1, y=1, label="W");
|
key(x=1, y=1, label="X");
|
||||||
key(x=2, y=1, label="E");
|
key(x=2, y=1, label="C");
|
||||||
key(x=3, y=1, label="R");
|
key(x=3, y=1, label="V");
|
||||||
key(x=4, y=1, label="T");
|
key(x=4, y=1, label="B");
|
||||||
key(x=5, y=1, label="Z");
|
key(x=5, y=1, label="N");
|
||||||
key(x=6, y=1, label="U");
|
key(x=6, y=1, label="M");
|
||||||
key(x=7, y=1, label="I");
|
key(x=7, y=1, label=",;");
|
||||||
key(x=8, y=1, label="O");
|
key(x=8, y=1, label=".:");
|
||||||
key(x=9, y=1, label="P");
|
key(x=9, y=1, label="-_");
|
||||||
key(x=10, y=1, label="Ü");
|
key(x=10, y=1, label="▲");
|
||||||
key(x=11, y=1, label="+ *");
|
key(x=11, y=1, label="< >", spacing=0.6);
|
||||||
|
key(x=12, y=1, label="⬆", size=5); // Shift
|
||||||
|
|
||||||
key(x=0, y=2, label="A");
|
key(x=0, y=2, label="A");
|
||||||
key(x=1, y=2, label="S");
|
key(x=1, y=2, label="S");
|
||||||
|
|
@ -42,31 +42,31 @@ key(x=7, y=2, label="K");
|
||||||
key(x=8, y=2, label="L");
|
key(x=8, y=2, label="L");
|
||||||
key(x=9, y=2, label="Ö");
|
key(x=9, y=2, label="Ö");
|
||||||
key(x=10, y=2, label="Ä");
|
key(x=10, y=2, label="Ä");
|
||||||
key(x=11, y=2, h=2, label="Ret");
|
key(x=11, y=2, label="#'");
|
||||||
|
key(x=12, y=2, h=2, label="↵", size=5); // Return
|
||||||
|
|
||||||
key(x=0, y=3, label="Y");
|
key(x=0, y=3, label="Q");
|
||||||
key(x=1, y=3, label="X");
|
key(x=1, y=3, label="W");
|
||||||
key(x=2, y=3, label="C");
|
key(x=2, y=3, label="E");
|
||||||
key(x=3, y=3, label="V");
|
key(x=3, y=3, label="R");
|
||||||
key(x=4, y=3, label="B");
|
key(x=4, y=3, label="T");
|
||||||
key(x=5, y=3, label="N");
|
key(x=5, y=3, label="Z");
|
||||||
key(x=6, y=3, label="M");
|
key(x=6, y=3, label="U");
|
||||||
key(x=7, y=3, label=", ;");
|
key(x=7, y=3, label="I");
|
||||||
key(x=8, y=3, label=". :");
|
key(x=8, y=3, label="O");
|
||||||
key(x=9, y=3, label="- _");
|
key(x=9, y=3, label="P");
|
||||||
key(x=10, y=3, label="Up");
|
key(x=10, y=3, label="Ü");
|
||||||
key(x=11, y=3, label="< >");
|
key(x=11, y=3, label="+*");
|
||||||
key(x=12, y=3, label="Shift");
|
|
||||||
|
|
||||||
key(x=0, y=4, label="Ctrl");
|
|
||||||
key(x=1, y=4, label="Fn");
|
|
||||||
key(x=2, y=4, label="Shift");
|
|
||||||
key(x=3, y=4, label="Alt");
|
|
||||||
key(x=4, y=4, w=3, label="---"); // Space
|
|
||||||
key(x=7, y=4, label="ß ?");
|
|
||||||
key(x=8, y=4, label="´ `");
|
|
||||||
key(x=9, y=4, label="Left");
|
|
||||||
key(x=10, y=4, label="Down");
|
|
||||||
key(x=11, y=4, label="Right");
|
|
||||||
key(x=12, y=4, label="Ctrl");
|
|
||||||
|
|
||||||
|
key(x=0, y=4, label="Esc", size=3);
|
||||||
|
key(x=1, y=4, label="1!");
|
||||||
|
key(x=2, y=4, label="2\"");
|
||||||
|
key(x=3, y=4, label="3§");
|
||||||
|
key(x=4, y=4, label="4$");
|
||||||
|
key(x=5, y=4, label="5%");
|
||||||
|
key(x=6, y=4, label="6&");
|
||||||
|
key(x=7, y=4, label="7/");
|
||||||
|
key(x=8, y=4, label="8(");
|
||||||
|
key(x=9, y=4, label="9)");
|
||||||
|
key(x=10, y=4, label="0=");
|
||||||
|
key(x=11, y=4, w=2, label="⌫", size=5); // backspace
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,38 @@
|
||||||
// en-us-intl layout
|
// en-us-intl layout
|
||||||
|
|
||||||
|
$fn = 64;
|
||||||
|
|
||||||
use <lib/mat.scad>;
|
use <lib/mat.scad>;
|
||||||
use <lib/key.scad>;
|
use <lib/key.scad>;
|
||||||
|
|
||||||
mat();
|
//difference() {
|
||||||
|
// union() {
|
||||||
|
mat(rows=13, columns=5);
|
||||||
|
|
||||||
key(x=0, y=0, label="Esc");
|
key(x=0, y=0, label="Ctrl", size=2.5);
|
||||||
key(x=1, y=0, label="1 !");
|
key(x=1, y=0, label="Fn");
|
||||||
key(x=2, y=0, label="2 @");
|
key(x=2, y=0, label="⬆", size=5); // Shift
|
||||||
key(x=3, y=0, label="3 #");
|
key(x=3, y=0, label="Alt", size=3);
|
||||||
key(x=4, y=0, label="4 $");
|
key(x=4, y=0, w=3, label="—————"); // Space
|
||||||
key(x=5, y=0, label="5 %");
|
key(x=7, y=0, label="-_");
|
||||||
key(x=6, y=0, label="6 ^");
|
key(x=8, y=0, label="= +", spacing=0.6);
|
||||||
key(x=7, y=0, label="7 &");
|
key(x=9, y=0, label="◀");
|
||||||
key(x=8, y=0, label="8 *");
|
key(x=10, y=0, label="▼");
|
||||||
key(x=9, y=0, label="9 (");
|
key(x=11, y=0, label="▶");
|
||||||
key(x=10, y=0, label="0 )");
|
key(x=12, y=0, label="Ctrl", size=2.5);
|
||||||
key(x=11, y=0, w=2, label="Bksp");
|
|
||||||
|
|
||||||
key(x=0, y=1, label="Q");
|
key(x=0, y=1, label="Z");
|
||||||
key(x=1, y=1, label="W");
|
key(x=1, y=1, label="X");
|
||||||
key(x=2, y=1, label="E");
|
key(x=2, y=1, label="C");
|
||||||
key(x=3, y=1, label="R");
|
key(x=3, y=1, label="V");
|
||||||
key(x=4, y=1, label="T");
|
key(x=4, y=1, label="B");
|
||||||
key(x=5, y=1, label="Y");
|
key(x=5, y=1, label="N");
|
||||||
key(x=6, y=1, label="U");
|
key(x=6, y=1, label="M");
|
||||||
key(x=7, y=1, label="I");
|
key(x=7, y=1, label=",<");
|
||||||
key(x=8, y=1, label="O");
|
key(x=8, y=1, label=".>");
|
||||||
key(x=9, y=1, label="P");
|
key(x=9, y=1, label="/?");
|
||||||
key(x=10, y=1, label="[ {");
|
key(x=10, y=1, label="▲");
|
||||||
key(x=11, y=1, label="] }");
|
key(x=11, y=1, w=2, label="⬆", size=5); // Shift
|
||||||
key(x=12, y=1, label="\\ |");
|
|
||||||
|
|
||||||
key(x=0, y=2, label="A");
|
key(x=0, y=2, label="A");
|
||||||
key(x=1, y=2, label="S");
|
key(x=1, y=2, label="S");
|
||||||
|
|
@ -41,32 +43,68 @@ key(x=5, y=2, label="H");
|
||||||
key(x=6, y=2, label="J");
|
key(x=6, y=2, label="J");
|
||||||
key(x=7, y=2, label="K");
|
key(x=7, y=2, label="K");
|
||||||
key(x=8, y=2, label="L");
|
key(x=8, y=2, label="L");
|
||||||
key(x=9, y=2, label="; :");
|
key(x=9, y=2, label=";:");
|
||||||
key(x=10, y=2, label="' \"");
|
key(x=10, y=2, label="'\"");
|
||||||
key(x=11, y=2, w=2, label="Ret");
|
key(x=11, y=2, w=2, label="↵", size=5); // Return
|
||||||
|
|
||||||
key(x=0, y=3, label="Z");
|
key(x=0, y=3, label="Q");
|
||||||
key(x=1, y=3, label="X");
|
key(x=1, y=3, label="W");
|
||||||
key(x=2, y=3, label="C");
|
key(x=2, y=3, label="E");
|
||||||
key(x=3, y=3, label="V");
|
key(x=3, y=3, label="R");
|
||||||
key(x=4, y=3, label="B");
|
key(x=4, y=3, label="T");
|
||||||
key(x=5, y=3, label="N");
|
key(x=5, y=3, label="Y");
|
||||||
key(x=6, y=3, label="M");
|
key(x=6, y=3, label="U");
|
||||||
key(x=7, y=3, label=", <");
|
key(x=7, y=3, label="I");
|
||||||
key(x=8, y=3, label=". >");
|
key(x=8, y=3, label="O");
|
||||||
key(x=9, y=3, label="/ ?");
|
key(x=9, y=3, label="P");
|
||||||
key(x=10, y=3, label="Up");
|
key(x=10, y=3, label="[{");
|
||||||
key(x=11, y=3, w=2, label="Shift");
|
key(x=11, y=3, label="]}");
|
||||||
|
key(x=12, y=3, label="\\|");
|
||||||
key(x=0, y=4, label="Ctrl");
|
|
||||||
key(x=1, y=4, label="Fn");
|
|
||||||
key(x=2, y=4, label="Shift");
|
|
||||||
key(x=3, y=4, label="Alt");
|
|
||||||
key(x=4, y=4, w=3, label="---"); // Space
|
|
||||||
key(x=7, y=4, label="- _");
|
|
||||||
key(x=8, y=4, label="= +");
|
|
||||||
key(x=9, y=4, label="Left");
|
|
||||||
key(x=10, y=4, label="Down");
|
|
||||||
key(x=11, y=4, label="Right");
|
|
||||||
key(x=12, y=4, label="Ctrl");
|
|
||||||
|
|
||||||
|
key(x=0, y=4, label="Esc", size=3);
|
||||||
|
key(x=1, y=4, label="1!");
|
||||||
|
key(x=2, y=4, label="2@");
|
||||||
|
key(x=3, y=4, label="3#");
|
||||||
|
key(x=4, y=4, label="4$");
|
||||||
|
key(x=5, y=4, label="5%");
|
||||||
|
key(x=6, y=4, label="6^");
|
||||||
|
key(x=7, y=4, label="7&");
|
||||||
|
key(x=8, y=4, label="8*");
|
||||||
|
key(x=9, y=4, label="9(");
|
||||||
|
key(x=10, y=4, label="0)");
|
||||||
|
key(x=11, y=4, w=2, label="⌫", size=5); // backspace
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// include <lib/key_specs.scad>;
|
||||||
|
//
|
||||||
|
// for(x = [0 : 1 : 12]) {
|
||||||
|
// for(y = [0 : 1 : 4]) {
|
||||||
|
// translate([margin + x*key_width+key_width/2 + x*padding, margin + y*key_height+key_height/2 + y*padding, 0]) cylinder(h=1.8, r=1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// // space bar
|
||||||
|
// translate([margin + key_width/2 + 4*(key_width+padding), margin + key_height/2, 0]) {
|
||||||
|
// hull() {
|
||||||
|
// cylinder(h=1.8, r=1);
|
||||||
|
// translate([2*(key_width+padding),0,0]) cylinder(h=1.8, r=1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// translate([margin + key_width/2 + 11*(key_width+padding), margin + key_height/2 + 1*(key_height+padding), 0]) {
|
||||||
|
// hull() {
|
||||||
|
// cylinder(h=1.8, r=1);
|
||||||
|
// translate([key_width+padding,0,0]) cylinder(h=1.8, r=1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// translate([margin + key_width/2 + 11*(key_width+padding), margin + key_height/2 + 2*(key_height+padding), 0]) {
|
||||||
|
// hull() {
|
||||||
|
// cylinder(h=1.8, r=1);
|
||||||
|
// translate([key_width+padding,0,0]) cylinder(h=1.8, r=1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// translate([margin + key_width/2 + 11*(key_width+padding), margin + key_height/2 + 4*(key_height+padding), 0]) {
|
||||||
|
// hull() {
|
||||||
|
// cylinder(h=1.8, r=1);
|
||||||
|
// translate([key_width+padding,0,0]) cylinder(h=1.8, r=1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
33
lib/key.scad
33
lib/key.scad
|
|
@ -1,24 +1,27 @@
|
||||||
// Generate a key cap at a specific position in the matrix
|
// Generate a key cap at a specific position in the matrix
|
||||||
module key(x, y, w=1, h=1, label="") {
|
module key(x, y, w=1, h=1, label="", spacing=1, size=3.5) {
|
||||||
spacing_h = 1;
|
include <key_specs.scad>;
|
||||||
spacing_v = 1;
|
$fn = 64;
|
||||||
key_thickness = 1;
|
|
||||||
key_radius = 1;
|
|
||||||
key_width = 1;
|
|
||||||
key_height = 1;
|
|
||||||
mat_thickness = 1;
|
|
||||||
|
|
||||||
color("DarkSlateGray");
|
color("DarkSlateGray") translate([x*key_width + x*padding + margin, y*key_height + y*padding + margin, mat_thickness]) difference() {
|
||||||
translate([x*spacing_h, y*spacing_v, mat_thickness]) difference() {
|
|
||||||
union() {
|
union() {
|
||||||
hull() {
|
hull() {
|
||||||
translate([key_radius, key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
translate([key_radius, key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
||||||
translate([key_radius, key_height-key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
translate([key_radius, key_height*h + padding*(h-1) - key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
||||||
translate([key_width-key_radius, key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
translate([key_width*w + padding*(w-1) - key_radius, key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
||||||
translate([key_width-key_radius, key_height-key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
translate([key_width*w + padding*(w-1) - key_radius, key_height*h + padding*(h-1) - key_radius, 0]) cylinder(h=key_thickness, r=key_radius);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: subtract label from key cap
|
// indent instead of dome
|
||||||
|
translate([0,0,key_thickness]) hull() {
|
||||||
|
translate([1.1, 1.1, 0]) scale([1,1,0.3]) sphere(r=1);
|
||||||
|
translate([key_width*w + padding*(w-1) - 1.1, 1.1, 0]) scale([1,1,0.3]) sphere(r=1);
|
||||||
|
translate([1.1, key_height*h + padding*(h-1) - 1.1, 0]) scale([1,1,0.3]) sphere(r=1);
|
||||||
|
translate([key_width*w + padding*(w-1) - 1.1, key_height*h + padding*(h-1) - 1.1, 0]) scale([1,1,0.3]) sphere(r=1);
|
||||||
|
}
|
||||||
|
// depth of 0.3mm+
|
||||||
|
// Noto Sans Mono:style=Medium
|
||||||
|
// subtract label from key cap
|
||||||
|
translate([(key_width*w + padding*(w-1))/2 -(0.5/spacing-0.5), (key_height*h + padding*(h-1))/2, key_thickness-0.5]) linear_extrude(height=1) text(label, size=size, font="DejaVu Sans Mono:style=Bold", halign="center", valign="center", spacing=spacing, $fn=64);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
8
lib/key_specs.scad
Normal file
8
lib/key_specs.scad
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
// key specifications
|
||||||
|
margin = 1;
|
||||||
|
padding = 1;
|
||||||
|
key_thickness = 2; // + label
|
||||||
|
key_radius = 1;
|
||||||
|
key_width = 9;
|
||||||
|
key_height = 6;
|
||||||
|
mat_thickness = 0.5;
|
||||||
8
lib/mat.scad
Normal file
8
lib/mat.scad
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
// genrate key mat that sits under the key caps
|
||||||
|
|
||||||
|
module mat(rows=13, columns=5) {
|
||||||
|
include <key_specs.scad>;
|
||||||
|
$fn = 64;
|
||||||
|
|
||||||
|
color("DarkSlateGray") cube([rows*key_width + (rows-1)*padding + 2*margin, columns*key_height + (columns-1)*padding + 2*margin, mat_thickness]);
|
||||||
|
}
|
||||||
30
pins.scad
Normal file
30
pins.scad
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
include <lib/key_specs.scad>;
|
||||||
|
|
||||||
|
$fn = 64;
|
||||||
|
|
||||||
|
for(x = [0 : 1 : 12]) {
|
||||||
|
for(y = [0 : 1 : 4]) {
|
||||||
|
translate([margin + x*key_width+key_width/2 + x*padding, margin + y*key_height+key_height/2 + y*padding, 0]) cylinder(h=1.8, r=1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = [0:2]) {
|
||||||
|
translate([margin + key_width/2,45+i*5,0]) {
|
||||||
|
hull() {
|
||||||
|
cylinder(h=1.5, r=1);
|
||||||
|
translate([key_width+padding,0,0]) cylinder(h=1.5, r=1);
|
||||||
|
}
|
||||||
|
cylinder(h=1.8, r=1);
|
||||||
|
translate([key_width+padding,0,0]) cylinder(h=1.8, r=1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([margin + key_width/2,40,0]) {
|
||||||
|
hull() {
|
||||||
|
cylinder(h=1.5, r=1);
|
||||||
|
translate([2*(key_width+padding),0,0]) cylinder(h=1.5, r=1);
|
||||||
|
}
|
||||||
|
cylinder(h=1.8, r=1);
|
||||||
|
translate([key_width+padding,0,0]) cylinder(h=1.8, r=1);
|
||||||
|
translate([2*(key_width+padding),0,0]) cylinder(h=1.8, r=1);
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue