[ANN] HID report descriptor library and tool

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone,

I would like to announce a HID report descriptor library and tool I'm making
in my spare time, as a part of the DIGImend project [1]. It is called
simply "hidrd".

It is aimed to replace the HID Descriptor Tool [2], produced by the USB
Implementers Forum, and address its shortcomings. To me these are mainly the
inability to read native descriptor format, GUI-only interface, and
instability, plus it is Windows-only (although it runs under WINE).

The ultimate goal is to make a command-line tool which could be used to
conveniently make your own and modify existing descriptors. So the idea is
to implement conversion to/from some format more suitable for human
consumption and editing. XML was chosen for a start. Yeah, I know, some
people consider it ugly and not that convenient, but it was the easiest way
to me.

The tool is called "hidrd-convert" and currently can only convert from the
native format to XML. However it could already be useful for a developer
wishing to better understand a particular descriptor, or HID report
descriptors as a whole. The next major release (0.2) will include conversion
from XML to the native format.

Here is how the output looks for a Microsoft's Natural Ergonomic Keyboard:

<?xml version="1.0"?>
<descriptor xmlns="http://digimend.sourceforge.net";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xsi:schemaLocation="http://digimend.sourceforge.net hidrd.xsd">
  <usage_page>desktop<!-- Generic desktop controls --></usage_page>
  <usage>desktop_keyboard<!-- Keyboard (06, top-level) --></usage>
  <COLLECTION type="application">
    <usage_page>led<!-- LEDs --></usage_page>
    <usage_minimum>01<!-- Top-level --></usage_minimum>
    <usage_maximum>03<!-- Top-level --></usage_maximum>
    <logical_minimum>0</logical_minimum>
    <logical_maximum>1</logical_maximum>
    <report_size>1</report_size>
    <report_count>3</report_count>
    <output>
      <variable/>
    </output>
    <usage>4B</usage>
    <report_count>1</report_count>
    <output>
      <variable/>
    </output>
    <report_count>4</report_count>
    <output>
      <constant/>
    </output>
    <usage_page>keyboard<!-- Keyboard/keypad --></usage_page>
    <usage_minimum>keyboard_kb_leftcontrol<!-- Keyboard left control (E0) --></usage_minimum>
    <usage_maximum>keyboard_kb_right_gui<!-- Keyboard right GUI (E7) --></usage_maximum>
    <report_count>8</report_count>
    <input>
      <variable/>
    </input>
    <report_size>8</report_size>
    <report_count>1</report_count>
    <input>
      <constant/>
    </input>
    <usage_minimum>keyboard_none<!-- No event (00) --></usage_minimum>
    <usage_maximum>keyboard_kb_lang2<!-- Keyboard LANG2 (91) --></usage_maximum>
    <logical_maximum>255</logical_maximum>
    <report_count>6</report_count>
    <input/>
  </COLLECTION>
</descriptor>

This is produced by running the hidrd-convert tool like this:
hidrd-convert -o xml descriptor.bin descriptor.xml

I can show you some a bit more interesting examples (including a Genius
tablet and the PS3 gamepad) on request (since they are bigger).

The hidrd release 0.1.1 could be downloaded here:
https://sourceforge.net/projects/digimend/files/hidrd/0.1/hidrd-0.1.1.tar.gz/download
You can also visit the hidrd section on the DIGImend project page [3].

Any comments and feedback are welcome, of course :)

Thank you for you attention.

Sincerely,
Nick

[1] http://digimend.sourceforge.net/
[2] http://www.usb.org/developers/hidpage/#Descriptor_Tool
[3] http://digimend.sourceforge.net/#proj-hidrd

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux