Coder Social home page Coder Social logo

ibnuda / dactyl-keyboard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tshort/dactyl-keyboard

198.0 6.0 51.0 78.24 MB

Web generator for dactyl keyboards.

Home Page: https://dactyl.siskam.link

License: GNU Affero General Public License v3.0

Clojure 79.61% HTML 20.22% Nix 0.17%

dactyl-keyboard's Introduction

Web Generator for Dactyl Keyboard

If you want to read the old README.md, go here.

Development

To tinker around this thing, follow these steps:

  1. Install JDK and leiningen.
  2. Change directory to this repository.
  3. Run lein ring server-headless.
  4. Change something in src/dactyl_keyboard/handler.clj.
  5. Open localhost:3030.

With Nix

  1. run direnv allow when you first cd into the project
  2. nix will then install and cache dependencies
  3. running lein ring server-headless will run the server with hot-reloading on port 3030

Deployment

To deploy it in a computer, follow these steps:

  1. Install JDK and leiningen.
  2. Change directory to this repository.
  3. Run lein ring uberjar.
  4. Copy target/dactyl-keyboard-version-SNAPSHOT-standalone.jar to your server.
  5. In the webserver, run java -jar dactyl-keyboard-version-SNAPSHOT-standalone.jar.

Old Workflow

To use old workflow where change code -> save -> openscad reloads model, uncomment (spit "things/right.scad" (write-scad (model-right c))) in src/dactyl_keyboard/dactyl.clj or src/dactyl_keyboard/lightcycle.clj.

Single Key PCB

If you want to use single key PCB, please use single pcb.

Notes

  • If you want to create some pull requests, never ever change the existing thumb placement settings.
  • If you want to create some pull requests, make sure you changes won't mess with the existing settings and its permutation.

License

Copyright © 2015-2020 Matthew Adereth, Tom Short, Ibnu D. Aji, et. al.

