From 4c6dbc430634c78406f57a362e2e38a84095e987 Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Tue, 20 Sep 2022 22:30:54 -0700
Subject: [PATCH 1/9] layout.scad uses key_transformations.scad for
 translate_u(), and key_transformations.scad for key_profile()

---
 src/layouts/layout.scad | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad
index cd3c9c2..b22f800 100644
--- a/src/layouts/layout.scad
+++ b/src/layouts/layout.scad
@@ -1,3 +1,6 @@
+use <../key_transformations.scad>
+use <../key_profiles.scad>
+
 // sums all values, unless a value is negative, in which case it makes it positive
 // dirty hack to allow for large gaps in keysets
 function abs_sum(list, x=0) =

From c4b622efc630404edf7cfb60e96e20b383fef24c Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Tue, 20 Sep 2022 23:12:54 -0700
Subject: [PATCH 2/9] All of the key profiles use use side_tilt() without
 including functions.scad

---
 src/key_profiles/asa.scad             | 2 ++
 src/key_profiles/cherry.scad          | 2 ++
 src/key_profiles/dcs.scad             | 2 ++
 src/key_profiles/dsa.scad             | 2 ++
 src/key_profiles/dss.scad             | 2 ++
 src/key_profiles/g20.scad             | 2 ++
 src/key_profiles/grid.scad            | 2 ++
 src/key_profiles/hipro.scad           | 2 ++
 src/key_profiles/mt3.scad             | 2 ++
 src/key_profiles/oem.scad             | 2 ++
 src/key_profiles/regular_polygon.scad | 1 +
 src/key_profiles/sa.scad              | 2 ++
 src/key_profiles/typewriter.scad      | 1 +
 13 files changed, 24 insertions(+)

