{"id":6419,"date":"2026-07-16T06:40:02","date_gmt":"2026-07-16T06:40:02","guid":{"rendered":"https:\/\/www.voodoo.business\/blog\/?p=6419"},"modified":"2026-07-16T06:41:18","modified_gmt":"2026-07-16T06:41:18","slug":"hid-proxy-voodoo-3","status":"publish","type":"post","link":"https:\/\/www.voodoo.business\/blog\/2026\/07\/16\/hid-proxy-voodoo-3\/","title":{"rendered":"HID Proxy Voodoo"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">A small device to help people build the things that don&#8217;t exist yet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is a frustrating category of inventions that nobody builds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not because they are bad ideas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not because they are impossible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Simply because the number of people who need them is too small.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are making a product for millions of people, development costs can be spread across a large market.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But what if the thing you want to build is for a few hundred people?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or ten?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or one?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is especially true in accessibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A person may need a very specific input device because of a particular disability, a particular activity, or simply because the commercially available options do not fit their needs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The problem is not always engineering.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes the problem is that every single one of these devices starts from zero.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Someone has to solve USB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Someone has to write firmware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Someone has to design electronics.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Someone has to build prototypes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And all of that happens before anyone even knows whether the idea works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I think this is backwards.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What if experimenting was cheap?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine you have an idea for a completely new controller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not a normal keyboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not a normal mouse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Something that does not exist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe it is a wooden mechanism with a few switches.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe it uses a potentiometer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe it is built from parts found in a workshop.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe it looks ridiculous.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is exactly how many good ideas start.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A piece of wood.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A few screws.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A sensor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A crazy thought.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The problem is that turning that crazy thought into something a computer understands usually requires a lot of knowledge that has nothing to do with the actual invention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You shouldn&#8217;t need to become a USB expert just to answer a simple question:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Does this idea work?&#8221;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The idea behind the HID Proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The concept is simple:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create a hardware platform that sits between the physical world and the computer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A device that understands human input devices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A device that can combine, translate, and create new inputs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of building a new USB device from scratch every time, use a flexible platform that already handles the difficult parts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first version is based around ESP32-S3 and STM32 microcontrollers and is designed around three main ideas:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Accept existing HID devices<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Connect things like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>keyboards<\/li>\n\n\n\n<li>mice<\/li>\n\n\n\n<li>game controllers<\/li>\n\n\n\n<li>joysticks<\/li>\n\n\n\n<li>steering wheels<\/li>\n\n\n\n<li>pedals<\/li>\n\n\n\n<li>switches<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">and use them as building blocks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Create new HID devices<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Take simple electronics:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>buttons<\/li>\n\n\n\n<li>potentiometers<\/li>\n\n\n\n<li>sensors<\/li>\n\n\n\n<li>custom mechanisms<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">and turn them into devices the computer already understands.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A homemade controller should not require a homemade USB stack.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Manipulate and combine inputs<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes the interesting device is not a single input.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe a joystick and some buttons need to become a completely different controller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe two devices need to work together.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe a non-standard interface needs to control a standard computer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The hardware should be the easy part.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why accessibility?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This project started as a general-purpose idea, but accessibility is where I think it has the strongest purpose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The smaller the target group, the harder it becomes to justify development costs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A company can spend thousands designing a product for millions of users.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But who funds a device needed by twenty people?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or a device needed by a small group with a rare condition?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Those ideas often disappear, not because they are bad, but because the economics make them impossible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the cost of experimentation becomes low enough, more of those ideas can exist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the goal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not to replace professional medical equipment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not to pretend one board can solve every accessibility challenge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Simply to make it easier for people with good ideas to test them.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">But isn&#8217;t this just a maker board?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An engineer or hobbyist should absolutely be able to keep one of these in their toolbox.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The same way someone keeps an Arduino, a multimeter, or a breadboard nearby.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not every experiment becomes a product.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most don&#8217;t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is fine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The purpose of experimentation is not that every idea succeeds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The purpose is making failure cheap enough that people are willing to try.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The software side<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are many possible ways to use the platform.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A beginner might connect a few components and use a simple scripting language such as Lua.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy a small example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change a few numbers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Test an idea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A more experienced developer might replace parts of the firmware completely.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Someone else might only use the hardware design as a foundation for their own project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I don&#8217;t think there should be one &#8220;correct&#8221; way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The platform should disappear into the background and let people focus on the thing they are actually trying to build.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why am I building this?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the part where I am supposed to write something inspirational.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I could say that I have always dreamed of changing lives.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That would not be completely false.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I do want this project to have a positive impact.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But the real answer is more complicated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I like making things.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I like the moment when an idea stops being an idea and starts moving.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A machine doing something because I imagined it and built it is still one of the most satisfying feelings I know.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Somewhere along the way, that feeling became weaker.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While thinking about why, I came across research around the overjustification effect\u2014the idea that external rewards can sometimes replace the internal motivation that made you enjoy something in the first place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I do not think that explains everything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But I think it explains part of it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This project started because I was working on something else, only to discover that the thing I was building already existed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normally that means the project goes into a drawer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead, I looked at all the work already done:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The research.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The designs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ideas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The piles of pseudocode.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And I asked:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;What if this effort becomes a tool that helps other people build things?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe that is a better destination.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Quality matters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One thing I want to make very clear:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not meant to be a &#8220;quick hack that works sometimes.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For accessibility especially, reliability matters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A clever prototype is interesting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A device someone depends on is something else entirely.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I do not want to cut corners simply because something works in a demonstration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The objective is not just flexibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is flexibility built on a reliable foundation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Where does this go?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Honestly?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I don&#8217;t know yet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some parts will likely become open source.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some parts may take more time, especially anything involving networking and security.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A device that controls a wheelchair, communication system, or another important tool deserves careful consideration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Open&#8221; and &#8220;secure&#8221; are both important goals, and sometimes they require difficult decisions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The hardware will evolve.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The software will evolve.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The community around it\u2014if one forms\u2014will probably influence it in ways I cannot predict.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How can you help?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">At this stage, the biggest challenge is simple:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Building hardware costs money.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prototype boards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Components.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Manufacturing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The boring things that are absolutely necessary before the interesting things can happen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you believe this idea is worth exploring, support can take many forms:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sponsorship.<\/li>\n\n\n\n<li>Technical feedback.<\/li>\n\n\n\n<li>Testing.<\/li>\n\n\n\n<li>Sharing the project with someone who may benefit.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The goal is not to build one product.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The goal is to make it easier for people to build the products that do not exist yet.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Final thoughts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I don&#8217;t know if this will become a commercial product.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I don&#8217;t know if it will become a widely used platform.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But I do know this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are people with ideas that never become reality because the first step is too expensive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If this project can remove some of that first barrier, then it will have been worth building.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And honestly\u2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;If this platform saves someone from spending three weeks writing USB firmware just to test an idea, then it has already justified its existence.&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A small device to help people build the things that don&#8217;t exist yet There is a frustrating category of inventions that nobody builds. Not because they are bad ideas. Not because they are impossible. Simply because the number of people who need them is too small. If you are making a product for millions of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[110,89,109,105,230,231,9],"tags":[],"class_list":["post-6419","post","type-post","status-publish","format-standard","hentry","category-arduino","category-diy-electronics","category-esp32","category-espressif","category-mcu","category-mpu","category-pc-hardware"],"_links":{"self":[{"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/posts\/6419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/comments?post=6419"}],"version-history":[{"count":2,"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/posts\/6419\/revisions"}],"predecessor-version":[{"id":6421,"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/posts\/6419\/revisions\/6421"}],"wp:attachment":[{"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/media?parent=6419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/categories?post=6419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.voodoo.business\/blog\/wp-json\/wp\/v2\/tags?post=6419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}