This project started as a tiny weekend experiment six years ago, and somehow it found friends all over the world — 30 stars and 11 forks. That genuinely means a lot.
v2.0 is a complete, ground-up rebuild dedicated to all of you: a modern UI, brand-new mouse and gamepad testers, live stats, sound + haptic feedback, full mobile/touch support, and offline capability — all with zero external dependencies and no tracking, no ads. Scroll down to the Hall of Thanks — your names are baked right into the app. 🙌
- ⌨️ Full keyboard tester — every standard key (~104), identified by the modern
KeyboardEvent.codeAPI so left/right modifiers and the numpad are distinguished correctly. - 💡 Dead-key detection — pressed keys glow; once tested they stay marked, so you can instantly spot keys that never registered.
- 🖱️ Mouse tester — left / middle / right + back/forward buttons, scroll up/down, live cursor position, movement deltas and double-click detection.
- 🎮 Gamepad tester — buttons, triggers and analog sticks via the Gamepad API, with live values.
- 📊 Live stats — total presses, unique keys, most-pressed key, and a keyboard-coverage meter.
- 🔊 Sound + 📳 haptics — optional click feedback and vibration on mobile (toggleable, remembered).
- 📱 Responsive & touch-friendly — tap on-screen keys on phones and tablets; the layout scales fluidly.
- ⚡ Zero dependencies, offline-ready — no jQuery, no frameworks, no CDNs. Installable PWA with a service worker, so it works with no connection.
- 🔒 Private by design — everything runs locally in your browser. Nothing is sent anywhere.
→ https://keyboard-mouse-tester-web-app.vercel.app/
Tip: some keys (Win/Meta, PrtSc, certain F-keys) may be intercepted by your OS or browser before the page can see them — that's expected behavior, not a dead key.
| Mouse tester | Gamepad tester |
|---|---|
![]() |
![]() |
| Hall of Thanks | Mobile |
|---|---|
![]() |
![]() |
A deliberately simple, zero-build static site — easy to read, easy to fork, fast to load.
index.html # markup + meta + PWA hooks
css/style.css # modern responsive theme (CSS custom properties)
js/keymaps.js # data-driven keyboard layout + key-name maps
js/app.js # keyboard / mouse / gamepad / stats / feedback / PWA
sw.js # service worker (offline cache)
manifest.webmanifest # PWA manifest
favicon.svg # crisp vector icon
No package manager, no bundler, no transpiler — just open it.
Because there's no build step, you can simply open index.html in a browser.
For the PWA / service worker (and to avoid file:// quirks), serve it over HTTP:
# Python 3
python -m http.server 8080
# …or Node
npx serve .Then visit http://localhost:8080.
The live site is hosted on Vercel — it's a zero-build static site, so every push auto-deploys with no configuration.
- Vercel / Netlify / Cloudflare Pages: import the repo, no build command, output directory
/(root). - GitHub Pages: Settings → Pages → Deploy from a branch, branch
main, folder/ (root).
Since there's no build step, it drops onto any static host exactly as-is.
This release is dedicated to the people who starred and forked this repo. Thank you — truly.
⭐ Stargazers
@mt190502 · @kukisama · @pkl1024 · @GalaxySnail · @SleepyBoy29 · @adinata-id · @shishirong · @Gh0st-0 · @iqiancheng · @its-arthur · @VoidDeficit · @zeta667 · @eed-cn · @bartman · @KissuChaudhary · @sumn255 · @amanxsyed · @Nubidubi23 · @Suraj-011 · @ADeeeee · @Sxifn · @hwbest · @leilatown6 · @techmech-keeb · @jk2K · @binarytree · @clach04 · @ls120
🍴 Forkers
@ls120 · @Sxifn · @Suraj-011 · @HGRgamer · @gwjwin · @SnakeBonD · @its-arthur · @panreyes · @iqiancheng · @Bestlaptop · @pkl1024
Names captured at build time. If yours should be here and isn't, open an issue or PR and you're in!
Issues and PRs are very welcome — bug reports, new keyboard layouts (ISO/JIS, other locales), themes, accessibility improvements, translations. The codebase is small and dependency-free, so it's a friendly place to make your first open-source contribution.
MIT © Md. Shahriar Karim Shawon (@shawon9324)
If this tool helped you, a ⭐ means the world.




