Index: uspace/app/usbinfo/hid.c
===================================================================
--- uspace/app/usbinfo/hid.c	(revision e9c02b7b641738c150f790e5e97d75dee1d85c66)
+++ uspace/app/usbinfo/hid.c	(revision 051f96b3606f515532f8c8fc69ffb662781ad8ac)
@@ -44,6 +44,12 @@
 #define BYTES_PER_LINE 20
 
+typedef enum {
+	HID_DUMP_RAW,
+	HID_DUMP_USAGES
+} hid_dump_type_t;
+
 typedef struct {
 	usbinfo_device_t *dev;
+	hid_dump_type_t dump_type;
 	usb_standard_interface_descriptor_t *last_iface;
 } descriptor_walk_context_t;
@@ -85,10 +91,10 @@
 }
 
-/** Dumps HID report in pseudo human-readable format.
+/** Dumps usages in HID report.
  *
  * @param iface_no USB interface the report belongs to.
  * @param report Parsed report descriptor.
  */
-static void dump_hid_report_brief(int iface_no, usb_hid_report_t *report)
+static void dump_hid_report_usages(int iface_no, usb_hid_report_t *report)
 {
 	printf("%sParsed HID report descriptor for interface %d\n",
@@ -110,10 +116,11 @@
 /** Retrieves HID report from given USB device and dumps it.
  *
+ * @param dump_type In which format to dump the report.
  * @param ctrl_pipe Default control pipe to the device.
  * @param iface_no Interface number.
  * @param report_size Size of the report descriptor.
  */
-static void retrieve_and_dump_hid_report(usb_pipe_t *ctrl_pipe,
-    uint8_t iface_no, size_t report_size)
+static void retrieve_and_dump_hid_report(hid_dump_type_t dump_type,
+    usb_pipe_t *ctrl_pipe, uint8_t iface_no, size_t report_size)
 {
 	assert(report_size > 0);
@@ -146,6 +153,14 @@
 	}
 
-	dump_hid_report_raw(iface_no, raw_report, report_size);
-	dump_hid_report_brief(iface_no, &report);
+	switch (dump_type) {
+	case HID_DUMP_RAW:
+		dump_hid_report_raw(iface_no, raw_report, report_size);
+		break;
+	case HID_DUMP_USAGES:
+		dump_hid_report_usages(iface_no, &report);
+		break;
+	default:
+		assert(false && "unreachable code apparently reached");
+	}
 
 	free(raw_report);
@@ -195,13 +210,15 @@
 	}
 
-	retrieve_and_dump_hid_report(&context->dev->ctrl_pipe,
-	    context->last_iface->interface_number, report_size);
-}
-
-
-void dump_hidreport(usbinfo_device_t *dev)
+	retrieve_and_dump_hid_report(context->dump_type,
+	    &context->dev->ctrl_pipe, context->last_iface->interface_number,
+	    report_size);
+}
+
+
+void dump_hidreport_raw(usbinfo_device_t *dev)
 {
 	descriptor_walk_context_t context = {
 		.dev = dev,
+		.dump_type = HID_DUMP_RAW,
 		.last_iface = NULL
 	};
@@ -213,4 +230,18 @@
 }
 
+void dump_hidreport_usages(usbinfo_device_t *dev)
+{
+	descriptor_walk_context_t context = {
+		.dev = dev,
+		.dump_type = HID_DUMP_USAGES,
+		.last_iface = NULL
+	};
+
+	usb_dp_walk_simple(dev->full_configuration_descriptor,
+	    dev->full_configuration_descriptor_size,
+	    usb_dp_standard_descriptor_nesting,
+	    descriptor_walk_callback, &context);
+}
+
 /** @}
  */
Index: uspace/app/usbinfo/main.c
===================================================================
--- uspace/app/usbinfo/main.c	(revision e9c02b7b641738c150f790e5e97d75dee1d85c66)
+++ uspace/app/usbinfo/main.c	(revision 051f96b3606f515532f8c8fc69ffb662781ad8ac)
@@ -68,4 +68,5 @@
 	_OPTION("-S --status", "Get status of the device.");
 	_OPTION("-r --hid-report", "Dump HID report descriptor.");
+	_OPTION("-r --hid-report-usages", "Dump usages of HID report.");
 
 	printf("\n");
@@ -86,7 +87,8 @@
 	{"status", no_argument, NULL, 'S'},
 	{"hid-report", no_argument, NULL, 'r'},
+	{"hid-report-usages", no_argument, NULL, 'R'},
 	{0, 0, NULL, 0}
 };
-static const char *short_options = "himtTsSr";
+static const char *short_options = "himtTsSrR";
 
 static usbinfo_action_t actions[] = {
@@ -123,5 +125,10 @@
 	{
 		.opt = 'r',
-		.action = dump_hidreport,
+		.action = dump_hidreport_raw,
+		.active = false
+	},
+	{
+		.opt = 'R',
+		.action = dump_hidreport_usages,
 		.active = false
 	},
Index: uspace/app/usbinfo/usbinfo.h
===================================================================
--- uspace/app/usbinfo/usbinfo.h	(revision e9c02b7b641738c150f790e5e97d75dee1d85c66)
+++ uspace/app/usbinfo/usbinfo.h	(revision 051f96b3606f515532f8c8fc69ffb662781ad8ac)
@@ -85,5 +85,6 @@
 void dump_strings(usbinfo_device_t *);
 void dump_status(usbinfo_device_t *);
-void dump_hidreport(usbinfo_device_t *);
+void dump_hidreport_raw(usbinfo_device_t *);
+void dump_hidreport_usages(usbinfo_device_t *);
 
 
