惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
量子位
腾讯CDC
C
Check Point Blog
小众软件
小众软件
IT之家
IT之家
I
InfoQ
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
博客园_首页
S
SegmentFault 最新的问题
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Phone-as-keyboard for any USB host — building a driverles...
mengjie zhang · 2026-05-29 · via DEV Community

mengjie zhang

DexoPad hero — USB-C dongle and phone controller

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 in use — dongle plugged into a host machine

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.

What's interesting technically

  • 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): there's an optional voice-to-text feature that pipes phone audio through the OpenAI Whisper API. It is off by default. We're adding an explicit "completely disable" toggle in the app settings after backer feedback, because "off by default" wasn't a strong enough signal.

How we actually use it

We've been running DexoPad ourselves while developing it. The honest reason it stayed in the pile after the initial prototype:

  • When a long-running terminal session crashes and we need to type a 200-character recovery command into a Mac that has no nearby keyboard, the dongle saves real time.
  • Initial setup for Raspberry Pi / mini-PCs without dragging out a keyboard + mouse.
  • BIOS settings on machines that don't expose USB keyboard over the network KVM cleanly.

It's not glamorous. It's just one of those things that quietly stops being annoying.

Where to follow

We're funding the production run on Kickstarter right now. Already past base goal, working toward the Android-app stretch.

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

Comments / use cases / "wait have you tried X" — welcome here or on the campaign page. We read all of them.

— MJ, PalmBlock