HID Report Descriptor

Guys,

Here's a little back story: I'm working on a rfid reader and interfacing it with the arduino Leonardo, and attaching it with a Square Register.

You can read this thread for more details, about the project.

https://forum.arduino.cc/index.php?topic=578694.0

Right now, I'm trying to mimic the HID keyboard emulation as it is for a barcode scanner.

Problem is I don't quite understand the USB Report Descriptor Format.

//  Keyboard
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)  // 47
    0x09, 0x06,                    // USAGE (Keyboard)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x85, 0x02,                    //   REPORT_ID (2)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
   
  0x19, 0xe0,                    //   USAGE_MINIMUM (Keyboard LeftControl)
    0x29, 0xe7,                    //   USAGE_MAXIMUM (Keyboard Right GUI)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)
    0x75, 0x01,                    //   REPORT_SIZE (1)
    
  0x95, 0x08,                    //   REPORT_COUNT (8)
    0x81, 0x02,                    //   INPUT (Data,Var,Abs)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x81, 0x03,                    //   INPUT (Cnst,Var,Abs)
    
  0x95, 0x06,                    //   REPORT_COUNT (6)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x73,                    //   LOGICAL_MAXIMUM (115)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
    
  0x19, 0x00,                    //   USAGE_MINIMUM (Reserved (no event indicated))
    0x29, 0x73,                    //   USAGE_MAXIMUM (Keyboard Application)
    0x81, 0x00,                    //   INPUT (Data,Ary,Abs)
    0xc0,                          // END_COLLECTION

I know I'm supposed to look at the HID Usage Document 1.12 as provided by usb.org, but I don't quite know how to interpret the above data.

Can anyone please explain ?

Thanks.

There is a USB keyboard library that sends key strokes. It handles all the details of the HID report. It works on Leonardo among other boards with 32u4. Keyboard - Arduino Reference

I know. That code is an excerpt of that Keyboard Library. I am trying to mimic a barcode scanner, and I'm not sure if a traditional barcode scanner uses the same reporting descriptor as that of a USB keyboard.

My question was, if anyone could help me understand the Report Descriptor format.

This HID Tutorial seems to go through and give an explanation by working through some examples.