Motion

Moves, the wheel and horizontal scroll, and how each box smooths them.

Moves
CapabilityStockMediusResult
Relative movekm.moveMOVEEqual
Immediate movekm.move_nowMOVE(NOW)Equal
Move with a receiptRAW_MOVENoStock
Query for pending motionkm.movingNoStock
Flush held motionNoMOVE(FLUSH)Medius
Discard held motionNoMOVE(DISCARD)Medius
Absolute move on a virtual screenkm.movetoNoStock
Tracked pointer positionkm.getposNoStock
Move, click and move backkm.silentCLIP_APPENDEqual
Wheelkm.wheelMOVEEqual
Horizontal scroll (AC Pan)NoMOVEMedius
Smoothing
CapabilityStockMediusResult
Spread over the command intervalINTERPOLATEOPTION(SPREAD)Equal
Spread over a set timeINTERPOLATENoStock
Render through a mouse modelNoOPTION(RENDER)Medius
Render native motionNoOPTION(RENDER)Medius
Carry injected motion only in native reportsNoOPTION(MOVE_RIDE)Medius

Mouse buttons

Stock has a command for each of five buttons. Medius's INJECT covers every button the mouse has, up to 16.

Press and release
ButtonStockMediusResult
Leftkm.leftINJECTEqual
Rightkm.rightINJECTEqual
Middlekm.middleINJECTEqual
Side 1km.side1INJECTEqual
Side 2km.side2INJECTEqual
Buttons 6-16NoINJECTMedius
Clicks and queries
CapabilityStockMediusResult
Clicks timed by the boxkm.clickCLIP_APPENDEqual
Query native buttonsPHYS_BUTTONSNoStock

Keys and media keys

Keyboard keys, and media keys such as volume and play.

Key commands
CapabilityStockMediusResult
Key downkm.downINJECTEqual
Key upkm.upINJECTEqual
Key press timed by the boxkm.pressCLIP_APPENDEqual
Several keys down in one commandkm.multidownNoStock
Several keys up in one commandkm.multiupNoStock
Several keys pressed in one commandkm.multipressNoStock
String typed by the boxkm.stringCLIP_APPENDEqual
Release every injected keykm.initRESETEqual
Query a key's statekm.isdownNoStock
Media key down and upNoINJECTMedius

Locks, scaling and remaps

On both boxes a lock or a scale acts on native input and leaves injected input alone.

Button locks
ButtonStockMediusResult
Leftkm.left_maskLOCKEqual
Rightkm.right_maskLOCKEqual
Middlekm.middle_maskLOCKEqual
Side 1km.side1_maskLOCKEqual
Side 2km.side2_maskLOCKEqual
Buttons 6-16NoLOCKMedius
Other locks
CapabilityStockMediusResult
Block cursor motion per directionkm.move_maskLOCKEqual
Block the wheel per directionkm.wheel_maskLOCKEqual
Block horizontal scrollNoLOCKMedius
Block a keykm.maskLOCKEqual
Block a media keyNoLOCKMedius
Block every key in one commandNoLOCKMedius
Block only the press or only the releaseNoLOCKMedius
Query active locksINJECT_SNAPSHOTQUERY(LOCKS)Equal
Motion scaling
CapabilityStockMediusResult
Scale motion, 0-255%NoLOCKMedius
Reverse motionNoLOCKMedius
Scale motion with or against the injected directionNoLOCKMedius
Scale only motion along the injected directionNoOPTION(BEARING)Medius
Remaps
CapabilityStockMediusResult
Key to keykm.remapNoStock
Button to buttonNoTRANSFORMMedius
Button to keyNoTRANSFORMMedius
Button to media keyNoTRANSFORMMedius
Axis to axisNoTRANSFORMMedius
Swap two axesNoTRANSFORMMedius
Query active remapsNoQUERY(TRANSFORMS)Medius

Game pads

Stock's commands for game pads. Medius relays a pad and has no command for one.

