Specifications
usage page (generic desktop)
usage (mouse)
collection (application)
report id (1)
usage (pointer)
collection (linked)
usage page (buttons)
usage minimum (1)
usage maximum (3)
logical minimum (0)
logical maximum (1)
report count (3 bytes)
report size (1)
input (3 button bits)
report count (1)
report size (5)
input (constant 5 bit padding)
usage page (generic desktop)
usage (X)
usage (Y)
usage (wheel)
logical minimum (-127)
logical maximum (127)
report size (8)
report count (3)
input (3 position bytes X & Y & wheel)
end collection
end collection
usage page(Generic Desktop)
usage (System Control)
collection(Application)
report id (2)
usage page(Generic Desktop)
usage minimum(System Power Down)
usage maximum(System Wake Up)
logical minumum(0)
logical maximum(1)
report count (3)
report size (1)
input(Data,Var,rel)
report count (1 byte)
report size (5 bits)
input (constant)
end collection
The above descriptor defines two types of packets that can be sent on endpoint 2: a 5-byte mouse packet consisting of a
report ID (= 0x1), a single byte of button information, and a byte each of X, Y, and wheel data; and a 2-byte power
management packet, consisting of a report ID (= 0x2) and a byte containing the current state of the power management
keys:
Bits 7-3 Bit 2 Bit 1 Bit 0
unused 1 = wake key pressed 1 = sleep key pressed 1 = power key pressed
The reference firmware enables endpoint 2 upon power-up. The power management keys are scanned every 4 msec along
with other keys in the matrix. If power management keys are pressed, a 2-byte power management packet as described
above will be transmitted to the host at that time. If no power events are recognized, the mouse (if one is connected, and if
the firmware includes support for the mouse) is polled and its data is transmitted instead.
Note that the endpoint 2 descriptor allows for a mouse packet that includes optional “wheel”, or Z-axis, When the firmware
detects the presence of a mouse, it interrogates the mouse to determine its type. If the mouse is not a 3D mouse, the
“wheel” data in the packet is set to zero; otherwize, wheel data is tranmsitted in the appropriate byte.