element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Embedded and Microcontrollers
  • Technologies
  • More
Embedded and Microcontrollers
Blog DexoPad — phone-as-keyboard-and-mouse for any USB host (ESP32-S3 + BLE, on Kickstarter)
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Embedded and Microcontrollers to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: Mengjie
  • Date Created: 28 May 2026 5:16 PM Date Created
  • Views 96 views
  • Likes 2 likes
  • Comments 2 comments
  • esp32-s3
Related
Recommended

DexoPad — phone-as-keyboard-and-mouse for any USB host (ESP32-S3 + BLE, on Kickstarter)

Mengjie
Mengjie
28 May 2026

The problem that started this

Every developer hits this eventually: you have a computer that needs typing into, and the keyboard situation is wrong.

  • Your laptop hard-crashed mid-task, and the only way out is a BIOS reset — but you don't have a USB keyboard within reach.
  • You need to type a long generated command into a headless server, and the only console you have is serial.
  • You're standing next to a kiosk machine that needs admin input, and your hands are full of phones and coffee.

What you almost always have on you: a phone.

So the question we kept asking was: why isn't the phone in your hand already a keyboard for everything else?

Architecture

DexoPad architecture diagram - Controller / DexoPad / Target Host

We built DexoPad, a small USB-C dongle that registers itself as a generic HID keyboard + mouse on any USB host. No driver install. No companion software on the host. It just shows up like a $10 OEM keyboard would.

The control surface is your phone. The phone runs a thin app that talks to the dongle over BLE; the dongle relays the input as USB HID reports to whatever it's plugged into.

The decision that made this actually work: all the smarts live phone-side. The dongle is intentionally dumb. It speaks USB HID. It does pairing. It rebroadcasts what the phone tells it to type, click, or scroll. That's it.

This is what lets it work in places where you can't install anything — BIOS, locked-down corporate machines, kiosks, Pi during initial boot.

Engineering details that came up while building

  • BLE latency: getting typing-feel right meant tuning the connection interval down. We landed around 7.5ms with reasonable battery on the phone side.
  • HID report descriptors: we ship a composite device (keyboard + mouse) so we don't have to ask the host to enumerate two separate USB devices. This also avoids the (Windows-specific) "new HID device detected" toast every time someone re-plugs.
  • Cross-OS key mapping: harder than it looks. The phone runs OS-aware key translation, so AZERTY / Dvorak / Bépo on the phone keyboard maps to the host's expected scancodes correctly. The dongle just sends scancodes; the phone does layout resolution.
  • AI Voice (opt-in): optional voice-to-text feature pipes phone audio through OpenAI Whisper API. Default OFF. Backer pushback on the marketing framing convinced us to add an explicit "completely disable" toggle in Settings before release.
  • GPL audit: earlier demos used a couple of GPL libraries; replaced before final release.
  • Painted vs raw ABS shell: under re-evaluation pending Stretch 1 (injection-mold tooling) based on backer feedback about long-term aesthetics.

Real use cases we have actually hit ourselves

  • Recovering a crashed laptop from a terminal session, typing the recovery command into the host via phone.
  • Initial Pi setup without dragging out a keyboard + monitor.
  • BIOS-level access on machines without keyboard within reach.
  • Accessibility — one Kickstarter backer who runs a residential care facility pointed out that for people with mobility limitations, "phone you're already holding as input device" is an access feature, not a convenience.

Kickstarter campaign (20 days to go, past base goal)

We're working toward Android-app and injection-mold stretches:

→ https://www.kickstarter.com/projects/palmblock/dexopad-cross-device-keyboard-mouse-and-macros-anywhere?ref=d9clhc

Happy to answer architecture / hardware questions in this thread.

Best,
Mengjie Zhang
Founder, PalmBlock

  • Sign in to reply
  • Mengjie
    Mengjie 14 days ago

    Hi shabaz — thanks for thinking through this with us.

    Your model would work, no argument. Our situation: the software's built end-to-end for closed-source commercial use. Opening it up isn't a config flag — it touches architecture, licensing, and how we'd structure support. Not something we can rewire mid-campaign.

    That said, this is worth an actual internal look. I'll take it back to the team.

    Best,
    Mengjie Zhang
    Founder, PalmBlock

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz 14 days ago

    If it were me, I would have done this differently. Why not just share the code for free to convert (say) a Pi Pico W to do this function. Then, just charge a small amount in an app store, for anyone to purchase the software required on the phone, or, if you're doing it all in the browser, just make a small donation possible.

    I think $35 (and then shipping, possible taxes) is not attractive, because one is just as likely going to lose the dexopad dongle, as they are likely to lose their wireless USB keyboard/mouse dongle. Whereas, if one lost a Pi Pico W, it's cheap to get another from anywhere in the world almost, at little cost. You'd probably make more from the donations than from the KickStarter, and you'd retain more since you'd not be paying KickStarter a percentage any longer. Personally, I'd pay $10 just for a web app, if it would save me time and effort writing my own. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube