MOVERelative axis injection

MOVE shifts an axis by a relative amount, not a screen position. Opcode 0x01.

MOVE 0x01 · cursor payload 6 bytes

Fire-and-forget

PAYLOAD (cursor, motion = 0)
OffsetFieldTypeNotes
0motionu80 = cursor
1dxi16horizontal step; +x = right, little-endian
3dyi16vertical step; +y = down, little-endian
5flagsu8riding override, 0 for a plain move
GUARANTEES
exact   net move = the sum of every delta sent
range   full i16 per axis, no clamp
signs   +x right, +y down (screen-style), +z wheel up
paced   a large move drains across frames; nothing is dropped

The box carries any remainder in its accumulator. RESET zeroes it. Library binding: move_rel.

EXAMPLE

Cursor dx = 100, dy = 0 (motion = 0):

A5SOF
01TYPE
00SEQ
06 00LEN
00motion
64 00dx
00 00dy
00flags
lo hiCRC16

MOVE (wheel)Vertical scroll

With motion = 1, MOVE scrolls the wheel by a relative amount.

MOVE 0x01 · wheel payload 4 bytes

Fire-and-forget

PAYLOAD (wheel, motion = 1)
OffsetFieldTypeNotes
0motionu81 = wheel
1dzi16scroll steps; + = up, - = down, little-endian
3flagsu8riding override, 0 for a plain move
EFFECT

The box adds dz to its accumulator and drains it across frames with carry, no clamp. RESET clears it. Library binding: wheel.

EXAMPLE

Wheel dz = 1, one step up (motion = 1):

A5SOF
01TYPE
00SEQ
04 00LEN
01motion
01 00dz
00flags
lo hiCRC16

MOVE (pan)Horizontal scroll (AC Pan)

With motion = 2, MOVE drives AC Pan (horizontal scroll, Consumer usage 0x0238) by a relative amount.

MOVE 0x01 · pan payload 4 bytes

Fire-and-forget

PAYLOAD (pan, motion = 2)
OffsetFieldTypeNotes
0motionu82 = pan
1dpani16pan steps; + = right, - = left, little-endian
3flagsu8riding override, 0 for a plain move
EFFECT

The box adds dpan to its accumulator and drains it across frames with carry, no clamp, as for the wheel. RESET clears it. Pan is lockable in any direction and catchable as a motion event's fourth axis.

EXAMPLE

Pan dpan = 1, one step right (motion = 2):

A5SOF
01TYPE
00SEQ
04 00LEN
02motion
01 00dpan
00flags
lo hiCRC16

MOVE flagsPer-command movement-riding override

The flags byte overrides movement riding for this command only.

MOVE 0x01 · flags at offset 5 (cursor) / 3 (wheel)
FLAGS
BitNameEffect
0x01NOWThe delta is emitted on the next mouse report, native or the box's, without waiting for a native cursor-motion report.
0x02FLUSHEmit the motion already held for a ride, ignoring the ride window.
0x04DISCARDDrop the motion already held for a ride.
EFFECT

Order: discard, flush, then the delta. FLUSH and DISCARD together refuse the frame. Injected motion lands in one of two accumulators, so a NOW delta is emitted without the motion held for a ride. Library bindings: move_rel_now, flush_motion, discard_motion.

EXAMPLE

Flush held motion with no delta (flags = 0x02):

A5SOF
01TYPE
00SEQ
06 00LEN
00motion
00 00dx
00 00dy
02flags
lo hiCRC16