The source code for generating the models (everything excluding the things/ and resources/ directories is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3. The generated models and PCB designs are distributed under the Creative Commons Attribution-NonCommercial-ShareAlike License Version 3.0.

dactyl-keyboard's People

Contributors

adereth avatar bruceme avatar c10l avatar dfc avatar finn-e avatar happysalada avatar ibnuda avatar kosaro avatar mathias avatar mrusu91 avatar okke-formsma avatar razerban avatar tshort avatar yejianfengblue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

dactyl-keyboard's Issues

Not enough space for keycaps in default 6 row configuration.

Thank you for such an excellent tool!

Using the web generator, I leave everything default except for "show keycaps" and Rows: 6. The resulting Scad file doesn't have enough space to accommodate standard keycaps and keypresses on the top row (function row) of the ring finger and middle finger.
Is there a parameter I can change to make more space for those top keys?

Thanks again for making this great tool free.

Spiky protrusion

I reported this previously under the borderless version, but I've now had the time to check and it appears in both versions (with and without border):

ledge 1
ledge 2

lightcycle spiky artifact 2
lightcycle spiky artifact

settings

{"keys":{"columns":6,"num-row":true,"last-row":true,"thumb-count":"eight"},"curve":{"alpha":12,"beta":30,"tenting":7,"thumb-alpha":12,"thumb-beta":9,"thumb-tenting":-5},"connector":{"external":false},"form":{"hotswap":true,"thumb-offset-x":44,"thumb-offset-y":45,"thumb-offset-z":27,"z-offset":20,"manuform-offset":true,"border":false},"misc":{"right-side":true,"screw-inserts":false}}

Manuform: changing only "Center of the curvature for the column" can clip bottom of model

Changing "Center of the curvature for the column" from Pinky finger's column to Middle finger's column can clip the bottom of the model.

Screenshot 2020-07-05 13 16 45

You can manually account for this by increasing the "Height Offset" from the value used in the top model of 6mm, to 12mm to remove all of the clipping shown in the bottom model.

Perhaps a warning dialog when changing this value from a vertically higher column (pinky, index) to a vertically lower column (ring, middle), with a suggestion to add 4-6mm or more of height offset would be good enough for now.
Screenshot 2020-07-05 13 54 31

Manuform: Configurable middle finger height offset

Something that I've only noticed just now is that the height offset of the middle finger is actually a bit too extreme (at least for me), so it would be cool if it was configurable.

manuform2c

manuform2a

When I let my fingers hover over the keyboard the difference between ring and middle finger is actually pretty minor.

While not perfect, here's the Advantage again for reference:

kinesis advantage (1)
kinesis advantage (2)

JSON import missing fields

On the website after a json export on the dactyl manuform, some fields will be missing after an import

Here is a sample json file

{"keys":{"columns":5,"rows":4,"thumb-count":"three","last-row":"zero","switch-type":"box","inner-column":false,"hide-last-pinky":false},"curve":{"alpha":9,"pinky-alpha":12,"beta":18,"centercol":4,"tenting":6},"connector":{"external":false,"trrs":true,"micro-usb":true},"form":{"stagger-pinky-y":-30.0,"hotswap":true,"stagger-index-y":-10.0,"wire-post":false,"stagger":true,"stagger-ring-z":10.0,"stagger-middle-z":0.0,"screw-inserts":false,"stagger-middle-y":0.0,"height-offset":4,"wide-pinky":false,"stagger-index-z":5.0,"stagger-ring-y":-10.0,"stagger-pinky-z":25.0},"misc":{"keycaps":false,"right-side":true,"case":true}}

the missing fields are

  • hotswap socket
  • Index, middle, rink and pinky finger measurements (both x and y)
    (all are set to their default value)

How do you view the left hand side of the case?

Checking out the refaktor branch and puling latest. After installing everything and generating the file I only see the right hand side of the case that's generated by the sweet web gui you created. How do I view the left hand of the board? I'm a newbie to open scad, so I'm wondering if I'm missing anything.

Also, let me know if you need any help with the project. The dactyl manuform is my favorite board and I'm currently in the process of building a second and stopped by to this repo because you've got the hot swap support.

Reduce thickness of case

I would like to reduce the overall thickness (depth) of the shell of the Manuform variant because I find the case to be too thick to accommodate Kailh switches or to use Amoeba PCBs because the case is so thick that the pins on the switches can't reach the PCBs. I found "plate-thickness" in common.clj which can be adjusted so Kailh switches actually clip in properly, but this does not solve the problem of the overall socket being too deep.

I believe that reducing the thickness would also help with #46 - the external holders do not fit because they are not made to accommodate the extra thick walls of this case.

Where can I adjust the thickness of the walls/case?

Feature: enable download .clj file

It would be a great option to enable downloading the .clj file for more precise tweaking. To do the main configuration in the generator and then continue manually.

I really miss the feature to change the wall z and xy offset!

Best regards
schickhardt

Rendered STL is non-manifold

Here is the json

{
    "keys": {
        "columns": 6,
        "rows": 5,
        "thumb-count": "three",
        "last-row": "full",
        "nubs": false,
        "alps": false,
        "inner-column": false
    },
    "curve": {
        "alpha": 12,
        "beta": 36,
        "centercol": 4,
        "tenting": 15
    },
    "connector": {
        "external": false,
        "trrs": true,
        "micro-usb": true
    },
    "form": {
        "hotswap": false,
        "stagger": true,
        "wide-pinky": false,
        "height-offset": 4,
        "wire-post": false,
        "screw-inserts": true
    },
    "misc": {
        "keycaps": false,
        "wrist-rest": false,
        "integrated-wrist-rest": false,
        "right-side": true,
        "case": true
    }
}

I open the generated scad file with openSCAD 2019.5, render it and export the stl. Meshmixer shows manifold issues.

PrusaSlicer 2.2.0 has problems slicing it

Screen Shot 2020-06-21 at 15 29 07

While it's all good in Cura 4.6.1

Screen Shot 2020-06-21 at 15 31 32

It's not really an issue since I'm gonna use Cura anyways but just wanted to let you know.

Integrated wrist rest connectors aren't cut at the case

Thanks for providing this great generator.

One issue that I have noticed is that the integrated wrist rest option doesn't cut the connectors/ mounts at the case boundary, resulting in the mounts protruding deep into the case. Settings used are defaults in the refaktor branch, with the addition of :configuration-integrated-wrist-rest? true and :configuration-use-wrist-rest? true.

The issue is also present in the web interface.

Screenshot 2020-06-28 at 14 29 54

Manuform: Floating screw insert

Maybe I'm missing something about OpenSCAD, but there seems to be a floating screw insert.

BUG manuform
BUG manuform2
BUG manuform3

In case it has something to do with my current settings:

Dactyl Generator


Seems like they're also sometimes placed very close to the edge (different config here):

BUG manuform
BUG manuform2

I think I only changed the number of thumb keys, but here the config:

Dactyl Generator 2

Manuform: If possible, hide front facing screw inserts (somewhat)

I haven't build a keyboard (yet?), so I'm not sure how this would affect stability and building them, but if it's possible, it seems like moving the two screw inserts that are visible from the front somewhat inside would make the keyboard look even better.

manuform-case-right-2020 07 11-04 07 10 1

Move idea:

manuform-case-right-2020 07 11-04 07 10 2 edit

edit: Actually, I think the bottom right would be fine just in the middle of the wall.

Manuform and Lightcycle: Option to remove lower outer pinky key

I think the pinky is doing too much work in general, and the lower left- or rightmost pinky key seems very hard to reach, so it would be useful to have an option to remove it while keeping the other keys in that row.

The makers of the Kinesis Advantage also chose to not have a key there:

kb600-oh-fullsize

It also makes the shape symmetrical (or nearly in Manuform's case), since both Manuform and Lightcycle don't have the key in the bottom inner position to allow for better thumb placement. But I guess being more symmetrical is not necessarily a benefit.

Choosing the y-axis center of curvature

At the moment you can choose the x-axis center of the curvature, but it would be great if one could also choose the the y-axis center of curvature. (basically x, y position of the center)

For example, when changing the pinky curvature, the clipping of keycaps happens at the top.

manuform center of curvature should be y-center

I'm not sure, but I think the clipping might be avoided if the center was in the y-center of the keys.

Config: {"keys":{"columns":6,"rows":5,"thumb-count":"five","last-row":"two","switch-type":"box","inner-column":false,"hide-last-pinky":false},"curve":{"alpha":12,"pinky-alpha":8,"beta":18,"centercol":2,"tenting":6},"connector":{"external":false,"trrs":true,"micro-usb":false},"form":{"stagger-pinky-y":-13.0,"hotswap":true,"stagger-index-y":0.0,"wire-post":true,"stagger":true,"stagger-ring-z":0.0,"stagger-middle-z":-4.5,"screw-inserts":true,"stagger-middle-y":2.8,"height-offset":14,"wide-pinky":false,"stagger-index-z":0.0,"stagger-ring-y":0.0,"stagger-pinky-z":5.0},"misc":{"keycaps":true,"right-side":true,"case":true}}

Edit: I think the top-heavy curvature might also be why the top keycap seems to be very likely to scratch against the case:

manuform too tight 1
manuform too tight 2

Lightcycle: an object is blocking one of the thumb keys

Using the default configuration from the UI, I found that an object is blocking one of the thumb keys.
The following images describe the issue:
Screenshot 2020-04-15 at 11 29 26
Screenshot 2020-04-15 at 11 31 01
Screenshot 2020-04-15 at 11 31 22

I think that it's the corner of the last key in the grid.
When I choose Thumb Position in X direction (left/right): Farther to body, I can still see the corner but it's no longer blocking the key.
When I choose Thumb Position in Z direction (up/down): Higher to body, I can no longer see the corner.

Ring finger key intersects with border

The area where the keycap would be, seems to intersect with the border / rim:

intersects

Zoomed out:
intersects 2

settings

If it's not too hard to do, I'd love an option to disable the whole border. Not that I dislike the border, but a floating key design like the Dactyl Manuform does look interesting too.

Feature: support for 4 keys on last row

Additionally to "2 keys", "All keys", "No keys" for the last row, it would be fine to have an option "4 keys".
For layouts like 6x5 it would result a key mask like on Kinesis Advantage.
I think to do that the thumb cluster should be moved for one column to the inner side.
Thank you!

Manuform: 6th row key caps get stuck against case when using column stagger

Keys, 8 and 9 (and 2 and 3) just barely have clearance, and keys F8 and F9 (and F2 and F3) rub and get stuck against the case on a 6th row when column stagger is used.

Suggest enforcing minimum clearance around keys, and forcing outer three columns to fan out slightly at the top to ensure minimum wall thickness is maintained.

dm-red-2tight-clearance

Manuform: fine tune (parametric) column stagger offsets

d-hands

It would be nice to be able to fine tune the column stagger, i think the redox manuform has better (for my hand) pinky, and index finger column staggers, so it would be great to have the option to see the default column staggers, and be able to tweak them.

Supporting Choc switches

Great project!

There is a little change required to support Choc type of switches. Basically the hole is an mx-hole, however the hotswap is a little too "deep".
the depth of the hotswap is about 5mm, I check the code to try to find out where this was happening.
Is this here in the -2.6 ?
https://github.com/ibnuda/dactyl-keyboard/blob/refaktor/src/dactyl_keyboard/common.clj#L280

for a choc switch, the depth should be about 1 mm. so should there be a clause there something like

if use-choc? -1.0 -2.6

One more detail, in case of a choc switch, the column curvature can be much steeper. Up to pi/4 seems reasonable.

JSON Load Button

Just saw that there's now a JSON export button. You possibly planned this already, but I think it would be cool if there was a Load JSON button at the top (in the right column where the defaults like Minidox are presented) that did a prompt("Please enter your JSON Config") which would then get passed to a function that set all the form elements to the contained values.

That, together with the JSON export, would make it really easy to share, modify and test configs (especially in bug reports).


I (re)learned a bit of Javascript recently and came up with this, which works with a flat JSON string like this:

jsonStringToForm('{"thumb-count": "8"}', document.getElementsByTagName("form")[0])

but not with the JSON that's exported, so it still needs some work (if you want to use it):

// LICENSE: public domain

const SIMPLE_FORM_TYPES = new Set(["select-one", "text", "textarea", "number", "range"]);

function isSimpleValueFormElement(el) {
    return SIMPLE_FORM_TYPES.has(el.type);
}

function jsonStringToForm(jsonString, formElement) {
    const obj = JSON.parse(jsonString);
    
    [...formElement.elements].forEach((el) => {
        if (!el.name || !el.value) return;
        
        var val = obj[el.name];
        if (!val) return;
        
        if (el.type === "checkbox") {
            if (Array.isArray(val) && val.includes(el.value)) {
                el.checked = true;
            }
        } else if (isSimpleValueFormElement(el)) {
            el.value = val;
        }
    });
}

Version that works with most of the exported fields

There are couple things that are inconsistent between the form and the exported json which make this harder to implement. In the exported json thumb-count uses spelled out numerals ("eight") but the form's select has numeric <option value="8"> (and so on).

Most of the inconsistencies are name differences:

json export name -> form's field name
columns -> ncols
tenting -> tenting-angle
thumb-tenting -> thumb-tenting-angle
border -> use-border.
external -> external-holder

If these inconsistencies were to be removed, the following should work for all fields (it does work for the other ones):

// LICENSE: public domain

const SIMPLE_FORM_TYPES = new Set(["select-one", "text", "textarea", "number", "range"]);

function isSimpleValueFormElement(el) {
    return SIMPLE_FORM_TYPES.has(el.type);
}

function jsonStringToForm(jsonString, formElement) {
    const obj = JSON.parse(jsonString);
    const objKeys = Object.keys(obj);
    
    [...formElement.elements].forEach((el) => {
        if (!el.name || !el.value) return;
        
        var val = null;
        objKeys.forEach(key => {
            if (!val) {
                val = obj[key][el.name];
            }
        });
        if (!val) return;
        
        if (el.type === "checkbox") {
            if (Array.isArray(val) && val.includes(el.value)) {
                el.checked = true;
            }
        } else if (isSimpleValueFormElement(el)) {
            el.value = val;
        }
    });
}

Dactyl thumb cluster with 8 keys

First of all: Wow, this is one of the most amazing things I've seen in the MK community. Thanks for creating this!

My request is about the thumb cluster. I personally think the thumb cluster is really useful in Dactyl-style keyboards, but my experience with the 2u keys is that they're great, but would basically provide twice the benefit by splitting them up. I usually only hit the top half of the 2u key, so having another key below would be really useful for me. It would also allow for a better thumb curvature to make all the thumb keys easier to reach (similar to what is true for the main keys' curvature).

Marked Dactyl for clarification

(Image source: https://github.com/adereth/dactyl-keyboard/blob/master/README.md)

Manuform: Floating screw insert

manu floating screw 2
manu floating screw

Settings: {"keys":{"columns":6,"rows":5,"thumb-count":"five","last-row":"two","nubs":null,"alps":null,"inner-column":true},"curve":{"alpha":12,"beta":30,"centercol":3,"tenting":8},"connector":{"external":false,"trrs":false,"micro-usb":false},"form":{"hotswap":true,"stagger":true,"wide-pinky":false,"height-offset":8,"wire-post":false,"screw-inserts":true},"misc":{"keycaps":false,"wrist-rest":true,"integrated-wrist-rest":false,"right-side":true,"case":true}}

Manuform with Lightcycle thumb cluster

Edit: Of course, a Lightcycle with thumbcluster angled like Manuform would be just as cool

While I'm personally not a fan of Manuform's spaced out thumb key positions (too far away imo), I really like the thumb cluster angle. It makes a lot of sense since, of course, our thumbs are opposable.

So I think something like the following could be interesting (especially with #14):

manuform DMOTE 4 mockup

Older mockup:

manuform cycle: old mockup

(Image source: http://blog.pzs.me/posts/dactyl-manuform-log/index.html)

Manuform: trim case for loligagger's external holder

it's relatively easy to trim the loligagger's external holder print to fit in the case, but one side of the holder can't be cut enough because of the pcb location. It would be great if the model was adjusted for this :)

trim-for-external-holder-tray

Feature request: adjust altitude of the 5 mini thumb cluster

The five key "mini" thumb cluster has enough space underneath the keys that it could be lowered by up to 1cm without the wires underneath bumping the bottom. Could you add parameter to allow the thumb cluster to sit lower down? (closer to the baseplate).

Lightcycle: Option for wall thickness

If not too time consuming, I think it would be cool to have a thickness option for the wall, to give the lightcycle an even sturdier feel.

Comparision at the same zoom level
lightcycle v manuform wall thickness 1

lightcycle v manuform wall thickness 2

add preview render

i think someone else mentioned this, but there doesn't appear to be an issue / feature request for integrating a https://openjscad.org/ view somewhere on the page

Add support for showing a preview of the design which stays on the page to support the user with the following series of tasks:

  1. select a default
  2. preview default design
  3. update some parameters such as number of columns, or removing pinky bottom row, etc.
  4. see updated render
  5. tweak some more things to see what they do
  6. see updated render
  7. tweak final settings to get it just right
  8. finally happy with updated render
  9. download .scad file to export to stl for printing

maybe the openjscad would only be good for giving an "x-ray" type of preview for how different angle, row, tenting parameters affect on key switch placement, but it seems like it would still be a nice to have feature
Screenshot 2020-07-05 13 41 41

Dactyl Lightcycle: Some supports are missing

Using the default configuration on the web UI (except for the cutouts of the stabilizers that I enabled), I generated the following shape and it appears that some parts of the support connecting the wall to the plate are missing (pointed out by the arrows).

Screenshot 2020-04-15 at 21 41 00

I'm pretty sure that the one in the middle is missing but I don't know about the one on the right and the one on the left.

Manuform: parametric column curvavture

this builds off of (/ would work well in combination with) issue #34

d-hands

i would like to have the (parametric?) option for tighter radius column curvature for pinky, and possibly index fingers, simply shifting things down with different column stagger is only half the solution since then the lower pinky and index fingers would then be harder to reach (for me), so in addition to #34 where the top of the column could be adjusted closer for some fingers, the overall curvature would need to be updated so the relative position of the lowest row for the pinky and index finger doesn't really move

JSON export broken for thumb cluster rotation

The JSON export for thumb cluster rotation is broken. The params don't appear correctly in the export. If you try to import one of your export, the X, Y, Z rotation won't appear.

I'm just putting this here in order not to forget.
If no one gets to it before me, I should have time in a week or 2 to handle it.

Manuform export doesn't work for all fields

After changing every field, so the config looks like this:

e

This was exported

{"keys":{"columns":4,"rows":3,"thumb-count":"four","last-row":"zero","switch-type":"alps","inner-column":true},"curve":{"alpha":14,"beta":30,"centercol":1,"tenting":11},"connector":{"external":false,"trrs":false,"micro-usb":false},"form":{"hotswap":true,"stagger":true,"wide-pinky":true,"height-offset":10,"wire-post":true,"screw-inserts":true},"misc":{"keycaps":true,"wrist-rest":false,"integrated-wrist-rest":true,"right-side":false,"case":true}}

None of the "connector" entries ("micro-usb" etc.) match and the "stagger" should be false.

Add part description suffix to filename

It would also be very helpful to have the filename suffixed with the part description, like "Left", "Right", "Plate"

For example

manuform-left-2020.07.09-02.37.23.scad
manuform-right-2020.07.09-02.37.19.scad
manuform-plate-2020.07.09-02.36.45.scad

Generate / Download all option

An Download all option that generates and zips plate, case, json for one or both sides could be really useful and save a lot bandwidth (and thus speed up the download), though, depending on how often people use it, could have the downside of increasing workload.

The .scad files compress really well, since they contain loads of repeated text. (Zipping a 4004 KiB scad file resulted in a 76 KiB zip, so a 98% reduction.)

It would be especially useful since you'd end up with one directory where all the .scad files and the complementary .json configuration are stored.

timestamp filenames when using generate button

relying on the OS / Browser to increment manuform(#).scad isn't that great if you want to keep track of a couple of different models, particularly if you start to move one or two of them out of the downloads folder.

Renaming each after generating it can quickly get tedious, so something like manuform-utc-yyyy-mm-dd-hh-mm-ss.scad would help give unique filenames with the timestamp of when they were generated

Manuform: Import doesn't set all fields

Haven't tested this for Lightcycle, but there seem to be more problems with the import. Just noticed that my current config was missing a lot of settings on import.

What I imported:

{"keys":{"columns":6,"rows":5,"thumb-count":"five","last-row":"two","switch-type":"box","inner-column":false,"hide-last-pinky":false},"curve":{"alpha":12,"pinky-alpha":8,"beta":18,"centercol":3,"tenting":6},"connector":{"external":false,"trrs":true,"micro-usb":false},"form":{"stagger-pinky-y":-12.0,"hotswap":true,"stagger-index-y":0.0,"wire-post":true,"stagger":true,"stagger-ring-z":0.0,"stagger-middle-z":-4.5,"screw-inserts":true,"stagger-middle-y":2.8,"height-offset":16,"wide-pinky":false,"stagger-index-z":0.0,"stagger-ring-y":0.0,"stagger-pinky-z":4.0},"misc":{"keycaps":true,"right-side":true,"case":true}}

What was set and later exported:

{"keys":{"columns":6,"rows":5,"thumb-count":"five","last-row":"two","switch-type":"box","inner-column":false,"hide-last-pinky":false},"curve":{"alpha":12,"pinky-alpha":8,"beta":18,"centercol":3,"tenting":6},"connector":{"external":false,"trrs":true,"micro-usb":false},"form":{"stagger-pinky-y":-13.0,"hotswap":false,"stagger-index-y":0.0,"wire-post":false,"stagger":true,"stagger-ring-z":0.0,"stagger-middle-z":-6.5,"screw-inserts":false,"stagger-middle-y":2.8,"height-offset":4,"wide-pinky":false,"stagger-index-z":0.0,"stagger-ring-y":0.0,"stagger-pinky-z":6.0},"misc":{"keycaps":false,"right-side":true,"case":true}}

Diff:

Screenshot_20200711_182402

Lightcycle: Borderless version

First of all thank you for adding it! It's cool to have that option on the Lightcycle.

lightcycle

I think this design would be improved a lot by smoothing the ledge (marked below in blue), since currently it is standing out somewhat. As far as I can see, the reason why the floating key design looks good is the fact that there's barely anything that distracts from the keys themselves.

lightcycle2

By "smoothing the ledge" I mean to create a relatively smooth transition from key area to the wall that goes toward the bottom as is the case in the Dactyl Manuform:

manuform


There's a "dot" at the front when disabling the border:

dot 2

dot 1

The settings are the same as previous post but border is set to false.

Sometimes connector tray not fully connected

Untitled

Could be unrelated, but I think this happens mostly when "Center of the curvature for the column" is pinky or ring finger.

{"keys":{"columns":6,"rows":5,"thumb-count":"five","last-row":"two","switch-type":"box","inner-column":false,"hide-last-pinky":false},"curve":{"alpha":12,"pinky-alpha":8,"beta":18,"centercol":3,"tenting":6},"connector":{"external":false,"trrs":true,"micro-usb":false},"form":{"stagger-pinky-y":-12.0,"hotswap":true,"stagger-index-y":0.0,"wire-post":true,"stagger":true,"stagger-ring-z":0.0,"stagger-middle-z":-4.5,"screw-inserts":true,"stagger-middle-y":2.8,"height-offset":16,"wide-pinky":false,"stagger-index-z":0.0,"stagger-ring-y":0.0,"stagger-pinky-z":4.0},"misc":{"keycaps":true,"right-side":true,"case":true}}

Small plane intersecting with switch area

At first I thought it was a result of bringing the thumb area closer (which I really like), but it seems to come from the thumb area:

lightcycle intersect n1

lightcycle intersect n2

alternate angle:

lightcycle intersect n3
lightcycle intersect n4

from above:

lightcycle intersect n5

Settings:

{"keys":{"columns":6,"num-row":true,"last-row":true,"thumb-count":"eight"},"curve":{"alpha":12,"beta":30,"tenting":7,"thumb-alpha":12,"thumb-beta":9,"thumb-tenting":-5},"connector":{"external":false},"form":{"hotswap":true,"thumb-offset-x":44,"thumb-offset-y":45,"thumb-offset-z":27,"z-offset":20,"manuform-offset":true,"border":true},"misc":{"right-side":true,"screw-inserts":true}}

Screenshot of settings

Manuform: Thumb curvature

I'm starting to like the Manuform design more and more, so I'd love to have an option for thumb curvature there as well (blue line to indicate a curvature that seems more optimal to me):

manu curve 2e

Manuform: Gapless 7-key thumb cluster

Having looked a bit into the source code (without Clojure knowledge), the thumb cluster of the Manuform is more hard-coded than the Lightcycle, which seems to make #28 very time consuming to implement.

Additionally, changing the curvature of the thumb cluster doesn't fully address a problem that I feared and have now seen in a lot of reviews / comments (e.g. 1, 2, 3, 4): the outer thumb keys being hard to reach.

As far as I can see, this is partially a result of the downward curvature (instead of upward) and the horizontal rotation of keys, which requires gaps and increased distance so that keycaps don't touch.

So, it seems that something like the following 7-key layout would be really useful to have:

Screenshot_2020-06-28 Keyboard Layout Editor cut 2

The ones marked with (tented) would be tented toward the center of the two leftmost keys, to make them easier to reach. It would look kind of like this when looking down from above the 1 key:

drawing svg

(the outer column would be tented the same amount towards the middle column, as the middle column is tented towards the leftmost column)

The reason for the shift in the last column is that this keeps much of the optimal curve (marked in green here) from Minidox and other Manuform thumb clusters:

untitled3 curve

And here's the layout added on top of the Manuform layout (just for fun):

untitled2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.