diff --git a/keyset_en-us-intl.scad b/keyset_en-us-intl.scad index c6f61b5..7bab98f 100644 --- a/keyset_en-us-intl.scad +++ b/keyset_en-us-intl.scad @@ -5,8 +5,6 @@ $fn = 64; use ; use ; -//difference() { -// union() { mat(rows=13, columns=5); key(x=0, y=0, label="Ctrl", size=2.5); @@ -37,10 +35,10 @@ key(x=11, y=1, w=2, label="⬆", size=5); // Shift key(x=0, y=2, label="A"); key(x=1, y=2, label="S"); key(x=2, y=2, label="D"); -key(x=3, y=2, label="F"); +key(x=3, y=2, label="F", marker=true); key(x=4, y=2, label="G"); key(x=5, y=2, label="H"); -key(x=6, y=2, label="J"); +key(x=6, y=2, label="J", marker=true); key(x=7, y=2, label="K"); key(x=8, y=2, label="L"); key(x=9, y=2, label=";:"); @@ -73,38 +71,4 @@ 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 ; -// -// 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); -// } -// } -//} \ No newline at end of file + diff --git a/lib/key.scad b/lib/key.scad index 86bd00d..4780ded 100644 --- a/lib/key.scad +++ b/lib/key.scad @@ -1,8 +1,9 @@ // Generate a key cap at a specific position in the matrix -module key(x, y, w=1, h=1, label="", spacing=1, size=3.5) { +module key(x, y, w=1, h=1, label="", spacing=1, size=3.5, marker=false) { include ; $fn = 64; - + wall_thickness = 1; + color("DarkSlateGray") translate([x*key_width + x*padding + margin, y*key_height + y*padding + margin, mat_thickness]) difference() { union() { hull() { @@ -12,16 +13,36 @@ module key(x, y, w=1, h=1, label="", spacing=1, size=3.5) { 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); } } - // 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); + + // 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); + + // stem cutout + hull() { + translate([key_radius+wall_thickness, key_radius+wall_thickness, 0]) cylinder(h=key_thickness-1, r=key_radius); + translate([key_radius+wall_thickness, key_height*h + padding*(h-1) - key_radius - wall_thickness, 0]) cylinder(h=key_thickness-1, r=key_radius); + translate([key_width*w + padding*(w-1) - key_radius-wall_thickness, key_radius + wall_thickness, 0]) cylinder(h=key_thickness-1, r=key_radius); + translate([key_width*w + padding*(w-1) - key_radius - wall_thickness, key_height*h + padding*(h-1) - key_radius - wall_thickness, 0]) cylinder(h=key_thickness-1, r=key_radius); + } } - // 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); + + // stem + hull() { + translate([x*key_width + x*padding + margin + key_width/2-key_radius, y*key_height + y*padding + margin + key_height/2, mat_thickness]) cylinder(h=key_thickness-1, r=key_radius); + translate([x*key_width + x*padding + margin + key_width/2+key_radius, y*key_height + y*padding + margin + key_height/2, mat_thickness]) cylinder(h=key_thickness-1, r=key_radius); } + + // marker for f anf j key + if (marker) translate([x*key_width + x*padding + margin + key_width-1.5*key_radius, y*key_height + y*padding + margin + key_height/2, mat_thickness+key_thickness-1]) cylinder(h=key_thickness-1, d=key_radius); } + diff --git a/lib/mat.scad b/lib/mat.scad index 8e9a1aa..841258c 100644 --- a/lib/mat.scad +++ b/lib/mat.scad @@ -3,6 +3,8 @@ module mat(rows=13, columns=5) { include ; $fn = 64; - + wall_thickness = 1; + color("DarkSlateGray") cube([rows*key_width + (rows-1)*padding + 2*margin, columns*key_height + (columns-1)*padding + 2*margin, mat_thickness]); } + diff --git a/pins.scad b/pins.scad deleted file mode 100644 index 94c8f71..0000000 --- a/pins.scad +++ /dev/null @@ -1,30 +0,0 @@ -include ; - -$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); -}