SpringCore HID implementation

The implementation is based on the USB HID 1.10 specification. It is allows the device to emulate either a USB keyboard or a BLE keyboard

Once HID profile is selected, the SpringCore device, running as a Smart Reader, presents itself as a standard keyboard and automatically “type” the data it reads from a tag or card directly into the active field of the host application. This is the so-called RFID Scanner mode.

No driver or SDK is required on major operating systems (Windows, Linux, macOS), since the device relies on the native HID class.

The output format can be customized (prefixes/suffixes, Enter key, etc.), making it easy to integrate with existing applications or locked-down environments where only keyboard input is permitted. This interface is ideal for simple “keyboard wedge” use cases; for advanced or bidirectional communication, over modes must be preferred.

Configuration checklist

  • Set register 02C0 to 03 (HID keyboard profile, RFID Scanner).
  • Use register 02A6 to select which keyboard layout to use1,2. The SpringCore firmware supports the QWERTY, AZERTY and QWERTZ families, with a few locale-specific variants.
  • Use register 02A8 to define the text that will be sent before the actual data (prefix)3.
  • Use register 02A9 to define the text that will be sent after the actual data (suffix)3.

1 In the HID protocol, the host computer has no way to tell a device what is the keyboard layout currently in use by the operating system. Therefore, the SpringCore device running in RFID Scanner mode shall be carefully configured to have the same keymap as the OS. If you’re seing characters instead of digits (!@#$% instead of 12345) or wrong letters (QBCD instead of ABCD), it’s sure you’ve configured device for the wrong keyboard layout.

2 On Android, the situation is even trickier. The on-screen (virtual) keyboard layout is handled by the Input Method Editor (IME), while external HID keyboards (USB or BLE) are interpreted through Android’s internal keymap system. These two layers are not always synchronized: you may select your locale-specific layout for the virtual keyboard, while the HID driver stays mapped as QWERTY, unless explicitly reconfigured by a 3rd party application.

3 Use the ASCII table should you need to send special characters in the stream. For instance, a TABULATION is ASCII code 09, the ENTER key is ASCII code 0A, and the RETURN key the 0D 0A sequence.