<!-- Source: https://medius.k4tech.net/comparison/injection -->
# Injected motion

Moves a program sends to each box: how fast they reach the PC, whether every count arrives, and what the box adds.

## Move latency

One move at a time, timed on the PC's USB bus from the command to the report carrying it. A default move goes through each box's default smoothing, and an immediate move skips it.

#### Default move latency, p50

Stock `km.move`Medius `MOVE`

| Mouse and move | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 64.1 ms | 0.969-1.010 ms | Medius |
| Still mouse, 50 counts | 64.1-64.2 ms | 0.926-1.010 ms | Medius |
| Moving 1 kHz mouse, 50 counts | 71.7 ms | 13.5-13.6 ms | Medius |

#### Default move latency, p95

Stock `km.move`Medius `MOVE`

| Mouse and move | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 64.6 ms | 1.41 ms | Medius |
| Still mouse, 50 counts | 64.6 ms | 1.38-1.42 ms | Medius |
| Moving 1 kHz mouse, 50 counts | 72.1 ms | 15.1-15.3 ms | Medius |

#### Immediate move latency, p50

Stock `km.move_now`Medius `MOVE(NOW)`

| Mouse and move | Stock`km.move_now` | Medius`MOVE(NOW)` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 4.27-4.29 ms | 0.925-0.945 ms | Medius |
| Still mouse, 50 counts | 4.21-4.24 ms | 0.959-0.984 ms | Medius |
| Moving 1 kHz mouse, 1 count | 11.7 ms | 1.08 ms | Medius |
| Moving 1 kHz mouse, 50 counts | 11.7 ms | 1.08-1.09 ms | Medius |
| Moving 125 Hz mouse, 1 count | 4.25-4.34 ms | 4.68-5.02 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |
| Moving 125 Hz mouse, 50 counts | 4.32-4.34 ms | 4.45-4.89 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |

#### Immediate move latency, p95

Stock `km.move_now`Medius `MOVE(NOW)`

| Mouse and move | Stock`km.move_now` | Medius`MOVE(NOW)` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 4.69-4.70 ms | 1.36 ms | Medius |
| Still mouse, 50 counts | 4.67-4.70 ms | 1.41-1.42 ms | Medius |
| Moving 1 kHz mouse, 1 count | 12.1 ms | 1.58-1.61 ms | Medius |
| Moving 1 kHz mouse, 50 counts | 12.1 ms | 1.59-1.60 ms | Medius |
| Moving 125 Hz mouse, 1 count | 4.74 ms | 8.23-8.37 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |
| Moving 125 Hz mouse, 50 counts | 4.75-4.80 ms | 7.80-8.09 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |

#### Default moves with their first count within 0.5 s

Stock `km.move`Medius `MOVE`

| Mouse and move | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 400/400 | 400/400 | Equal |
| Still mouse, 50 counts | 400/400 | 400/400 | Equal |
| Moving 1 kHz mouse, 1 count | 400/400 | 400/400 | Equal |
| Moving 1 kHz mouse, 50 counts | 400/400 | 400/400 | Equal |
| Moving 125 Hz mouse, 1 count | 400/400 | 400/400 | Equal |
| Moving 125 Hz mouse, 50 counts | 400/400 | 400/400 | Equal |

#### Default moves arriving in full before the next

Stock `km.move`Medius `MOVE`

| Mouse and move | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 400/400 | 400/400 | Equal |
| Still mouse, 50 counts | 400/400 | 400/400 | Equal |
| Moving 1 kHz mouse, 1 count | 400/400 | 400/400 | Equal |
| Moving 1 kHz mouse, 50 counts | 400/400 | 400/400 | Equal |
| Moving 125 Hz mouse, 1 count | 400/400 | 400/400 | Equal |
| Moving 125 Hz mouse, 50 counts | 400/400 | 400/400 | Equal |

#### Empty reports while paying out 40 moves, default smoothing

Stock `km.move`Medius `MOVE`

| Counts per move | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| 1 count | 2,520 | 0 | Medius |
| 10 counts | 2,160 | 0 | Medius |
| 100 counts | 440 | 0 | Medius |

#### Default move latency counting every move, p95

Stock `km.move`Medius `MOVE`

| Mouse and move | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 1 count | 64.7 ms | 1.57-1.58 ms | Medius |
| Still mouse, 50 counts | 64.7 ms | 1.56-1.58 ms | Medius |
| Moving 1 kHz mouse, 1 count | 72.2 ms | 5.34-6.03 ms | Medius |
| Moving 1 kHz mouse, 50 counts | 72.2 ms | 15.2-15.4 ms | Medius |
| Moving 125 Hz mouse, 1 count | 8.71-8.81 ms | 9.59-9.62 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |
| Moving 125 Hz mouse, 50 counts | 8.73-8.76 ms | 17.9-18.4 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |

## Delay in a stream of moves

A steady 2 s stream of one-count moves into a still mouse, each box on its default smoothing. Each count is matched to its command and timed from it.

#### Delay of each count in a steady stream, p50

Stock `km.move`Medius `MOVE`

