Files
Fabula/enclosure/keys.scad
2026-01-28 22:02:22 +01:00

48 lines
1.6 KiB
OpenSCAD

// Contains the keycaps
distance_from_key_to_enclosure = 6;
enclosure_hole_depth = 6;
button_height_above_enclosure_surface = 4;
stopper_flange_height = 2;
symbol_height = 1;
module keycap() {
// Keycap
cylinder(h = enclosure_hole_depth + stopper_flange_height + button_height_above_enclosure_surface, d = 18, $fn = 128);
// Stopper flange
cylinder(h = stopper_flange_height, d = 24);
// Stem
stem_height = distance_from_key_to_enclosure - stopper_flange_height;
translate([0, 0, -stem_height / 2]){
difference() {
cube([6.4, 4.4, stem_height], true);
cube([1.2, 4.5, stem_height + 0.1], true);
cube([4.5, 1.4, stem_height + 0.1], true);
}
}
}
module next_keycap() {
keycap();
translate([0, 0, enclosure_hole_depth + stopper_flange_height + button_height_above_enclosure_surface - 0.1]) cylinder(h = symbol_height, d = 12, $fn = 3);
}
module prev_keycap() {
keycap();
rotate([0, 0, 180]) translate([0, 0, enclosure_hole_depth + stopper_flange_height + button_height_above_enclosure_surface - 0.1]) cylinder(h = symbol_height, d = 12, $fn = 3);
}
module vol_up_keycap() {
keycap();
translate([0, 0, enclosure_hole_depth + stopper_flange_height + button_height_above_enclosure_surface - 0.1]) cylinder(h = symbol_height, d = 12, $fn = 5);
}
module vol_down_keycap() {
keycap();
translate([0, 0, enclosure_hole_depth + stopper_flange_height + button_height_above_enclosure_surface - 0.1]) cylinder(h = symbol_height, d = 6, $fn = 5);
}
//keycap();
// Stem only:
intersection() {
keycap();
translate([0, 0, -1.5]) cube([8, 6, 5], true);
}