summaryrefslogtreecommitdiffstats
path: root/usb/hid.h
diff options
context:
space:
mode:
Diffstat (limited to 'usb/hid.h')
-rw-r--r--usb/hid.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/usb/hid.h b/usb/hid.h
new file mode 100644
index 0000000..949cf8e
--- /dev/null
+++ b/usb/hid.h
@@ -0,0 +1,87 @@
+#ifndef USB_HID_H
+#define USB_HID_H
+
+#define SHORT_ITEM(tag, type, size) (((tag) & 0xf) << 4 | \
+ ((type) & 0x3) << 2 | \
+ ((size) & 0x3) << 0)
+
+#define HR_MAIN_ITEM(tag, size) SHORT_ITEM(tag, 0, size)
+#define HR_GLOBAL_ITEM(tag, size) SHORT_ITEM(tag, 1, size)
+#define HR_LOCAL_ITEM(tag, size) SHORT_ITEM(tag, 2, size)
+
+#define HR_INPUT(size) HR_MAIN_ITEM(8, size)
+#define HR_OUTPUT(size) HR_MAIN_ITEM(9, size)
+#define HR_FEATURE(size) HR_MAIN_ITEM(11, size)
+#define HR_COLLECTION(size) HR_MAIN_ITEM(10, size)
+#define HR_END_COLLECTION(size) HR_MAIN_ITEM(12, size)
+
+#define HR_USAGE_PAGE(size) HR_GLOBAL_ITEM(0, size)
+#define HR_LOGICAL_MINIMUM(size) HR_GLOBAL_ITEM(1, size)
+#define HR_LOGICAL_MAXIMUM(size) HR_GLOBAL_ITEM(2, size)
+#define HR_PHYSICAL_MINIMUM(size) HR_GLOBAL_ITEM(3, size)
+#define HR_PHYSICAL_MAXIMUM(size) HR_GLOBAL_ITEM(4, size)
+#define HR_UNIT_EXPONENT(size) HR_GLOBAL_ITEM(5, size)
+#define HR_UNIT(size) HR_GLOBAL_ITEM(6, size)
+#define HR_REPORT_SIZE(size) HR_GLOBAL_ITEM(7, size)
+#define HR_REPORT_ID(size) HR_GLOBAL_ITEM(8, size)
+#define HR_REPORT_COUNT(size) HR_GLOBAL_ITEM(9, size)
+#define HR_PUSH(size) HR_GLOBAL_ITEM(10, size)
+#define HR_POP(size) HR_GLOBAL_ITEM(11, size)
+
+#define HR_USAGE(size) HR_LOCAL_ITEM(0, size)
+#define HR_USAGE_MINIMUM(size) HR_LOCAL_ITEM(0, size)
+#define HR_USAGE_MAXIMUM(size) HR_LOCAL_ITEM(0, size)
+#define HR_DESIGNATOR_INDEX(size) HR_LOCAL_ITEM(0, size)
+#define HR_DESIGNATOR_MINIMUM(size) HR_LOCAL_ITEM(0, size)
+#define HR_DESIGNATOR_MAXIMUM(size) HR_LOCAL_ITEM(0, size)
+#define HR_STRING_INDEX(size) HR_LOCAL_ITEM(0, size)
+#define HR_STRING_MINIMUM(size) HR_LOCAL_ITEM(0, size)
+#define HR_STRING_MAXIMUM(size) HR_LOCAL_ITEM(0, size)
+#define HR_DELIMITER(size) HR_LOCAL_ITEM(0, size)
+
+#define HR_PHYSICAL 0x00
+#define HR_APPLICATION 0x01
+#define HR_LOGICAL 0x02
+#define HR_REPORT 0x03
+#define HR_NAMED_ARRAY 0x04
+#define HR_USAGE_SWITCH 0x05
+#define HR_USAGE_MODIFIER 0x06
+
+#define HR_GENERIC_DESKTOP 0x01
+#define HR_POINTER 0x01
+#define HR_MOUSE 0x02
+#define HR_KEYBOARD 0x06
+#define HR_X 0x30
+#define HR_Y 0x31
+#define HR_WHEEL 0x38
+
+#define HR_BUTTON 0x09
+
+#define HR_DATA (0)
+#define HR_CONSTANT (1 << 0)
+
+#define HR_ARRAY (0)
+#define HR_VARIABLE (1 << 1)
+
+#define HR_ABSOLUTE (0)
+#define HR_RELATIVE (1 << 2)
+
+#define HR_NO_WRAP (0)
+#define HR_WRAP (1 << 3)
+
+#define HR_LINEAR (0)
+#define HR_NON_LINEAR (1 << 4)
+
+#define HR_PREFERRED_STATE (0)
+#define HR_NO_PREFERRED (1 << 5)
+
+#define HR_NO_NULL_POSITION (0)
+#define HR_NULL_STATE (1 << 6)
+
+#define HR_NON_VOLATILE (0)
+#define HR_VOLATILE (1 << 7)
+
+#define HR_BIT_FIELD (0)
+#define HR_BUFFERED_BYTES (1 << 8)
+
+#endif /* USB_HID_H */