Skip to content
Listens for an NFC tag, returning the serial number as a series of key strokes
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

NFC HID Emulate

Human Interface Device emulator for NFC readers. The niche purpose being to provide similar functionality to that of a standard USB HID Magnetic Stripe Reader (MSR). Defaults to simply returning the chip serial number in a similar format to that of a MSR.

Testing performed initially on the ACR122U model NFC reader, but other ACR brand USB models should work with some minor modifications to the reader package.

Reader support recently added for SDI011 and Omnikey 5x21 CL (tested specifically with Omnikey 5021 CL model). Only tested these readers on Windows.

Designed to run as a service in the background (or more accurately, a user daemon - since it requires the current user desktop session to function). The ideal time to start the program is on login. To avoid conflicts, the application will only attempt to load once. You may have problems getting it to work after switching users unless the first user logs out completely.

There are some command line args, you can bring up all currently available options with the "-h" switch.


Developed with Python versions 2.7.6 and 2.7.10


Tested on Win7 64bit

Maintain same architecture as OS (reader drivers and python stuff)


  • pyscard 1.7
  • No drivers required
  • Smart Card service required (should start as soon as the reader installs via Plug and Play)


Tested on Ubuntu 14.04 and 14.10


  • ACS Unified Linux drivers
  • pcscd
  • libpcsclite-dev
  • python-xlib
  • swig (to build pyscard from source)
  • pyscard (build latest from source)

OSX - Unsupported

Currently no intention to develop the keyboard emulation features required to make the output package work on OSX. Brief attempts to integrate from Plover project proved fruitless on OSX 10.10.

Since I have no need for OSX support, this option has been shelved. If you need OSX support, it should be possible to emulate key strokes via the "pyobjc-framework-quartz" package and some security/accessibility settings which need to be applied through System Preferences.

Any OSX specific output modules have been removed (the modules were borrowed pretty much verbatim from Plover project anyway).


  • ACS Unified Installer OSX drivers
  • pyobjc
  • swig (to build pyscard from source)
  • pyscard (build latest from source)
You can’t perform that action at this time.