diff --git a/src/key_profiles/asa.scad b/src/key_profiles/asa.scad
index aaa9ede..84efea8 100644
--- a/src/key_profiles/asa.scad
+++ b/src/key_profiles/asa.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module asa_row(row=3, column = 0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_height = 18.06;
diff --git a/src/key_profiles/cherry.scad b/src/key_profiles/cherry.scad
index fb5950f..c202143 100644
--- a/src/key_profiles/cherry.scad
+++ b/src/key_profiles/cherry.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 // based off GMK keycap set
 
 module cherry_row(row=3, column=0) {
diff --git a/src/key_profiles/dcs.scad b/src/key_profiles/dcs.scad
index 4e6e461..d39c4fa 100644
--- a/src/key_profiles/dcs.scad
+++ b/src/key_profiles/dcs.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module dcs_row(row=3, column=0) {
   $bottom_key_width = 18.16;
   $bottom_key_height = 18.16;
diff --git a/src/key_profiles/dsa.scad b/src/key_profiles/dsa.scad
index 766084b..70c2cc6 100644
--- a/src/key_profiles/dsa.scad
+++ b/src/key_profiles/dsa.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module dsa_row(row=3, column = 0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_width = 18.24; // 18.4;
diff --git a/src/key_profiles/dss.scad b/src/key_profiles/dss.scad
index 0e501ac..4aca777 100644
--- a/src/key_profiles/dss.scad
+++ b/src/key_profiles/dss.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module dss_row(n=3, column=0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_width = 18.24;
diff --git a/src/key_profiles/g20.scad b/src/key_profiles/g20.scad
index 794da41..3d21b26 100644
--- a/src/key_profiles/g20.scad
+++ b/src/key_profiles/g20.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module g20_row(row=3, column = 0) {
   $bottom_key_width = 18.16;
   $bottom_key_height = 18.16;
diff --git a/src/key_profiles/grid.scad b/src/key_profiles/grid.scad
index c81be46..26716bf 100644
--- a/src/key_profiles/grid.scad
+++ b/src/key_profiles/grid.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module grid_row(row=3, column = 0) {
   $bottom_key_width = 18.16;
   $bottom_key_height = 18.16;
diff --git a/src/key_profiles/hipro.scad b/src/key_profiles/hipro.scad
index dc8db5d..b9e04d6 100644
--- a/src/key_profiles/hipro.scad
+++ b/src/key_profiles/hipro.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module hipro_row(row=3, column=0) {
   $key_shape_type = "sculpted_square";
 
diff --git a/src/key_profiles/mt3.scad b/src/key_profiles/mt3.scad
index 01d95f3..df80c19 100644
--- a/src/key_profiles/mt3.scad
+++ b/src/key_profiles/mt3.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 // This is an imperfect attempt to clone the MT3 profile
 module mt3_row(row=3, column=0, deep_dish=false) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/oem.scad b/src/key_profiles/oem.scad
index 7594991..c84b50e 100644
--- a/src/key_profiles/oem.scad
+++ b/src/key_profiles/oem.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module oem_row(row=3, column = 0) {
   $bottom_key_width = 18.05;
   $bottom_key_height = 18.05;
diff --git a/src/key_profiles/regular_polygon.scad b/src/key_profiles/regular_polygon.scad
index 2f93ca9..7333739 100644
--- a/src/key_profiles/regular_polygon.scad
+++ b/src/key_profiles/regular_polygon.scad
@@ -1,3 +1,4 @@
+use <../functions.scad>
 include <../constants.scad>
 // Regular polygon shapes CIRCUMSCRIBE the sphere of diameter $bottom_key_width
 // This is to make tiling them easier, like in the case of hexagonal keycaps etc
diff --git a/src/key_profiles/sa.scad b/src/key_profiles/sa.scad
index 3382491..8d2ecea 100644
--- a/src/key_profiles/sa.scad
+++ b/src/key_profiles/sa.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+
 module sa_row(n=3, column=0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_width = 18.4;
diff --git a/src/key_profiles/typewriter.scad b/src/key_profiles/typewriter.scad
index 347cce5..9108a05 100644
--- a/src/key_profiles/typewriter.scad
+++ b/src/key_profiles/typewriter.scad
@@ -1,3 +1,4 @@
+use <../functions.scad>
 include <../constants.scad>
 // Regular polygon shapes CIRCUMSCRIBE the sphere of diameter $bottom_key_width
 // This is to make tiling them easier, like in the case of hexagonal keycaps etc

From 93f883036f32c8e2632563d280c7a3b7d41b5667 Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Tue, 20 Sep 2022 23:16:28 -0700
Subject: [PATCH 3/9] functions.scad uses $double_sculpt_radius without
 including settings.scad

---
 src/functions.scad | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/functions.scad b/src/functions.scad
index 6bfd3b4..f3ce634 100644
--- a/src/functions.scad
+++ b/src/functions.scad
@@ -1,4 +1,5 @@
 include <constants.scad>
+include <settings.scad>
 
 // I use functions when I need to compute special variables off of other special variables
 // functions need to be explicitly included, unlike special variables, which

From 80c35b04c3ee08ee0a85d556572ac61b94ee607e Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Tue, 20 Sep 2022 23:33:32 -0700
Subject: [PATCH 4/9] All of the key_profiles use settings without including at
 least the default settings

---
 src/key_profiles/asa.scad             | 1 +
 src/key_profiles/cherry.scad          | 1 +
 src/key_profiles/dcs.scad             | 1 +
 src/key_profiles/dsa.scad             | 1 +
 src/key_profiles/dss.scad             | 1 +
 src/key_profiles/g20.scad             | 1 +
 src/key_profiles/grid.scad            | 1 +
 src/key_profiles/hipro.scad           | 1 +
 src/key_profiles/mt3.scad             | 1 +
 src/key_profiles/oem.scad             | 1 +
 src/key_profiles/regular_polygon.scad | 1 +
 src/key_profiles/sa.scad              | 1 +
 src/key_profiles/typewriter.scad      | 1 +
 13 files changed, 13 insertions(+)

diff --git a/src/key_profiles/asa.scad b/src/key_profiles/asa.scad
index 84efea8..79df099 100644
--- a/src/key_profiles/asa.scad
+++ b/src/key_profiles/asa.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module asa_row(row=3, column = 0) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/cherry.scad b/src/key_profiles/cherry.scad
index c202143..8a11a8a 100644
--- a/src/key_profiles/cherry.scad
+++ b/src/key_profiles/cherry.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 // based off GMK keycap set
 
diff --git a/src/key_profiles/dcs.scad b/src/key_profiles/dcs.scad
index d39c4fa..646d07f 100644
--- a/src/key_profiles/dcs.scad
+++ b/src/key_profiles/dcs.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module dcs_row(row=3, column=0) {
   $bottom_key_width = 18.16;
diff --git a/src/key_profiles/dsa.scad b/src/key_profiles/dsa.scad
index 70c2cc6..1d0f8b6 100644
--- a/src/key_profiles/dsa.scad
+++ b/src/key_profiles/dsa.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module dsa_row(row=3, column = 0) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/dss.scad b/src/key_profiles/dss.scad
index 4aca777..c861f63 100644
--- a/src/key_profiles/dss.scad
+++ b/src/key_profiles/dss.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module dss_row(n=3, column=0) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/g20.scad b/src/key_profiles/g20.scad
index 3d21b26..7f912aa 100644
--- a/src/key_profiles/g20.scad
+++ b/src/key_profiles/g20.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module g20_row(row=3, column = 0) {
   $bottom_key_width = 18.16;
diff --git a/src/key_profiles/grid.scad b/src/key_profiles/grid.scad
index 26716bf..86f1096 100644
--- a/src/key_profiles/grid.scad
+++ b/src/key_profiles/grid.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module grid_row(row=3, column = 0) {
   $bottom_key_width = 18.16;
diff --git a/src/key_profiles/hipro.scad b/src/key_profiles/hipro.scad
index b9e04d6..6ed060e 100644
--- a/src/key_profiles/hipro.scad
+++ b/src/key_profiles/hipro.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module hipro_row(row=3, column=0) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/mt3.scad b/src/key_profiles/mt3.scad
index df80c19..154c1e4 100644
--- a/src/key_profiles/mt3.scad
+++ b/src/key_profiles/mt3.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 // This is an imperfect attempt to clone the MT3 profile
 module mt3_row(row=3, column=0, deep_dish=false) {
diff --git a/src/key_profiles/oem.scad b/src/key_profiles/oem.scad
index c84b50e..0011d3a 100644
--- a/src/key_profiles/oem.scad
+++ b/src/key_profiles/oem.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module oem_row(row=3, column = 0) {
   $bottom_key_width = 18.05;
diff --git a/src/key_profiles/regular_polygon.scad b/src/key_profiles/regular_polygon.scad
index 7333739..9297ac2 100644
--- a/src/key_profiles/regular_polygon.scad
+++ b/src/key_profiles/regular_polygon.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 include <../constants.scad>
 // Regular polygon shapes CIRCUMSCRIBE the sphere of diameter $bottom_key_width
 // This is to make tiling them easier, like in the case of hexagonal keycaps etc
diff --git a/src/key_profiles/sa.scad b/src/key_profiles/sa.scad
index 8d2ecea..036473c 100644
--- a/src/key_profiles/sa.scad
+++ b/src/key_profiles/sa.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 
 module sa_row(n=3, column=0) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/typewriter.scad b/src/key_profiles/typewriter.scad
index 9108a05..1845c72 100644
--- a/src/key_profiles/typewriter.scad
+++ b/src/key_profiles/typewriter.scad
@@ -1,4 +1,5 @@
 use <../functions.scad>
+include <../settings.scad>
 include <../constants.scad>
 // Regular polygon shapes CIRCUMSCRIBE the sphere of diameter $bottom_key_width
 // This is to make tiling them easier, like in the case of hexagonal keycaps etc

From 7907d2cd4ef058ca4c2b60a49b9a436badfae9fb Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Tue, 20 Sep 2022 23:34:30 -0700
Subject: [PATCH 5/9] layout.scad uses u() without including key_sizes.scad

---
 src/layouts/layout.scad | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad
index b22f800..7649206 100644
--- a/src/layouts/layout.scad
+++ b/src/layouts/layout.scad
@@ -1,5 +1,6 @@
 use <../key_transformations.scad>
 use <../key_profiles.scad>
+use <../key_sizes.scad>
 
 // sums all values, unless a value is negative, in which case it makes it positive
 // dirty hack to allow for large gaps in keysets

From 9665d5d6a0879d01997a85de056cfdb96ac66372 Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Wed, 21 Sep 2022 20:43:58 -0700
Subject: [PATCH 6/9] layout.scad uses thinks like lshift() without including
 key_types.scad

---
 src/layouts/layout.scad | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad
index 7649206..51648e4 100644
--- a/src/layouts/layout.scad
+++ b/src/layouts/layout.scad
@@ -1,6 +1,7 @@
 use <../key_transformations.scad>
 use <../key_profiles.scad>
 use <../key_sizes.scad>
+use <../key_types.scad>
 
 // sums all values, unless a value is negative, in which case it makes it positive
 // dirty hack to allow for large gaps in keysets

From fe960c2f2aedaa1a43dbba10aa7f3c247b1077eb Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Wed, 21 Sep 2022 20:52:14 -0700
Subject: [PATCH 7/9] key_types.scad uses u functions without including
 key_sizes.scad

---
 src/key_types.scad | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/key_types.scad b/src/key_types.scad
index a6c1ab6..3fef3d9 100644
--- a/src/key_types.scad
+++ b/src/key_types.scad
@@ -1,4 +1,5 @@
 include <functions.scad>
+use <key_sizes.scad>
 
 module spacebar() {
   $inverted_dish = $dish_type != "disable";

From 1935944ec5cdb890181787ef78cb30568495c0d1 Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Wed, 21 Sep 2022 21:08:29 -0700
Subject: [PATCH 8/9] key_types.scad uses stabilized() without including
 key_transformations.scad

---
 src/key_types.scad | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/key_types.scad b/src/key_types.scad
index 3fef3d9..55d7cb6 100644
--- a/src/key_types.scad
+++ b/src/key_types.scad
@@ -1,5 +1,6 @@
 include <functions.scad>
 use <key_sizes.scad>
+use <key_transformations.scad>
 
 module spacebar() {
   $inverted_dish = $dish_type != "disable";

From 1907b87dc5b35870f3f6e0d7c953cd0751a4f26e Mon Sep 17 00:00:00 2001
From: Daniel Loffgren <daniel@loffgren.org>
Date: Wed, 21 Sep 2022 21:14:56 -0700
Subject: [PATCH 9/9] Add HHKB layout

---
 src/layouts/hhkb/default.scad | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 src/layouts/hhkb/default.scad

diff --git a/src/layouts/hhkb/default.scad b/src/layouts/hhkb/default.scad
new file mode 100644
index 0000000..43611a3
--- /dev/null
+++ b/src/layouts/hhkb/default.scad
@@ -0,0 +1,21 @@
+include <../layout.scad>
+
+hhkb_layout = [
+  [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
+  [1.5,1,1,1,1,1,1,1,1,1,1,1,1,1.5],
+  [1.75,1,1,1,1,1,1,1,1,1,1,1,2.25],
+  [2.25,1,1,1,1,1,1,1,1,1,1,1.75,1],
+  [-1.5,1,1.5,6,1.5,1]
+];
+
+hhkb_legends = [
+  ["Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "\\", "`"],
+  ["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "Delete"],
+  ["Ctrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Return"],
+  ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift", "Fn"],
+  ["", "Alt", "Cmd", "", "Cmd", "Alt"],
+];
+
+module hhkb_default(profile) {
+  layout(hhkb_layout, profile, hhkb_legends) children();
+}