Pad commands
CapabilityStockMediusResult
Read the pad's statekm.controller_physicalNoStock
Stream pad changeskm.controllerNoStock
Drive the pad state the PC getskm.controller_stateNoStock
Block a pad controlkm.controller_maskNoStock
Recognise the pad's kindDEVICENoStock
Pad response curves and deadzonesCONNECTIONNoStock
Mouse and keyboard as a padCONNECTIONNoStock
Saved pad presetsCONNECTIONNoStock
Pads driven
PadStockMediusResult
HID padkm.controller_stateNoStock
DualShock 4km.controller_stateNoStock
DualSensekm.controller_stateNoStock
DualSense Edgekm.controller_stateNoStock
Xbox One and Series (GIP)km.controller_stateNoStock
Xbox 360 (XInput)km.controller_stateNoStock

Input and traffic capture

Watching native input and USB traffic from the control port.

Capture commands
CapabilityStockMediusResult
Stream native button changeskm.buttonsCATCH(BTN)Equal
Stream native key changeskm.keysCATCH(KEY)Equal
Stream native media key changesNoCATCH(MEDIA)Medius
Stream native motionNoCATCH(AXIS)Medius
Capture native HID reportsRAW_PASSTHROUGHCATCH(HID_IN)Equal
Capture HID OUT reportsNoCATCH(HID_OUT)Medius
Capture vendor interrupt trafficNoCATCH(VEND_INTR)Medius
Capture vendor bulk trafficNoCATCH(VEND_BULK)Medius
Capture control transfersNoCATCH(CONTROL)Medius
Capture reports the clone emitsNoCATCH(EMIT)Medius
Watch bus eventsNoCATCH(BUS)Medius

Device control

Commands that act on the real device or its traffic. Medius's commands here need imperfect clones on.

Device commands
CapabilityStockMediusResult
Control transfer to the real deviceNoTRANSFERMedius
Raw report to the PCNoRAWMedius
Raw packet to the real deviceNoRAWMedius
Rewrite packets in flightNoREWRITEMedius
Drop packets in flightNoREWRITEMedius
Reply to control requests from the boxNoREWRITEMedius
Patch the descriptors the PC readsNoPATCHMedius

Clips

A clip is a set of moves, clicks and keys stored on the box and timed by the box.

Clip commands
CapabilityStockMediusResult
Load onto the boxNoCLIP_APPENDMedius
Play, pause and stopNoCLIP_CTRLMedius
LoopNoCLIP_SETMedius
Keep to replayNoCLIP_SETMedius
Lock native input while playingNoCLIP_SETMedius
Start on a button, key or media keyNoCLIP_TRIGGERMedius
Start on a matched packetNoCLIP_TRIGGERMedius

Box queries and settings

Queries about the box and the real device, and the box's settings.

Queries
CapabilityStockMediusResult
Firmware version numberFIRMWARE_VERSIONQUERY(VERSION)Equal
Real device's kindDEVICEQUERY(DEVICE_INFO)Equal
Real device's VID and PIDNoQUERY(DEVICE_INFO)Medius
Native report ratekm.deviceQUERY(RATE)Equal
Inputs the real device declaresNoQUERY(CAPS)Medius
Injected state snapshotINJECT_SNAPSHOTNoStock
Health flagsNoQUERY(HEALTH)Medius
Drop and reset countersNoQUERY(STATS)Medius
Diagnostic logNoLOGMedius
Settings
CapabilityStockMediusResult
Emit rateNoOPTION(EMIT)Medius
Forced poll rateWith imperfect clones onNoOPTION(EMIT)Medius
Box nameNoOPTION(NAME)Medius
Status LEDNoLEDMedius
RebootNoREBOOTMedius
Return to passthroughNoRESETMedius
Erase stored settingsNoRESET(NVS)Medius
Baud ratekm.baudNoStock
Command echokm.echoNoStock