{"id":23978495,"url":"https://github.com/simmsb/rusty-dilemma","last_synced_at":"2025-06-10T23:36:55.043Z","repository":{"id":156843591,"uuid":"628299368","full_name":"simmsb/rusty-dilemma","owner":"simmsb","description":"Firmware for the Dilemma (or really any rp2040 split keyboard) written in Rust","archived":false,"fork":false,"pushed_at":"2024-09-22T16:32:13.000Z","size":530,"stargazers_count":25,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-21T02:14:17.580Z","etag":null,"topics":["embassy","firmware","keyboard","keyboard-firmware","rust","split-keyboards"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simmsb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-15T14:16:13.000Z","updated_at":"2025-03-29T09:12:50.000Z","dependencies_parsed_at":"2024-09-05T20:38:47.395Z","dependency_job_id":"aae857ee-3221-4bf0-844e-d52d35290f35","html_url":"https://github.com/simmsb/rusty-dilemma","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Frusty-dilemma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Frusty-dilemma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Frusty-dilemma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Frusty-dilemma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simmsb","download_url":"https://codeload.github.com/simmsb/rusty-dilemma/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Frusty-dilemma/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259171850,"owners_count":22816510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["embassy","firmware","keyboard","keyboard-firmware","rust","split-keyboards"],"created_at":"2025-01-07T08:18:23.662Z","updated_at":"2025-06-10T23:36:54.979Z","avatar_url":"https://github.com/simmsb.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust firmware for the [dilemma v2](https://github.com/Bastardkb/Dilemma) keyboard\n\nhttps://github.com/simmsb/rusty-dilemma/assets/5330444/2e6345b6-a52b-436a-b9c9-535a1fc93490\n\nRusty dilemma is firmware for the Dilemma v2 split keyboard written in Rust\nusing the Embassy framework.\n\nThis firmware does a fair amount of 'fun' things such as supporting an external\ndisplay (and using the awesome Slint GUI library to do the drawing (and\nanti-aliased fonts are nice)), also the per key rgb animations are pretty damn\npretty in my opinion :)\n\n## Layout\n\n![Default Layout](layouts/rusty-dilemma.svg)\n\n## Features\n\n- Normal keypresses, mod taps, layers, chords, mouse keys\n- Cirque trackpad support, with support for using it to scroll\n- Some pretty neopixel animations (that sync between sides, and transition smoothly)\n- Support for a st7789 display, using slint to render the UI\n- Single firmware binary, everything works no matter which side is plugged in\n- Double tapping the update button puts the mcu into dfu mode\n- The device pretends to be a RP Pico and supports being put into DFU mode by\n  `picotool`\n\n## Building\n\nYou'll need cargo and picotool installed\n\n- `cargo build --release -Zbuild-std=core,alloc,panic_abort -Zbuild-std-features=panic_immediate_abort`\n  + It's fine to use just `cargo build --release` here, the extra parameters just make the binary a bit smaller.\n- `picotool load -f ./target/thumbv6m-none-eabi/release/boot`\n  + The bootloader only needs flashing the first time\n- `picotool load -f ./target/thumbv6m-none-eabi/release/binary`\n- `picotool reboot`\n\n(You can use either the nix flake or install picotool yourself)\n\n## Keymaps\n\nYou can use https://github.com/simmsb/keylayout to generate key layouts (and\nalso generate previes of them), check out the [one I use](layouts/rusty-dilemma.kl)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimmsb%2Frusty-dilemma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimmsb%2Frusty-dilemma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimmsb%2Frusty-dilemma/lists"}