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).