{"id":13434649,"url":"https://github.com/nickcoutsos/dactyl-deskmount","last_synced_at":"2026-02-22T02:04:12.733Z","repository":{"id":65494802,"uuid":"266657632","full_name":"nickcoutsos/dactyl-deskmount","owner":"nickcoutsos","description":"A dactyl inspired ergonomic keyboard attached to the front of my desk for a lower profile and more desk space.","archived":false,"fork":false,"pushed_at":"2020-07-18T16:12:28.000Z","size":4189,"stargazers_count":73,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-24T08:13:00.311Z","etag":null,"topics":["dactyl","ergonomic-keyboard","low-profile","split-keyboard"],"latest_commit_sha":null,"homepage":null,"language":"OpenSCAD","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nickcoutsos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-25T01:38:29.000Z","updated_at":"2025-06-19T07:01:20.000Z","dependencies_parsed_at":"2023-01-26T04:31:48.173Z","dependency_job_id":null,"html_url":"https://github.com/nickcoutsos/dactyl-deskmount","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nickcoutsos/dactyl-deskmount","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickcoutsos%2Fdactyl-deskmount","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickcoutsos%2Fdactyl-deskmount/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickcoutsos%2Fdactyl-deskmount/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickcoutsos%2Fdactyl-deskmount/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickcoutsos","download_url":"https://codeload.github.com/nickcoutsos/dactyl-deskmount/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickcoutsos%2Fdactyl-deskmount/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29703260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T23:35:04.139Z","status":"online","status_checked_at":"2026-02-22T02:00:08.193Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dactyl","ergonomic-keyboard","low-profile","split-keyboard"],"created_at":"2024-07-31T03:00:19.710Z","updated_at":"2026-02-22T02:04:12.677Z","avatar_url":"https://github.com/nickcoutsos.png","language":"OpenSCAD","funding_links":[],"categories":["Models"],"sub_categories":["Dactyl"],"readme":"# dactyl-deskmount\n---\n![dactyl-deskmount.jpg](outputs/finished-product/dactyl-deskmount.jpg \"Dactyl and desk mounting hardware\")\n\n_[(3D Preview of assembled keyboard)](outputs/preview.stl)_\n\n_[(More photos of the finished product)](outputs/finished-product/)_\n\n## Goal\n\nEssentially, make a variant of the [dactyl-keyboard] that doesn't impose\nsignificant extra height above my desk surface.\n\nI previously designed and built the \"[dactyl-flatpacked]\", a Dactyl made from\nslotted acrylic pieces instead of 3D printed, and ended up loving the keyboard.\nLike most non-planar keyboards it has an issue with overall height. The lowest\nrow requires my wrist/palm needs to clear around 4cm, and unfortunate\ncombinations of desk-chair-user height can exacerbate things. Ultimately it has\ntaught me to properly float my wrists while typing, but I still wanted to see\nwhat else could be done.\n\nAnother goal I had was to have a pure and simple OpenSCAD version of the dactyl\nthat wouldn't require the complexity of compiling and executing Clojure to\ngenerate unreadable OpenSCAD code. This part started out pretty well but over\ntime I got tired of limitations around code organization and stopped trying so\nhard to keep features modular while still having something aesthetically\npleasing.\n\nI still stand by working directly in OpenSCAD, but if I were to start\nover or dedicate significant time to refactoring I would look into more of the\ncommunity OpenSCAD libraries for things like generating hulls from profiles\ninstead of mimicking triangle hulls and such that I saw in the origin dactyl\ncode.\n\n\n## Inspiration\n\nThrough the mechanical keyboard subreddit I came across a couple of keyboard\nmounting designs that helped me see the possibility of using ball-and-socket\nmounts.\n\n**ElliotCable: [Ergovox]**\n\nThis ergodox keyboard uses RAM mounts screwed into the bottom of a standing desk\nallowing for a fully vertical (or any angle, really) keyboard orientation.\n\n**Martin Körner: [Georgi stand with trackball]**\n\nThis georgi uses ball camera mounts attached to a tripod, removing the desktop\nfrom the equation altogether. With the tripod you can precisely control height\nand the trackball mount is a nice bonus as well.\n\n\n## Design Considerations\n\n**Desk mounted via clamps**\n\nThe tripod stand is cool but I work at a desk. Unfortunately when I'm in the\noffice it isn't my desk so stability is sacrificed to avoid drilling holes.\n\n\n**Camera ball mounts**\n\nI don't want to go to all the trouble of building a keyboard only to wonder if a\nsteeper tenting angle would be better. I also get to control the pitch and yaw\nif I like. I had a lot of misgivings about this. Ideally it would be positioned\nso that the majority of the the force put into the keyboard goes straight\nthrough the ball to avoid torque causing the ball to slip.\n\nUnfortunately putting the ball mount directly underneath my hand would take up\nroom underneath the keyboard and cause problems for the sitting position. I made\nthe concession of offsetting the mount a little with the hope that by the time I\nbegin to see obvious slippage I will have found an angle I like and print static\narms to clamp onto my desk. Worst case scenario, I can print a more traditional\nbase and use the keyboard on my desktop like an animal.\n\n**Keycaps and layout**\n\nI use choc low-profile switches because I had them leftover from an earlier\niteration I didn't end up liking. I designed and printed custom variations of\nthe 2u keycaps (because, quite simply, I like the Dactyl's thumb cluster) and\ndeep-dished homing keycaps.\n\nThe same positioning algorithm from the original Dactyl is used but with a\nslight outward pivot of the pinky columns, and removed keys:\n\n* no number row because I hate it\n* pinky keys removed from row 4\n\nWere I a braver person I would remove even more keys (the entire pinky columns)\nand learn to love QMK combos but I never properly made sense of the config\noptions like `PERMISSIVE_HOLD` and `IGNORE_MOD_TAP_INTERRUPT` which made for a\nbad experience in the past.\n\n**LEDs**\n\nI want to have visual indicators for things like Caps Lock (because I find caps\nlock useful) and potentially notifications pushed from the host via Raw HID.\nAdmittedly I do think a few subtle lights can add to the keyboard's aesthetics.\n\n\n## Mounting hardware\n\n* 3d printed desk clamps\n  * I include a cutout for 1/4\"x5/16\" tee-nut.\n  * a 1/4\"-20 x 1 1/4\" hex bolt (with 3d printed knob and swivel plate) are used\n    for tightening.\n* 1/4\" ball mount (I used a [ball mount tripod adapter] from AliExpress)\n  * This attaches to my 3d printed clamp via a couple of m4 screws\n* 3d printed keyboard bottom mount attached to the top of the ball mount via\n  another tee-nut.\n    * at the beginning I set out to use heat-set inserts like I've seen on many\n      other projects but couldn't find a source for the right kind in a useful\n      quantity.\n    * I'm finding tee-nuts to be incredibly useful in 3d printed projects when I\n      want to securely fasten things to a single screw.\n* 3d printed keyboard plate attaches to 3d printed mount via m3 screws.\n  * the design uses three m3 mounting holes on the keyboard plate matching up\n    with three holes on the mount (one on the far edge of the thumb cluster and\n    two at the top and bottom of the index finger column).\n  * there are two more unused screw holes on the pinky finger column in case I\n    want to re-design a more robust bottom mount.\n* another 3d printed mount hanging underneath the thumb cluster holds a 24-pin\n  wide IC socket for the pro micro controller. Ribbon cables conned the socket\n  pins to the keyboard matrix and TRRS socket. A stripped micro USB connector\n  connects from a sturdier micro USB socket breakout board to the pro micro.\n\n\n## Pre-rendered parts\n\nAll printable pieces are pre-rendered (for my specific setup) and available in\n[outputs/pre-rendered/](outputs/pre-rendered):\n\n* [bottom-mount](outputs/pre-rendered/bottom-mount.stl)\n* [choc-keycap-1u](outputs/pre-rendered/choc-keycap-1u.stl)\n* [choc-keycap-1u-index](outputs/pre-rendered/choc-keycap-1u-index.stl)\n* [choc-keycap-2u](outputs/pre-rendered/choc-keycap-2u.stl)\n* [clamp-knob](outputs/pre-rendered/clamp-knob.stl)\n* [clamp-swivel-plate](outputs/pre-rendered/clamp-swivel-plate.stl)\n* [led-diffuser](outputs/pre-rendered/led-diffuser.stl)\n* [plate](outputs/pre-rendered/plate.stl)\n* [socket-mount](outputs/pre-rendered/socket-mount.stl)\n* [table-hook](outputs/pre-rendered/table-hook.stl)\n\n\n[dactyl-keyboard]:https://github.com/adereth/dactyl-keyboard/\n[dactyl-flatpacked]:https://github.com/nickcoutsos/dactyl-flatpacked/\n[Georgi stand with trackball]:https://stenoblog.com/georgi-stand-with-trackball/\n[Ergovox]:https://www.reddit.com/r/MechanicalKeyboards/comments/8ib8pi/something_a_little_different_the_ergovox/\n[ball mount tripod adapter]:https://www.aliexpress.com/item/4000183944867.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickcoutsos%2Fdactyl-deskmount","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickcoutsos%2Fdactyl-deskmount","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickcoutsos%2Fdactyl-deskmount/lists"}