| Moves/s | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| 1,000 | 10.3 ms | 1.85 ms | Medius |
| 500 | 11.3 ms | 1.9 ms | Medius |
| 250 | 11.7 ms | 4.31 ms | Medius |
| 125 | 16.2 ms | 7.85 ms | Medius |
| 60 | 24.7 ms | 16.4 ms | Medius |
| 30 | 33.7 ms | 16.7 ms | Medius |

## Smoothing settings

Each box's smoothing settings, measured the same way on the PC's USB bus: 40 single moves into a still mouse, and 100 one-count moves 150-250 ms apart into a moving 1 kHz mouse.

#### Each smoothing setting

| Box | Setting | One count, last count p50 | 100 counts, last count p50 | Empty reports, 40 one-count moves | One count into a moving mouse, p50 |
| --- | --- | --- | --- | --- | --- |
| Stock | Interpolation AUTO _(default)_ | 64.2 ms | 64 ms | 2,520 | 71.6 ms |
| Stock | Interpolation 0 | 4.17 ms | 4.3 ms | 120 | 11.7 ms |
| Stock | Interpolation 25 | 5.33 ms | 5.43 ms | 160 | 12.7 ms |
| Stock | Interpolation 50 | 17.1 ms | 17.1 ms | 640 | 24.7 ms |
| Stock | Interpolation 100 | 65 ms | 65.3 ms | 2,560 | 72.6 ms |
| Medius | Render DESPIKED _(default)_ | 1.03 ms | 1.02 ms | 0 | 4.07 ms |
| Medius | Render UNSMOOTHED | 0.964 ms | 1.01 ms | 0 | 2.08 ms |
| Medius | Render STOCK | 0.994 ms | 0.929 ms | 0 | 5.97 ms |
| Medius | Render OFF | 0.939 ms | 1.09 ms | 0 | 1.2 ms |
| Medius | Render DESPIKED, full rendering | 0.913 ms | 0.903 ms | 0 | 4.36 ms |
| Medius | Render OFF, spread 0 | 0.876 ms | 0.978 ms | 1 | 1.08 ms |

## Extra reports

Reports each box emitted while injecting: beside a 1 kHz mouse moving in every report, in a steady stream of moves into a still mouse, and beside a mouse reporting at 1 kHz or 125 Hz. A 1 kHz mouse sends ~2,500 reports in 2.5 s, a 125 Hz one ~312.

#### Reports carrying only injected motion

Stock `km.move`Medius `MOVE`

| Mouse | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Moving 1 kHz mouse | 2,617-2,648 | 0 | Medius |

#### Reports carrying only injected motion beside a mouse moving at a varying speed, in 30 s

Stock `km.move`Medius `MOVE`

| Moves sent | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| 1,000 moves/s | 5,220 | 0 | Medius |
| 500 moves/s | 3,902 | 0 | Medius |
| 125 moves/s | 1,087 | 0 | Medius |

#### Reports carrying only injected motion beside a mouse moving at a varying speed, in 5 s

Stock `km.move`Medius `MOVE`

| Moves sent | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| 30 moves/s | 11 | 0 | Medius |
| 10 moves/s | 0 | 0 | Equal |

#### Empty reports in 2 s of one-count moves, mouse still

Stock `km.move`Medius `MOVE`

| Moves/s | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| 1,000 | 28 | 0 | Medius |
| 500 | 1,010 | 2 | Medius |
| 250 | 1,508 | 1 | Medius |
| 125 | 1,758 | 2 | Medius |
| 60 | 1,888 | 1 | Medius |
| 30 | 1,931 | 2 | Medius |

#### Reports in 2.5 s beside a moving mouse, injecting for 2 s

Stock `km.move`Medius `MOVE`

| Mouse and moves | Stock`km.move` | Medius`MOVE` |
| --- | --- | --- |
| 1 kHz mouse, 1,000 moves/s | 2,500 | 2,501 |
| 1 kHz mouse, 125 moves/s | 2,492 | 2,492 |
| 125 Hz mouse, 1,000 moves/s | 2,073 | 312 |
| 125 Hz mouse, 125 moves/s | 1,316 | 312 |

## Counts arriving

Runs of one-count moves, with the total on the PC checked against the counts sent.

#### Total, default moves

Stock `km.move`Medius `MOVE`

| Mouse and moves | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Still mouse, 2,000 moves at 1,000/s | Exact | Exact | Equal |
| Moving 1 kHz mouse, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Moving 1 kHz mouse, 2,000 moves at 1,000/s | Exact | Exact | Equal |
| Moving 125 Hz mouse, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Moving 125 Hz mouse, 2,000 moves at 1,000/s | Exact | Exact | Equal |
| Mouse moving at a varying speed, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Mouse moving at a varying speed, 2,000 moves at 1,000/s | 1 count short | Exact | Medius |

#### Total, immediate moves

Stock `km.move_now`Medius `MOVE(NOW)`

