create new "ergo" layout based on a 30mm WASD layout

for both left and right hands, these layouts have a WASD layout as a
base, with the left and right sides pulled slightly down from the
center, and with 8+ button layouts pulling down even further to match
the arg for the pinky finger locations. I've been playing with this for
a while, and think I like it, at least like it enough to commit it

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
This commit is contained in:
Brian S. Stephan 2025-09-05 14:46:24 -05:00
parent 4c045951c7
commit d187312cd3
Signed by: bss
GPG Key ID: 3DE06D3180895FCB
6 changed files with 162 additions and 0 deletions

View File

@ -510,6 +510,76 @@ module sega_2p_eleven() {
translate([sega_2p_column_5_offset, -19-9-11, 0]) sega_2p_p1();
}
// BSS ERGO - 30mm
module ergo_wasd_30mm() {
button_30mm_hole(); // W
translate([0, -36, 0]) button_30mm_hole(); // S
translate([-34.5, -36-9, 0]) button_30mm_hole(); // A
translate([34.5, -36-9, 0]) button_30mm_hole(); // D
}
module ergo_six_30mm() {
ergo_wasd_30mm();
translate([-34.5, -9, 0]) button_30mm_hole(); // left of W
translate([34.5, -9, 0]) button_30mm_hole(); // right of W
}
module ergo_eight_30mm() {
ergo_six_30mm();
translate([34.5*1.9, -9*3, 0]) button_30mm_hole(); // top right of right of W
translate([34.5*1.9, -36-9*3, 0]) button_30mm_hole(); // right of D
}
module ergo_wasd_five_30mm() {
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
ergo_wasd_30mm();
}
translate([0, 0, 0]) sega_2p_nine_thumb_button();
}
module ergo_nine_30mm() {
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
ergo_eight_30mm();
}
translate([0, 0, 0]) sega_2p_nine_thumb_button();
}
// untested
// BSS ERGO - 24mm
/* module ergo_wasd() { */
/* button_24mm_hole(); // W */
/* translate([0, -27, 0]) button_24mm_hole(); // S */
/* translate([-26, -27-7, 0]) button_24mm_hole(); // A */
/* translate([26, -27-7, 0]) button_24mm_hole(); // D */
/* } */
/* module ergo_six() { */
/* ergo_wasd(); */
/* translate([-26, -7, 0]) button_24mm_hole(); // left of W */
/* translate([26, -7, 0]) button_24mm_hole(); // right of W */
/* } */
/* module ergo_eight() { */
/* ergo_six(); */
/* translate([26*2-2, -7*3, 0]) button_24mm_hole(); // top right of right of W */
/* translate([26*2-2, -27-7*3, 0]) button_24mm_hole(); // top right of right of W */
/* } */
/* module ergo_wasd_five() { */
/* translate([-63.25, 65.5, 0]) rotate([0, 0, 10]) { */
/* ergo_wasd(); */
/* } */
/* translate([0, 0, 0]) sega_2p_nine_thumb_button(); */
/* } */
/* module ergo_nine() { */
/* translate([-63.25, 65.5, 0]) rotate([0, 0, 10]) { */
/* ergo_eight(); */
/* } */
/* translate([0, 0, 0]) sega_2p_nine_thumb_button(); */
/* } */
module shiokenstar() {
translate([-172, 32, 0]) dir_arc_24mm_directionals();
sega_2p();

View File

@ -0,0 +1,24 @@
/*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module ergo_wasd_five_30mm_and_ergo_nine_30mm_decorative_plate() {
difference() {
// get a 2mm slice of the jumbo decorative button cylinders
union() {
translate([-panel_x/2, 0, -70]) mirror([1, 0, 0]) ergo_wasd_five_30mm();
translate([panel_x/2, 0, -70]) ergo_nine_30mm();
}
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes
translate([-panel_x/2, 0, -1]) mirror([1, 0, 0]) ergo_wasd_five_30mm();
translate([panel_x/2, 0, -1]) ergo_nine_30mm();
}
}
ergo_wasd_five_30mm_and_ergo_nine_30mm_decorative_plate();

View File

@ -0,0 +1,15 @@
/*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <ergo-nine-plus-aux-button.scad>
module ergo_nine_plus_aux_button_panel_with_mount() {
ergo_nine_plus_aux_button_panel();
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
}
ergo_nine_plus_aux_button_panel_with_mount();

View File

@ -0,0 +1,17 @@
/*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module ergo_nine_plus_aux_button_panel() {
difference() {
panel();
ergo_nine_30mm();
translate([89, 30, 0]) button_24mm_hole();
}
}
ergo_nine_plus_aux_button_panel();

View File

@ -0,0 +1,18 @@
/*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <lever-and-ergo-wasd-five-panel.scad>
module lever_and_ergo_wasd_five_panel_with_oled() {
difference() {
lever_and_ergo_wasd_five_panel();
translate([0, -(panel_y/2 - 22), 0]) adafruit_pid_326_oled_ssd1306_mount_cutout();
}
translate([0, -(panel_y/2 - 22), 0]) adafruit_pid_326_oled_ssd1306_mount();
}
lever_and_ergo_wasd_five_panel_with_oled();

View File

@ -0,0 +1,18 @@
/*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module lever_and_ergo_wasd_five_panel() {
difference() {
panel();
mirror([1, 0, 0]) ergo_wasd_five_30mm();
translate([(-panel_x/2)+55, (panel_y/2)-75, 0]) levermountholes();
translate([(-panel_x/2)+55, (panel_y/2)-75, 0]) levermountcountersinks();
}
}
lever_and_ergo_wasd_five_panel();