{"id":15164682,"url":"https://gitlab.com/evils/waad","last_synced_at":"2025-10-25T07:30:53.115Z","repository":{"id":61342270,"uuid":"19740907","full_name":"evils/waad","owner":"evils","description":"Getting my feet wet on keyboards,\r\neen voor de hand liggend project.","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":null,"default_branch":"main","last_synced_at":"2025-01-31T06:11:39.787Z","etag":null,"topics":["capacitive","dvorak","keyboard","plover","qwerty","steno","stenography","touch"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cern-ohl-w-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":null,"metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-03T09:22:16.844Z","updated_at":"2022-05-24T00:47:08.746Z","dependencies_parsed_at":"2022-10-15T11:14:36.647Z","dependency_job_id":null,"html_url":"https://gitlab.com/evils/waad","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/evils%2Fwaad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/evils%2Fwaad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/evils%2Fwaad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/evils%2Fwaad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/evils","download_url":"https://gitlab.com/evils/waad/-/archive/main/waad-main.zip","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4517626,"owners_count":6744,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2024-07-18T11:24:13.055Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"keywords":["capacitive","dvorak","keyboard","plover","qwerty","steno","stenography","touch"],"created_at":"2024-09-27T03:43:07.729Z","updated_at":"2025-10-25T07:30:46.482Z","avatar_url":null,"language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"= waad steno keyboard\nEvils \u003cevils.devils@protonmail.com\u003e\n:homepage: https://gitlab.com/evils/waad\n:license: CERN-OHL-W-2.0\n:keywords: steno, stenography, capacitive, touch, keyboard, plover, dvorak, qwerty\n:toc2:\n:sectanchors:\n:sectlinks:\n\n== Requirements\n=== Hardware\n* split unit from one 100x100mm PCB\n* capacitive touch keys\n* at least 22 keys for steno\n* micro sd card slot\n* all solder joints reworkable with iron\n* at least 1 RGB status LED\n\n=== Software\n* output over USB as a HID\n* raw key press output option\n\n== Problems\n* a chord consists one or more keys, possibly pressed by the same finger\n** includes pressing multiple keys in a column\n*** and pressing 2-4 of the outer pads at once (`H-*`, `-TD`, maybe `-TSDZ`)\n* a word, phrase or character is a value in a dictionary the key for which being a sequence (length 1 to at least 11) of chords\n* there are implicit rules (in plover) for appending common suffixes (like 'ing' or 's' for pluralization) to dictionary entries\n* keeping the dictionary on the chip is not practical, external RAM could work, but price (and loading time?) rule that out\n\n== Approaches\n=== Hardware\n==== Mechanical\n* 100x100mm PCB (plus some compensation for the milled slot if the manufacturer allows it)\n* single sided load\n** USB type C on the bottom of one (left?) half\n*** requires feet high enough to clear the cable\n*** rules out through hole mechanical pins?\n** interconnect, capacitive sense chip(s) and (minimal) MCU on top on the other half\n* homing\n** notch at the edge between the thumb pads as a resting spot\n*** leave complementary bump at pinky?\n*** these may need a dead zone / cut corners, to allow resting\n** crosses/blobs of silicone on the nodes may help to detect a near miss\n*** if these are thick enough, and the signal of a normal touch large enough, they may be a dead zone and allow for resting and dead reckoning\n**** cutting corners under these may help\n*** `-TSDZ` may also be needed, prefer not to make that a dead zone / resting position\n\n=== Electrical\n\n=== Software\n* expand dictionary to make suffix rules etc. explicit\n* retrief dictionary entries at decode time from sd card\n\n== Rev 0 goals\n* try out an MCU with integrated cap touch sensing\n* try out USB Type C\n* try out microSD card\n* try out a recent board/pad design\n** try at least the \"dumb\" row split (straight line, no interdigitation)\n*** maybe try out {tilde}3mm truncated zigzag interdigitation with minimal clearance (0.2mm?)\n** feel the thumb notch on a 1.6mm board on rubber feet\n* try 20% hatched and solid ground fill behind pads\n* trial having the MCU under pads\n* find out if routing sense traces under pads is a problem\n\n== Wanted Features\n=== Hardware\n* all components on top of both halves, to lay flat\n** not possible with skewed split from 1 PCB\n*** 2x left from 1 PCB, 2x right from 1 PCB would work\n**** may still lack board area\n* fallback to microswitches, if pad design and sensing allow it\n\n=== Software\n* multiple optional filter definitions\n. map from available hardware pads (board specific naming) to something standardized\n*** 22-32 capacitive pads to 22 steno keys or to qwerty/dvorak/whatever\n. map chords to words\n*** steno decompression / lookup in an (expanded) dictionary\n. map words to an output format\n*** to allow dealing with host side remapping (dvorak on qwerty main keyboard)\n* \"paper\" output (display at least the buffered chords)\n** separate output, maybe an emulated serial port? (mirror on hardware?)\n* dotterel style sticky keys to build up a chord\n* keep steno and qwerty keyboard connected to a PC set to remap qwerty to dvorak and use either without reconfiguring the PC\n* steno standard output like `Gemini PR` or `TX Bolt`\n* near infinite undo\n* usage statistics\n** error statistics\n** problem: passwords\n* fallback to raw output when sd card is missing\n\n=== Both\n* use either side standalone\n* break out pins for PS/2 touchpad/trackpoint and/or GPIO\n* break out pins for a display for the \"paper\" output\n* DIP switches / solder blob programming\n** 2 bits to set e.g.: `qwerty / no / azerty / dvorak` HID output\n*** to compensate for what the receiving device expects\n** 2 bits to set `60% emulation / steno / raw / arbitrary` pad to keystroke mapping\n** 1 bit power switch\n** 1 bit for firmware flashing or recovery\n** 1 user bit\n\n== Speculation\n* quick estimate, 1M entries per language, 500 bytes per entry, 4 languages (and assuming none of these have any chords in common) and a doubling in size after pre-digesting to apply `-ing`, `-s`, etc rules\n** that's 4gb, 32gb microsd card is \u003c €10\n* longest combo in the plover supplied dictionary is 11 chords (allow for at least 20?)\n* a chord is defined by the keys pressed within the span of the first key being pressed pressed and the last being released?\n** finger repositioning should be possible, especially with capacitive sense\n** keys that were pressed some time before all are released\n\n== Notes\n* IME (Input Method Editor) is a portable OS native path to implementing the translation\n\n== Copyright and License\nThis work is: +\nCopyright 2020, evils. +\nLicensed under CERN-OHL-W v2 +\n(SPDX identifier: {LICENSE}) +\nSource Location: {homepage} +\n(Please keep that link available if you modify this work.)\n\n== Links\n=== Hardware\n* {homepage}\n** this project, experimental unrealized hardware\n* https://www.st.com/en/microcontrollers-microprocessors/stm32f072rb.html\n** all the touch related Application Notes in the resources\n* Microchip, Renesas, Cypress, Semtech all have touch related ANs, i may link some here if i read any and find them useful\n\n=== Software\n* https://github.com/crides/steno\n** reuses some stuff from dotterel\n** expands dictionary with rules, collapses it to a tree\n** runs on a 32u4 with an sd card, bottlenecked on output to computer\n** dedicated hardware included\n* https://github.com/nimble0/dotterel\n* https://github.com/mike-ady/Stenokey\n* https://github.com/StarGazer1258/Charadriidae\n** a steno engine written in C from scratch\n* https://github.com/CharleyShattuck/myforth-arduino\n* https://github.com/stanographer/plover-pi/blob/master/plover_raspbian.sh\n* https://github.com/FromtonRouge/qmk_firmware/tree/master/users/fromtonrouge\n** uses several regex rulesets\n* https://www.mykeyboard.co.uk/keyswitches/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fevils%2Fwaad","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2Fevils%2Fwaad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fevils%2Fwaad/lists"}