| Mouse and moves | Stock`km.move_now` | Medius`MOVE(NOW)` | Result |
| --- | --- | --- | --- |
| Still mouse, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Still mouse, 2,000 moves at 1,000/s | Exact | Exact | Equal |
| Moving 1 kHz mouse, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Moving 1 kHz mouse, 2,000 moves at 1,000/s | Exact | Exact | Equal |
| Moving 125 Hz mouse, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Moving 125 Hz mouse, 2,000 moves at 1,000/s | Exact | Exact | Equal |
| Mouse moving at a varying speed, 400 moves 30-60 ms apart | Exact | Exact | Equal |
| Mouse moving at a varying speed, 2,000 moves at 1,000/s | Exact | Exact | Equal |

#### Total, default moves at a steady rate

Stock `km.move`Medius `MOVE`

| Mouse and moves | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Still mouse, 500 moves/s | Exact | Exact | Equal |
| Still mouse, 250 moves/s | Exact | Exact | Equal |
| Still mouse, 125 moves/s | Exact | Exact | Equal |
| Still mouse, 60 moves/s | Exact | Exact | Equal |
| Still mouse, 30 moves/s | Exact | Exact | Equal |

#### Counts arriving from two runs of 15,000 default moves

Stock `km.move`Medius `MOVE`

| Mouse and moves | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Moving 1 kHz mouse, 1,000 moves/s | 29,977/30,000 | 30,000/30,000 | Medius[Stock defect](/comparison/defect-inj-stock-lost-counts.md) |

#### Counts in the wrong direction

Stock `km.move`Medius `MOVE`

| Mouse and moves | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Moving 1 kHz mouse, 400 moves 30-60 ms apart | None | None | Equal |
| Moving 125 Hz mouse, 400 moves 30-60 ms apart | None | None | Equal |
| Mouse moving at a varying speed, 400 moves 30-60 ms apart | None | None | Equal |

#### Counts arriving from 15 s of default moves into a moving 1 kHz mouse

Stock `km.move`Medius `MOVE`

| Mouse and moves | Stock`km.move` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Counting mouse, 1,000 moves/s | 14,988/15,000 | 15,000/15,000 | Medius |
| Counting mouse, 500 moves/s | 7,500/7,500 | 7,500/7,500 | Equal |
| Counting mouse, 125 moves/s | 1,870/1,875 | 1,875/1,875 | Medius |
| Mouse moving at a varying speed, 1,000 moves/s | 14,989/15,000 | 15,000/15,000 | Medius |
| Mouse moving at a varying speed, 500 moves/s | 7,497/7,500 | 7,500/7,500 | Medius |
| Mouse moving at a varying speed, 125 moves/s | 1,873/1,875 | 1,875/1,875 | Medius |

## Move into a new clone

A move and a click sent right after the box cloned a new device, three tries each.

#### Counts arriving within 1 s from three 10-count moves

Stock `km.move_now`Medius `MOVE(NOW)`

| Device | Stock`km.move_now` | Medius`MOVE(NOW)` | Result |
| --- | --- | --- | --- |
| No native report yet | 0/30 | 30/30 | Medius[Stock defect](/comparison/defect-inj-fresh-clone-no-injection.md) |
| Native report every 100 ms | 30/30 | 30/30 | Equal |
| One native report at its start | 20/30 | 30/30 | Medius |

#### Clicks arriving within 1 s, three tries

| Device | Stock | Medius | Result |
| --- | --- | --- | --- |
| No native report yet | All lost | All arrive | Medius |
| Native report every 100 ms | All arrive | All arrive | Equal |
| One native report at its start | Some arrive | All arrive | Medius |

## Wheel and horizontal scroll

Injected wheel and horizontal scroll (pan), one command at a time, timed on the PC's USB bus.

#### Wheel and pan latency, p50

Stock `km.wheel`Medius `MOVE`

| Command | Stock`km.wheel` | Medius`MOVE` | Result |
| --- | --- | --- | --- |
| Wheel 1, mouse still | 0.73 ms | 0.941 ms | Stock |
| Wheel 5, mouse still | 0.778 ms | 0.971 ms | Stock |
| Wheel -3, mouse still | 0.917 ms | 0.858 ms | Medius |
| Wheel 1, 1 kHz mouse moving | 8.58 ms | 1.35 ms | Medius |

#### Horizontal scroll reaching the PC

| Command | Stock | Medius | Result |
| --- | --- | --- | --- |
| Pan 1, 40 times | Refused | Arrives | Medius |

## Unsmoothed moves

Stock's RAW\_MOVE (documented as skipping its smoothing) against Medius's MOVE(NOW), timed on the PC's USB bus: one at a time, and as a stream of 200 at 1,000/s.

#### Unsmoothed move latency, p50

Stock `RAW_MOVE`Medius `MOVE(NOW)`

| Mouse | Stock`RAW_MOVE` | Medius`MOVE(NOW)` | Result |
| --- | --- | --- | --- |
| Still mouse | 0.65 ms | 1.07 ms | Stock |
| Moving 1 kHz mouse | 8.59 ms | 1.13 ms | Medius |

#### Counts arriving from 200 unsmoothed moves at 1,000/s

Stock `RAW_MOVE`Medius `MOVE(NOW)`

| Mouse | Stock`RAW_MOVE` | Medius`MOVE(NOW)` | Result |
| --- | --- | --- | --- |
| Still mouse | 16/200 | 200/200 | Medius |
