summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--case/top.scad61
1 files changed, 58 insertions, 3 deletions
diff --git a/case/top.scad b/case/top.scad
index eeb21eb..9c3755f 100644
--- a/case/top.scad
+++ b/case/top.scad
@@ -69,9 +69,7 @@ module top_case() {
/* Upper */
translate([0, case_length_bottom - wall_width, 0])
- cube([case_width_bottom,
- wall_width,
- wall_height], false);
+ cube([case_width_bottom, wall_width, wall_height], false);
/* Right */
translate([case_width_bottom - wall_width, 0, 0])
@@ -84,6 +82,63 @@ module top_case() {
cube([wall_width, case_length_bottom, wall_height - wall_width], false);
}
+ module keyboard_deck() {
+ key_switch_footprint = [16.0, 16.0];
+
+ key_switch_sizes = [
+ [0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
+ [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5],
+ [1.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.25],
+ [1.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.75],
+ [1.0, 1.25, 1.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
+ ];
+
+ function add(v) = [for(p=v) 1]*v;
+ function slice(v, x, y) = [for (i=[x:y]) v[i]];
+ function addrange(v, x, y) = add(slice(v, x, y));
+
+ module key_switch_plate(key_switch_size) {
+ plate_width = key_switch_width * key_switch_size;
+ plate_length = key_switch_length;
+
+ if (key_switch_size <= 0.5) {
+ cube([key_switch_width * key_switch_size,
+ key_switch_length,
+ wall_width], false);
+ } else {
+ hole_width = key_switch_footprint[0];
+ hole_length = key_switch_footprint[1];
+
+ hole_x = plate_width / 2 - hole_width / 2;
+ hole_y = plate_length / 2 - hole_length / 2;
+
+ linear_extrude(wall_width)
+ difference() {
+ square([plate_width, plate_length], false);
+
+ translate([hole_x, hole_y, 0])
+ square([hole_width, hole_length], false);
+ }
+ }
+ }
+
+ rows = len(key_switch_sizes);
+
+ for (i = [0: rows-1]) {
+ y = key_switch_length * (rows - 1 - i);
+ key_switch_row = key_switch_sizes[i];
+ cols = len(key_switch_row);
+
+ for (j = [0: cols-1]) {
+ x = key_switch_width * ((j == 0)? 0: addrange(key_switch_row, 0, j-1));
+ key_switch_size = key_switch_row[j];
+
+ translate([x, y, 0])
+ key_switch_plate(key_switch_size);
+ }
+ }
+ }
+
difference() {
body();
accents();