Für die älteren keso-systeme mit Stiftreihen links und rechts (a 5 stifte) können schlüssel einfach nachgedruckt werden:
thickness = 2.3;
width = 7.4;
length = 25;
head = 15;
r1 = 1;
r2 = 0;
r3 = 3;
r4 = 1;
r5 = 0;
l1 = 2;
l2 = 1;
l3 = 3;
l4 = 1;
l5 = 1;
rconebase = 1/2;
rconemax = 3.7/2;
hconemax = 1.8;
del_dimple = 4;
width_offset = 2;
begin_up = 5;
begin_down = 7;
middle = width -2*width_offset;
$fn=100;
// beard
difference(){
cube([length,width,thickness]);
translate([begin_up,width_offset,-hconemax*(3-r1)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_up+del_dimple,width_offset,-hconemax*(3-r2)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_up+2*del_dimple,width_offset,-hconemax*(3-r3)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_up+3*del_dimple,width_offset,-hconemax*(3-r4)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_up+4*del_dimple,width_offset,-hconemax*(3-r5)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_down,width_offset+middle,-hconemax*(3-l1)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_down+del_dimple,width_offset+middle,-hconemax*(3-l2)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_down+2*del_dimple,width_offset+middle,-hconemax*(3-l3)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_down+3*del_dimple,width_offset+middle,-hconemax*(3-l4)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_down+4*del_dimple,width_offset+middle,-hconemax*(3-l5)/3])cylinder(h=hconemax,r1=rconemax,r2=rconebase);
translate([begin_down,width_offset,thickness-hconemax+hconemax*(3-l1)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_down+del_dimple,width_offset,thickness-hconemax+hconemax*(3-l2)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_down+2*del_dimple,width_offset,thickness-hconemax+hconemax*(3-l3)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_down+3*del_dimple,width_offset,thickness-hconemax+hconemax*(3-l4)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_down+4*del_dimple,width_offset,thickness-hconemax+hconemax*(3-l5)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_up,width_offset+middle,thickness-hconemax+hconemax*(3-r1)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_up+del_dimple,width_offset+middle,thickness-hconemax+hconemax*(3-r2)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_up+2*del_dimple,width_offset+middle,thickness-hconemax+hconemax*(3-r3)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_up+3*del_dimple,width_offset+middle,thickness-hconemax+hconemax*(3-r4)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
translate([begin_up+4*del_dimple,width_offset+middle,thickness-hconemax+hconemax*(3-r5)/3])cylinder(h=hconemax,r2=rconemax,r1=rconebase);
}
translate([-head,-(head-width)/2,0])cube([head,head,thickness]);
translate([length,width,thickness/2])difference(){
rotate([90,0,0])cylinder(r = thickness/2,h=width);
translate([-1.5,-width/2,0])cube([3,width,thickness],center=true);
}
Es gibt hier tatsächlich nur vier verschiedene mögliche tiefen (hier notiert mit 0-3).
