tools/record: linebreak the hid report descriptor every 16 bytes
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 29 Apr 2021 00:12:46 +0000 (10:12 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Fri, 30 Apr 2021 04:54:35 +0000 (14:54 +1000)
New output:

 hid: [
    0x05, 0x0d, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x09, 0x42, 0x15, 0x00,
    0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x01, 0x81, 0x03, 0x75, 0x06, 0x09, 0x51,
    0x25, 0x3f, 0x81, 0x02, 0x26, 0xff, 0x00, 0x75, 0x08, 0x09, 0x48, 0x81, 0x02, 0x09, 0x49, 0x81,
    ...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
tools/libinput-record.c

index a4d055a4d721bfdb1b69cfa2cb1aa53ee954d8bb..1e763f36538785668f8f585d7654357cc809df90 100644 (file)
@@ -1597,11 +1597,25 @@ print_hid_report_descriptor(struct record_device *dev)
 
        while ((len = read(fd, buf, sizeof(buf))) > 0) {
                for (int i = 0; i < len; i++) {
-                       iprintf(dev->fp, I_NONE, "%s0x%02x", sep, buf[i]);
+                       /* We can't have a trailing comma, so our line-break
+                        * handling is awkward.
+                        * For a linebreak: print the comma, break, indent,
+                        *    then just the hex code.
+                        * For the other values: print the comma plus the
+                        *    hex code, unindented.
+                        */
+                       if (i % 16 == 0) {
+                               iprintf(dev->fp, I_NONE, "%s\n", sep);
+                               iprintf(dev->fp, I_DEVICE, "  ");
+                               iprintf(dev->fp, I_NONE, "0x%02x", buf[i]);
+                       } else {
+                               iprintf(dev->fp, I_NONE, "%s0x%02x", sep, buf[i]);
+                       }
                        sep = ", ";
                }
        }
-       iprintf(dev->fp, I_NONE, "]\n");
+       iprintf(dev->fp, I_NONE, "\n");
+       iprintf(dev->fp, I_DEVICE, "]\n");
 
        close(fd);
 }