Turn a contactless card reader into a keyboard.
nfc-keyboard-emulator is a small cross-platform desktop app that bridges a PC/SC NFC/contactless reader to your keyboard. Place a card on the reader and the app reads its UID and types it straight into whatever input field is focused — a software "keyboard wedge" for readers that don't emulate a keyboard themselves. Everything runs locally: no cloud, no telemetry, no account.
Many NFC readers (e.g. the ACS ACR122U) expose cards over the PC/SC smartcard API rather than acting as a USB keyboard. That makes them unusable in plain web forms or apps that simply expect typed input. This tool fills that gap: pick your reader, and every scanned card UID is entered for you — exactly as if you had typed it.
- Works with any PC/SC reader — ACR122U and other CCID / 13.56 MHz readers on macOS and Windows.
- Types the UID into the focused field — with a configurable trailing key (Enter, Tab, or none).
- Pick your scanner — live device list with hot-plug detection.
- Safety toggle — typing is armed/disarmed with one click, so you never type by accident.
- Live scan log — every scan with timestamp, reader, UID and status; export to CSV.
- Configurable output — upper/lower case, separators, byte order, prefix; live preview.
- Tray + autostart — closes to the system tray; optional launch on login.
- Local only — no network access; the card UID never leaves your machine.
13.56 MHz contactless readers exposed via PC/SC (CCID). Verified with the ACS
ACR122U. The UID is read with the standard FF CA 00 00 00 APDU; the app never
writes to cards. (125 kHz / proximity-only readers are not supported.)
Download the .dmg from the latest release, open it and drag
the app into Applications. Signed builds are notarized and open directly; an unsigned
build may need a one-time right-click → Open.
Accessibility permission: to type into other apps, macOS requires Accessibility access. Open System Settings → Privacy & Security → Accessibility and enable nfc-keyboard-emulator. The app shows a banner with a shortcut button if the permission is missing.
Download the .msi / .exe from the latest release. While
the binary is unsigned, SmartScreen shows a warning — choose More info → Run anyway.
- Select your reader from the dropdown (Refresh rescans for hot-plugged devices).
- Click Typing active to arm typing.
- Place a card on the reader — its UID is typed into the focused field.
- Tune the output format (case, separator, byte order, prefix, trailing key) — the preview updates live.
- Watch the scan log and Export CSV if you need a record.
- Closing the window hides it to the tray; Quit from the tray menu exits.
Prerequisites: Rust (stable) and Node.js 20+.
npm ci
npm run tauri build # bundles into src-tauri/target/release/bundle/
# or run it live:
npm run tauri devnpm test # frontend unit tests (vitest)
cd src-tauri && cargo test && cargo clippy -- -D warnings && cargo fmt --checkA hardware smoke test (needs a reader + a 13.56 MHz card) is available behind a flag:
NFC_HW_TEST=1 cargo test --manifest-path src-tauri/Cargo.toml reader_pcsc::hw_tests -- --ignored --nocaptureSee CONTRIBUTING.md for the manual pre-release checklist and commit conventions.
MIT © 2026 NoiXdev