From f7041b6bf0b1878c06df7f4165c415937b2cd35c Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Thu, 25 Mar 2021 15:16:48 +0000 Subject: [PATCH 01/10] Add basic version of TKL Layout. Legends still need tweaking as they overrun a lot of keys, and the profile is completely wrong as it seems to be doing 1-2-3-4-4-5 instead of 1-1-2-3-4-4. --- src/key_layouts.scad | 2 ++ src/layouts/tkl/default.scad | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/layouts/tkl/default.scad diff --git a/src/key_layouts.scad b/src/key_layouts.scad index 10b5630..ea2d3ac 100644 --- a/src/key_layouts.scad +++ b/src/key_layouts.scad @@ -18,3 +18,5 @@ include include include + +include \ No newline at end of file diff --git a/src/layouts/tkl/default.scad b/src/layouts/tkl/default.scad new file mode 100644 index 0000000..8ab7875 --- /dev/null +++ b/src/layouts/tkl/default.scad @@ -0,0 +1,23 @@ +include <../layout.scad> + +tkl_default_layout = [ + [1,-1,1,1,1,1,-0.5,1,1,1,1,-0.5,1,1,1,1,-0.5,1,1,1], + [1,1,1,1,1,1,1,1,1,1,1,1,1,2,-0.5,1,1,1], + [1.5,1,1,1,1,1,1,1,1,1,1,1,1,1.5,-0.5,1,1,1], + [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,2.75,-1.5,1], + [1.25,1.25,1.25,6.25,1.25,1.25,1.25,1.25,-0.5,1,1,1] +]; + +tkl_legends = [ + ["Esc", "", "F1", "F2", "F3", "F4", "", "F5", "F6", "F7", "F8", "", "F9", "F10", "F11", "F12", "", "Scn", "Scr", "Pse"], + ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "⌫", "", "ins", "home", "pgup"], + ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\", "", "del", "end", "pgdn"], + ["caps", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "enter"], + ["shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "shift", "", "up"], + ["ctl", "win", "alt", "", "mnu", "win", "alt", "ctl", "", "lt", "dn", "rt"], +]; + +module tkl_default(profile) { + layout(tkl_default_layout, profile, tkl_legends) children(); +} From d69e9e5df960b8fda3850e4eac0025212e971630 Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Thu, 25 Mar 2021 16:42:52 +0000 Subject: [PATCH 02/10] Add legend_sizes argument to layout(). This allows the size of legends to be modified. For example, on the TKL layout, many of the nav key's legends are too long to fit on a 1u key with the standard 6 font size, so the legend_sizes allows a change of this. The array specifies differences from the default, so that if the default is adjusted the changed font sizes will be too. For example, +2 means a 2 unit larger legend, 0 means default and -1 means 1 unit smaller. --- src/layouts/layout.scad | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad index cd3c9c2..c4d153a 100644 --- a/src/layouts/layout.scad +++ b/src/layouts/layout.scad @@ -20,7 +20,7 @@ function double_sculpted_column(column, row_length, column_sculpt_profile) = 1hand(column, row_length) : (column_sculpt_profile == "cresting_wave") ? cresting_wave(column, row_length) : 0; -module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculpting_offset=0, row_override=undef, column_sculpt_profile="2hands", column_override=undef) { +module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculpting_offset=0, row_override=undef, column_sculpt_profile="2hands", column_override=undef, legend_sizes=undef) { for (row = [0:len(list)-1]){ /* echo("**ROW**:", row); */ row_length = len(list[row]); @@ -37,7 +37,7 @@ module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculp if (key_length >= 1) { translate_u(column_distance - (key_length/2), -row) { - key_profile(profile, row_sculpting, column_value) u(key_length) legend(legends ? legends[row][column] : "") front_legend(front_legends ? front_legends[row][column] : "") cherry() { // (row+4) % 5 + 1 + key_profile(profile, row_sculpting, column_value) u(key_length) legend(legends ? legends[row][column] : "", size=legend_sizes ? $font_size+legend_sizes[row][column] : $font_size) front_legend(front_legends ? front_legends[row][column] : "") cherry() { // (row+4) % 5 + 1 $row = row; $column = column; From fd15f5125aebf794bd423f25e06cd51cc0ed518b Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Thu, 25 Mar 2021 16:46:12 +0000 Subject: [PATCH 03/10] Add legend_sizes to tkl, to fix keys where legend overruns keys. --- src/layouts/tkl/default.scad | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/layouts/tkl/default.scad b/src/layouts/tkl/default.scad index 8ab7875..7ab82a5 100644 --- a/src/layouts/tkl/default.scad +++ b/src/layouts/tkl/default.scad @@ -9,6 +9,14 @@ tkl_default_layout = [ [1.25,1.25,1.25,6.25,1.25,1.25,1.25,1.25,-0.5,1,1,1] ]; +tkl_legend_size = [ + [-2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; + tkl_legends = [ ["Esc", "", "F1", "F2", "F3", "F4", "", "F5", "F6", "F7", "F8", "", "F9", "F10", "F11", "F12", "", "Scn", "Scr", "Pse"], ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "⌫", "", "ins", "home", "pgup"], @@ -19,5 +27,5 @@ tkl_legends = [ ]; module tkl_default(profile) { - layout(tkl_default_layout, profile, tkl_legends) children(); + layout(tkl_default_layout, profile, tkl_legends, row_sculpting_offset=-1, legend_sizes=tkl_legend_size) children(); } From 277a017440e9bb8b3ddd413acc6cc0db09322581 Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Thu, 25 Mar 2021 17:28:08 +0000 Subject: [PATCH 04/10] Change some legends and sizing to better fit the existing legends (taken from the default 60%) --- src/layouts/tkl/default.scad | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/layouts/tkl/default.scad b/src/layouts/tkl/default.scad index 7ab82a5..36aa8e1 100644 --- a/src/layouts/tkl/default.scad +++ b/src/layouts/tkl/default.scad @@ -10,15 +10,15 @@ tkl_default_layout = [ ]; tkl_legend_size = [ - [-2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2], + [-2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -3, -3, -2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, -3], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -3], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; tkl_legends = [ - ["Esc", "", "F1", "F2", "F3", "F4", "", "F5", "F6", "F7", "F8", "", "F9", "F10", "F11", "F12", "", "Scn", "Scr", "Pse"], + ["esc", "", "f1", "f2", "f3", "f4", "", "f5", "f6", "f7", "f8", "", "f9", "f10", "f11", "f12", "", "ptsc", "sclk", "pse"], ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "⌫", "", "ins", "home", "pgup"], ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\", "", "del", "end", "pgdn"], ["caps", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "enter"], From 44340a4743b8c9ed10b155f07137419560ab8e86 Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Thu, 25 Mar 2021 17:43:23 +0000 Subject: [PATCH 05/10] Add basic full_size layout. Not sure how to do vertical keys using layout(), so they've been replaced by 2 keys with the same legend. --- src/key_layouts.scad | 3 ++- src/layouts/full_size/default.scad | 32 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/layouts/full_size/default.scad diff --git a/src/key_layouts.scad b/src/key_layouts.scad index ea2d3ac..db14054 100644 --- a/src/key_layouts.scad +++ b/src/key_layouts.scad @@ -19,4 +19,5 @@ include include -include \ No newline at end of file +include +include \ No newline at end of file diff --git a/src/layouts/full_size/default.scad b/src/layouts/full_size/default.scad new file mode 100644 index 0000000..8eeb1d5 --- /dev/null +++ b/src/layouts/full_size/default.scad @@ -0,0 +1,32 @@ +include <../layout.scad> + +full_size_default_layout = [ + [1,-1,1,1,1,1,-0.5,1,1,1,1,-0.5,1,1,1,1,-0.5,1,1,1], + [1,1,1,1,1,1,1,1,1,1,1,1,1,2,-0.5,1,1,1,-0.5,1,1,1,1], + [1.5,1,1,1,1,1,1,1,1,1,1,1,1,1.5,-0.5,1,1,1,-0.5,1,1,1,1], + [1.75,1,1,1,1,1,1,1,1,1,1,1,2.25,-4,1,1,1,1], + [2.25,1,1,1,1,1,1,1,1,1,1,2.75,-1.5,1,-1.5,1,1,1,1], + [1.25,1.25,1.25,6.25,1.25,1.25,1.25,1.25,-0.5,1,1,1,-0.5,2,1,1] +]; + +full_size_legend_size = [ + [-2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -3, -3, -2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, -3, 0, -2, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2] +]; + +full_size_legends = [ + ["esc", "", "f1", "f2", "f3", "f4", "", "f5", "f6", "f7", "f8", "", "f9", "f10", "f11", "f12", "", "ptsc", "sclk", "pse"], + ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "⌫", "", "ins", "home", "pgup", "", "num", "/", "*", "-"], + ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\", "", "del", "end", "pgdn", "", "7", "8", "9", "+"], + ["caps", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "enter", "", "4", "5", "6", "+"], + ["shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "shift", "", "up", "", "1", "2", "3", "ent"], + ["ctl", "win", "alt", "", "mnu", "win", "alt", "ctl", "", "lt", "dn", "rt", "", "0", ".", "ent"], +]; + +module full_size_default(profile) { + layout(full_size_default_layout, profile, full_size_legends, row_sculpting_offset=-1, legend_sizes=full_size_legend_size) children(); +} From 7f326f30e9f6b1e850ef54a21456650005df0fb8 Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Thu, 25 Mar 2021 19:37:51 +0000 Subject: [PATCH 06/10] Add Vertical Keys to layout() --- src/layouts/full_size/default.scad | 23 ++++++++++++++++------- src/layouts/layout.scad | 8 +++++--- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/layouts/full_size/default.scad b/src/layouts/full_size/default.scad index 8eeb1d5..2a30bf2 100644 --- a/src/layouts/full_size/default.scad +++ b/src/layouts/full_size/default.scad @@ -4,29 +4,38 @@ full_size_default_layout = [ [1,-1,1,1,1,1,-0.5,1,1,1,1,-0.5,1,1,1,1,-0.5,1,1,1], [1,1,1,1,1,1,1,1,1,1,1,1,1,2,-0.5,1,1,1,-0.5,1,1,1,1], [1.5,1,1,1,1,1,1,1,1,1,1,1,1,1.5,-0.5,1,1,1,-0.5,1,1,1,1], - [1.75,1,1,1,1,1,1,1,1,1,1,1,2.25,-4,1,1,1,1], + [1.75,1,1,1,1,1,1,1,1,1,1,1,2.25,-4,1,1,1], [2.25,1,1,1,1,1,1,1,1,1,1,2.75,-1.5,1,-1.5,1,1,1,1], - [1.25,1.25,1.25,6.25,1.25,1.25,1.25,1.25,-0.5,1,1,1,-0.5,2,1,1] + [1.25,1.25,1.25,6.25,1.25,1.25,1.25,1.25,-0.5,1,1,1,-0.5,2,1] +]; + +full_size_vertical_size = [ + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ]; full_size_legend_size = [ [-2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -3, -3, -2], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, -3, 0, -2, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2] + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]; full_size_legends = [ ["esc", "", "f1", "f2", "f3", "f4", "", "f5", "f6", "f7", "f8", "", "f9", "f10", "f11", "f12", "", "ptsc", "sclk", "pse"], ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "⌫", "", "ins", "home", "pgup", "", "num", "/", "*", "-"], ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\", "", "del", "end", "pgdn", "", "7", "8", "9", "+"], - ["caps", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "enter", "", "4", "5", "6", "+"], + ["caps", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "enter", "", "4", "5", "6"], ["shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "shift", "", "up", "", "1", "2", "3", "ent"], - ["ctl", "win", "alt", "", "mnu", "win", "alt", "ctl", "", "lt", "dn", "rt", "", "0", ".", "ent"], + ["ctl", "win", "alt", "", "mnu", "win", "alt", "ctl", "", "lt", "dn", "rt", "", "0", "."], ]; module full_size_default(profile) { - layout(full_size_default_layout, profile, full_size_legends, row_sculpting_offset=-1, legend_sizes=full_size_legend_size) children(); + layout(full_size_default_layout, profile, full_size_legends, row_sculpting_offset=-1, legend_sizes=full_size_legend_size, vertical_sizes=full_size_vertical_size) children(); } diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad index c4d153a..08d6d98 100644 --- a/src/layouts/layout.scad +++ b/src/layouts/layout.scad @@ -20,7 +20,7 @@ function double_sculpted_column(column, row_length, column_sculpt_profile) = 1hand(column, row_length) : (column_sculpt_profile == "cresting_wave") ? cresting_wave(column, row_length) : 0; -module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculpting_offset=0, row_override=undef, column_sculpt_profile="2hands", column_override=undef, legend_sizes=undef) { +module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculpting_offset=0, row_override=undef, column_sculpt_profile="2hands", column_override=undef, legend_sizes=undef, vertical_sizes=undef) { for (row = [0:len(list)-1]){ /* echo("**ROW**:", row); */ row_length = len(list[row]); @@ -28,6 +28,8 @@ module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculp for(column = column_override ? column_override : [0:len(list[row])-1]) { row_sculpting = (row_override != undef ? row_override : row) + row_sculpting_offset; key_length = list[row][column]; + key_height = vertical_sizes ? vertical_sizes[row][column] : 1; + v_offset = (key_height - 1) / 2; column_value = double_sculpted_column(column, row_length, column_sculpt_profile); column_distance = abs_sum([for (x = [0 : column]) list[row][x]]); @@ -35,9 +37,9 @@ module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculp // supports negative values for nonexistent keys if (key_length >= 1) { - translate_u(column_distance - (key_length/2), -row) { + translate_u(column_distance - (key_length/2), -row-v_offset) { - key_profile(profile, row_sculpting, column_value) u(key_length) legend(legends ? legends[row][column] : "", size=legend_sizes ? $font_size+legend_sizes[row][column] : $font_size) front_legend(front_legends ? front_legends[row][column] : "") cherry() { // (row+4) % 5 + 1 + key_profile(profile, row_sculpting, column_value) u(key_length) uh(key_height) legend(legends ? legends[row][column] : "", size=legend_sizes ? $font_size+legend_sizes[row][column] : $font_size) front_legend(front_legends ? front_legends[row][column] : "") cherry() { // (row+4) % 5 + 1 $row = row; $column = column; From a217aa11f445fd6defe9bca64126309e677e25df Mon Sep 17 00:00:00 2001 From: JONATHAN DOVE Date: Sun, 20 Feb 2022 15:56:33 -0500 Subject: [PATCH 07/10] Add Key Bump for Layouts --- src/key.scad | 8 ++++++++ src/settings.scad | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/key.scad b/src/key.scad index 15768ba..ec9c2d7 100644 --- a/src/key.scad +++ b/src/key.scad @@ -177,6 +177,14 @@ module inner_shape(extra_wall_thickness = 0, extra_keytop_thickness = 0) { // additive objects at the top of the key module additive_features(inset) { top_of_key() { + // Allow for key bump in layout + if ($layout_key_bump) { + for (layout_bump_key = $layout_bump_keys){ + if (str($legends[0][0]) == layout_bump_key){ + keybump($key_bump_depth, $key_bump_edge); + } + } + } if($key_bump) keybump($key_bump_depth, $key_bump_edge); if(!inset && $children > 0) color($secondary_color) children(); } diff --git a/src/settings.scad b/src/settings.scad index 29da524..cf83c66 100644 --- a/src/settings.scad +++ b/src/settings.scad @@ -136,6 +136,8 @@ $minkowski_radius = .33; //insert locating bump $key_bump = false; +$layout_key_bump = false; +$layout_bump_keys = ["F","f","J","j"]; //height of the location bump from the top surface of the key $key_bump_depth = 0.5; //distance to move the bump from the front edge of the key From bb6be348fadce67314d7b67a5b294b62fbab47f6 Mon Sep 17 00:00:00 2001 From: JONATHAN DOVE Date: Sun, 20 Feb 2022 16:45:02 -0500 Subject: [PATCH 08/10] Add Dual Legends to the Top of the Key --- keys.scad | 11 +++++++++- src/features/legends.scad | 9 ++++++++- src/key_layouts.scad | 3 ++- src/layouts/full_size_dual/default.scad | 27 +++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/layouts/full_size_dual/default.scad diff --git a/keys.scad b/keys.scad index 768110e..9caa575 100644 --- a/keys.scad +++ b/keys.scad @@ -17,4 +17,13 @@ dcs_row(5) legend("⇪", size=9) key(); } */ // example layout -/* preonic_default("dcs"); */ \ No newline at end of file +// preonic_default("dcs") key(); + +// example dual top Legend row +// legend_test=[["{","["],["|","\\"],[":",";"],["?","/"],["_","-"]]; +// for (x = [0:1:4]) { +// translate_u(0,-x) dsa_row() legend(legend_test[x], [0,0,6]) key(); +// } + +// example dual top layout +// full_size_dual_default("cherry") key(); \ No newline at end of file diff --git a/src/features/legends.scad b/src/features/legends.scad index 2f0171a..117571f 100644 --- a/src/features/legends.scad +++ b/src/features/legends.scad @@ -3,7 +3,14 @@ module keytext(text, position, font_size, depth) { hoffset = (top_total_key_height()/3.5) * -position[1]; translate([woffset, hoffset, -depth]){ color($tertiary_color) linear_extrude(height=$dish_depth + depth){ - text(text=text, font=$font, size=font_size, halign="center", valign="center"); + // Allows for dual top keytext + if(is_list(text)&&len(text)==2){ + translate([0, (top_total_key_height()/4.25), 0]) text(text=text[0], font=$font, size=font_size*.70, halign="center", valign="center"); + translate([0, -(top_total_key_height()/4.25), 0]) text(text=text[1], font=$font, size=font_size*.70, halign="center", valign="center"); + } + else { + text(text=text, font=$font, size=font_size, halign="center", valign="center"); + } } } } diff --git a/src/key_layouts.scad b/src/key_layouts.scad index db14054..f06606a 100644 --- a/src/key_layouts.scad +++ b/src/key_layouts.scad @@ -20,4 +20,5 @@ include include include -include \ No newline at end of file +include +include \ No newline at end of file diff --git a/src/layouts/full_size_dual/default.scad b/src/layouts/full_size_dual/default.scad new file mode 100644 index 0000000..eaf8b6d --- /dev/null +++ b/src/layouts/full_size_dual/default.scad @@ -0,0 +1,27 @@ +include <../layout.scad> + +rt_arrow="\u2192"; +lt_arrow="\u2190"; +up_arrow="\u2191"; +dn_arrow="\u2193"; +menu="\u2261"; +enter=lt_arrow; //"\u2386" with supported Unicode Font +backspace="BkSp"; //"\u232B" with supported Unicode Font + +// Keys are defined independently: [legend, horizontalSize, verticalSize, fontChg] +layout_test = [[["Esc",1,1,-2], ["",-1,1,0], ["F1",1,1,-2], ["F2",1,1,-2], ["F3",1,1,-2], ["F4",1,1,-2], ["",-.5,1,0], ["F5",1,1,-2], ["F6",1,1,-2], ["F7",1,1,-2], ["F8",1,1,-2], ["",-.5,1,0], ["F9",1,1,-2], ["F10",1,1,-2], ["F11",1,1,-2], ["F12",1,1,-2], ["",-0.5,1,0], [["Print","Screen"],1,1,-3], [["Scroll", "Lock"],1,1,-3], [["Pause","Break"],1,1,-3]], + [[["~","`"],1,1,0], [["!","1"],1,1,0], [["@","2"],1,1,0], [["#","3"],1,1,0], [["$","4"],1,1,0], [["%","5"],1,1,0], [["^","6"],1,1,0], [["&","7"],1,1,0], [["*","8"],1,1,0], [["(","9"],1,1,0], [[")","0"],1,1,0], [["_","-"],1,1,0], [["+","="],1,1,0], [backspace,2,1,-2], ["",-0.5,1,0], ["Ins",1,1,-2], ["Home",1,1,-2], [["Pg","Up"],1,1,-1], ["",-0.5,1,0], [["Num","Lock"],1,1,-2], ["/",1,1,0], ["*",1,1,0], ["-",1,1,0]], + [["Tab",1.5,1,-2], ["Q",1,1,0], ["W",1,1,0], ["E",1,1,0], ["R",1,1,0], ["T",1,1,-2], ["Y",1,1,0], ["U",1,1,0], ["I",1,1,0], ["O",1,1,0], ["P",1,1,0], [["{","["],1,1,0], [["}","]"],1,1,0], [["|","\\"],1.5,1,0], ["",-0.5,1,0], ["Del",1,1,-2], ["End",1,1,-2], [["Pg","Dn"],1,1,-1], ["",-0.5,1,0], ["7",1,1,0], ["8",1,1,0], ["9",1,1,0], ["+",1,2,0]], + [["Caps",1.75,1,-2], ["A",1,1,0], ["S",1,1,0], ["D",1,1,0], ["F",1,1,-2], ["G",1,1,0], ["H",1,1,0], ["J",1,1,0], ["K",1,1,0], ["L",1,1,0], [[":",";"],1,1,0], [["\"","'"],1,1,0], ["Enter",2.25,1,-2], ["",-4,1,0], ["4",1,1,0], ["5",1,1,0], ["6",1,1,0]], + [["Shift",2.25,1,-2], ["Z",1,1,0], ["X",1,1,0], ["C",1,1,-2], ["V",1,1,0], ["B",1,1,0], ["N",1,1,0], ["M",1,1,0], [["<",","],1,1,0], [[">","."],1,1,0], [["?","/"],1,1,0], ["Shift",2.75,1,-2], ["",-1.5,1,0], [up_arrow,1,1,0], ["",-1.5,1,0], ["1",1,1,0], ["2",1,1,0], ["3",1,1,0], [enter,1,2,0]], + [["Ctrl",1.25,1,-2], ["Win",1.25,1,-2], ["Alt",1.25,1,-2], ["",6.25,1,0], ["Alt",1.25,1,-2], ["FN",1.25,1,-2], [menu,1.25,1,0], ["Ctrl",1.25,1,-2], ["",-0.5,1,0], [lt_arrow,1,1,0], [dn_arrow,1,1,0], [rt_arrow,1,1,0], ["",-0.5,1,0], ["0",2,1,0], [".",1,1,0]]]; + +// Derive/seperate out tables +full_size_dual_legends = [ for (row = layout_test) [ for (col = row) col[0]]]; +full_size_dual_default_layout = [ for (row = layout_test) [ for (col = row) col[1]]]; +full_size_dual_vertical_size = [ for (row = layout_test) [ for (col = row) col[2]]]; +full_size_dual_legend_size = [ for (row = layout_test) [ for (col = row) col[3]]]; + +module full_size_dual_default(profile) { + layout(full_size_dual_default_layout, profile, full_size_dual_legends, legend_sizes=full_size_dual_legend_size, vertical_sizes=full_size_dual_vertical_size) children(); +} \ No newline at end of file From 21b9d1b780589cfcadac7f6c025b4309c0725e96 Mon Sep 17 00:00:00 2001 From: JONATHAN DOVE Date: Sun, 20 Feb 2022 16:51:45 -0500 Subject: [PATCH 09/10] Changed Name --- src/layouts/full_size_dual/default.scad | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/layouts/full_size_dual/default.scad b/src/layouts/full_size_dual/default.scad index eaf8b6d..6637624 100644 --- a/src/layouts/full_size_dual/default.scad +++ b/src/layouts/full_size_dual/default.scad @@ -9,18 +9,18 @@ enter=lt_arrow; //"\u2386" with supported Unicode Font backspace="BkSp"; //"\u232B" with supported Unicode Font // Keys are defined independently: [legend, horizontalSize, verticalSize, fontChg] -layout_test = [[["Esc",1,1,-2], ["",-1,1,0], ["F1",1,1,-2], ["F2",1,1,-2], ["F3",1,1,-2], ["F4",1,1,-2], ["",-.5,1,0], ["F5",1,1,-2], ["F6",1,1,-2], ["F7",1,1,-2], ["F8",1,1,-2], ["",-.5,1,0], ["F9",1,1,-2], ["F10",1,1,-2], ["F11",1,1,-2], ["F12",1,1,-2], ["",-0.5,1,0], [["Print","Screen"],1,1,-3], [["Scroll", "Lock"],1,1,-3], [["Pause","Break"],1,1,-3]], - [[["~","`"],1,1,0], [["!","1"],1,1,0], [["@","2"],1,1,0], [["#","3"],1,1,0], [["$","4"],1,1,0], [["%","5"],1,1,0], [["^","6"],1,1,0], [["&","7"],1,1,0], [["*","8"],1,1,0], [["(","9"],1,1,0], [[")","0"],1,1,0], [["_","-"],1,1,0], [["+","="],1,1,0], [backspace,2,1,-2], ["",-0.5,1,0], ["Ins",1,1,-2], ["Home",1,1,-2], [["Pg","Up"],1,1,-1], ["",-0.5,1,0], [["Num","Lock"],1,1,-2], ["/",1,1,0], ["*",1,1,0], ["-",1,1,0]], - [["Tab",1.5,1,-2], ["Q",1,1,0], ["W",1,1,0], ["E",1,1,0], ["R",1,1,0], ["T",1,1,-2], ["Y",1,1,0], ["U",1,1,0], ["I",1,1,0], ["O",1,1,0], ["P",1,1,0], [["{","["],1,1,0], [["}","]"],1,1,0], [["|","\\"],1.5,1,0], ["",-0.5,1,0], ["Del",1,1,-2], ["End",1,1,-2], [["Pg","Dn"],1,1,-1], ["",-0.5,1,0], ["7",1,1,0], ["8",1,1,0], ["9",1,1,0], ["+",1,2,0]], - [["Caps",1.75,1,-2], ["A",1,1,0], ["S",1,1,0], ["D",1,1,0], ["F",1,1,-2], ["G",1,1,0], ["H",1,1,0], ["J",1,1,0], ["K",1,1,0], ["L",1,1,0], [[":",";"],1,1,0], [["\"","'"],1,1,0], ["Enter",2.25,1,-2], ["",-4,1,0], ["4",1,1,0], ["5",1,1,0], ["6",1,1,0]], - [["Shift",2.25,1,-2], ["Z",1,1,0], ["X",1,1,0], ["C",1,1,-2], ["V",1,1,0], ["B",1,1,0], ["N",1,1,0], ["M",1,1,0], [["<",","],1,1,0], [[">","."],1,1,0], [["?","/"],1,1,0], ["Shift",2.75,1,-2], ["",-1.5,1,0], [up_arrow,1,1,0], ["",-1.5,1,0], ["1",1,1,0], ["2",1,1,0], ["3",1,1,0], [enter,1,2,0]], - [["Ctrl",1.25,1,-2], ["Win",1.25,1,-2], ["Alt",1.25,1,-2], ["",6.25,1,0], ["Alt",1.25,1,-2], ["FN",1.25,1,-2], [menu,1.25,1,0], ["Ctrl",1.25,1,-2], ["",-0.5,1,0], [lt_arrow,1,1,0], [dn_arrow,1,1,0], [rt_arrow,1,1,0], ["",-0.5,1,0], ["0",2,1,0], [".",1,1,0]]]; +full_size_dual = [[["Esc",1,1,-2], ["",-1,1,0], ["F1",1,1,-2], ["F2",1,1,-2], ["F3",1,1,-2], ["F4",1,1,-2], ["",-.5,1,0], ["F5",1,1,-2], ["F6",1,1,-2], ["F7",1,1,-2], ["F8",1,1,-2], ["",-.5,1,0], ["F9",1,1,-2], ["F10",1,1,-2], ["F11",1,1,-2], ["F12",1,1,-2], ["",-0.5,1,0], [["Print","Screen"],1,1,-3], [["Scroll", "Lock"],1,1,-3], [["Pause","Break"],1,1,-3]], + [[["~","`"],1,1,0], [["!","1"],1,1,0], [["@","2"],1,1,0], [["#","3"],1,1,0], [["$","4"],1,1,0], [["%","5"],1,1,0], [["^","6"],1,1,0], [["&","7"],1,1,0], [["*","8"],1,1,0], [["(","9"],1,1,0], [[")","0"],1,1,0], [["_","-"],1,1,0], [["+","="],1,1,0], [backspace,2,1,-2], ["",-0.5,1,0], ["Ins",1,1,-2], ["Home",1,1,-2], [["Pg","Up"],1,1,-1], ["",-0.5,1,0], [["Num","Lock"],1,1,-2], ["/",1,1,0], ["*",1,1,0], ["-",1,1,0]], + [["Tab",1.5,1,-2], ["Q",1,1,0], ["W",1,1,0], ["E",1,1,0], ["R",1,1,0], ["T",1,1,-2], ["Y",1,1,0], ["U",1,1,0], ["I",1,1,0], ["O",1,1,0], ["P",1,1,0], [["{","["],1,1,0], [["}","]"],1,1,0], [["|","\\"],1.5,1,0], ["",-0.5,1,0], ["Del",1,1,-2], ["End",1,1,-2], [["Pg","Dn"],1,1,-1], ["",-0.5,1,0], ["7",1,1,0], ["8",1,1,0], ["9",1,1,0], ["+",1,2,0]], + [["Caps",1.75,1,-2], ["A",1,1,0], ["S",1,1,0], ["D",1,1,0], ["F",1,1,-2], ["G",1,1,0], ["H",1,1,0], ["J",1,1,0], ["K",1,1,0], ["L",1,1,0], [[":",";"],1,1,0], [["\"","'"],1,1,0], ["Enter",2.25,1,-2], ["",-4,1,0], ["4",1,1,0], ["5",1,1,0], ["6",1,1,0]], + [["Shift",2.25,1,-2], ["Z",1,1,0], ["X",1,1,0], ["C",1,1,-2], ["V",1,1,0], ["B",1,1,0], ["N",1,1,0], ["M",1,1,0], [["<",","],1,1,0], [[">","."],1,1,0], [["?","/"],1,1,0], ["Shift",2.75,1,-2], ["",-1.5,1,0], [up_arrow,1,1,0], ["",-1.5,1,0], ["1",1,1,0], ["2",1,1,0], ["3",1,1,0], [enter,1,2,0]], + [["Ctrl",1.25,1,-2], ["Win",1.25,1,-2], ["Alt",1.25,1,-2], ["",6.25,1,0], ["Alt",1.25,1,-2], ["FN",1.25,1,-2], [menu,1.25,1,0], ["Ctrl",1.25,1,-2], ["",-0.5,1,0], [lt_arrow,1,1,0], [dn_arrow,1,1,0], [rt_arrow,1,1,0], ["",-0.5,1,0], ["0",2,1,0], [".",1,1,0]]]; // Derive/seperate out tables -full_size_dual_legends = [ for (row = layout_test) [ for (col = row) col[0]]]; -full_size_dual_default_layout = [ for (row = layout_test) [ for (col = row) col[1]]]; -full_size_dual_vertical_size = [ for (row = layout_test) [ for (col = row) col[2]]]; -full_size_dual_legend_size = [ for (row = layout_test) [ for (col = row) col[3]]]; +full_size_dual_legends = [ for (row = full_size_dual) [ for (col = row) col[0]]]; +full_size_dual_default_layout = [ for (row = full_size_dual) [ for (col = row) col[1]]]; +full_size_dual_vertical_size = [ for (row = full_size_dual) [ for (col = row) col[2]]]; +full_size_dual_legend_size = [ for (row = full_size_dual) [ for (col = row) col[3]]]; module full_size_dual_default(profile) { layout(full_size_dual_default_layout, profile, full_size_dual_legends, legend_sizes=full_size_dual_legend_size, vertical_sizes=full_size_dual_vertical_size) children(); From 1ec8c030d19888202669fb1e8a091c7a0bf27d48 Mon Sep 17 00:00:00 2001 From: JONATHAN DOVE Date: Sun, 20 Feb 2022 18:58:56 -0500 Subject: [PATCH 10/10] Update to simple_layout for Full Size, TKL, and Full Size Dual --- src/layouts/full_size/default.scad | 29 +++++++++++++++++++++---- src/layouts/full_size_dual/default.scad | 23 ++++++++++++++++++-- src/layouts/tkl/default.scad | 13 ++++++++--- 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/src/layouts/full_size/default.scad b/src/layouts/full_size/default.scad index 2a30bf2..a88b013 100644 --- a/src/layouts/full_size/default.scad +++ b/src/layouts/full_size/default.scad @@ -21,7 +21,7 @@ full_size_vertical_size = [ full_size_legend_size = [ [-2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -2, -2, -2, -2, 0, -3, -3, -2], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, -3, 0, -2, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] @@ -36,6 +36,27 @@ full_size_legends = [ ["ctl", "win", "alt", "", "mnu", "win", "alt", "ctl", "", "lt", "dn", "rt", "", "0", "."], ]; -module full_size_default(profile) { - layout(full_size_default_layout, profile, full_size_legends, row_sculpting_offset=-1, legend_sizes=full_size_legend_size, vertical_sizes=full_size_vertical_size) children(); -} + +module full_size_default(profile="dcs") { + simple_layout(full_size_default_layout) { + fs_legend = full_size_legends[$row][$column]; + echo(fs_legend); + legend_size = $font_size + full_size_legend_size[$row][$column]; + vertical_size = full_size_vertical_size[$row][$column]; + + legend(fs_legend, size=legend_size) { + key_profile(profile, $row, $column) { + if(vertical_size > 1){ + v_offset = -(vertical_size - 1) / 2; + translate_u(0, v_offset){ + uh(vertical_size) { + stabilized(vertical=true) key(); + } + } + } else { + key(); + } + } + } + } +} \ No newline at end of file diff --git a/src/layouts/full_size_dual/default.scad b/src/layouts/full_size_dual/default.scad index 6637624..fd77678 100644 --- a/src/layouts/full_size_dual/default.scad +++ b/src/layouts/full_size_dual/default.scad @@ -22,6 +22,25 @@ full_size_dual_default_layout = [ for (row = full_size_dual) [ for (col = row) c full_size_dual_vertical_size = [ for (row = full_size_dual) [ for (col = row) col[2]]]; full_size_dual_legend_size = [ for (row = full_size_dual) [ for (col = row) col[3]]]; -module full_size_dual_default(profile) { - layout(full_size_dual_default_layout, profile, full_size_dual_legends, legend_sizes=full_size_dual_legend_size, vertical_sizes=full_size_dual_vertical_size) children(); +module full_size_dual_default(profile="dcs") { + simple_layout(full_size_dual_default_layout) { + dual_legend = full_size_dual_legends[$row][$column]; + legend_size = $font_size+full_size_dual_legend_size[$row][$column]; + vertical_size = full_size_dual_vertical_size[$row][$column]; + + legend(dual_legend, size=legend_size) { + key_profile(profile, $row, $column) { + if(vertical_size > 1){ + v_offset = -(vertical_size - 1) / 2; + translate_u(0, v_offset){ + uh(vertical_size) { + stabilized(vertical=true) key(); + } + } + } else { + key(); + } + } + } + } } \ No newline at end of file diff --git a/src/layouts/tkl/default.scad b/src/layouts/tkl/default.scad index 36aa8e1..577cc5c 100644 --- a/src/layouts/tkl/default.scad +++ b/src/layouts/tkl/default.scad @@ -26,6 +26,13 @@ tkl_legends = [ ["ctl", "win", "alt", "", "mnu", "win", "alt", "ctl", "", "lt", "dn", "rt"], ]; -module tkl_default(profile) { - layout(tkl_default_layout, profile, tkl_legends, row_sculpting_offset=-1, legend_sizes=tkl_legend_size) children(); -} +module tkl_default(profile="dcs") { + simple_layout(tkl_default_layout) { + tkl_legend = tkl_legends[$row][$column]; + legend_size = $font_size + tkl_legend_size[$row][$column]; + + legend(tkl_legend, size=legend_size) { + key_profile(profile, $row, $column) key(); + } + } +} \ No newline at end of file