OpenLogi

0x2200 · mousePointer

Read optical-sensor resolution and pointer-tuning hints — acceleration curve, OS-ballistics preference, and vertical-tuning suggestion.

Reports basic optical-sensor properties and pointer-tuning hints from the device. getMousePointerInfo (function 0) is the single call: it returns the sensor's typical resolution in DPI and a set of advisory flags the host may use to pick sensible defaults.

  • sensorResolution — typical resolution on a standard surface, in 1-DPI steps; real-world values may vary by up to ±20% depending on the surface.
  • pointerAcceleration — the ballistics curve the device suggests: None, Low, Medium, or High; hosts with multiple built-in curves can use this as the default hint.
  • suggestOsBallistics — when true, the device recommends keeping the OS-native ballistics rather than substituting the host's own curve.
  • suggestVerticalTuning — when true (typical for trackballs), the host can offer the user X/Y-to-cursor orientation tuning.

Spec: Logitech HID++ 2.0 — mousePointer. Used by: Typed wrapper in openlogi-hidpp.

Function reference

The MousePointerFeature wrapper (0x2200) exposes:

Methods

FunctionHID++ fnSignatureReturns
get_mouse_pointer_info0()MousePointerInfo

All methods are async and return Result<…, Hidpp20Error>.

Types

MousePointerInfo

Sensor resolution and pointer-tuning hints returned by get_mouse_pointer_info.

FieldTypeDescription
sensor_resolutionu16Typical sensor resolution on a standard surface, in 1-DPI steps. Real-world values may vary by up to ±20% depending on the surface.
pointer_accelerationPointerAccelerationThe acceleration curve the device suggests.
suggest_os_ballisticsboolWhen false, the host may override OS ballistics; when true, the device suggests keeping the OS-native ballistics.
suggest_vertical_tuningboolWhen true (e.g. trackballs), the host can offer the user X/Y-to-cursor orientation tuning.

PointerAcceleration

The pointer-acceleration ("ballistics") curve a device suggests, based on its physical characteristics.

VariantValueDescription
None0No acceleration suggested.
Low1A low acceleration curve.
Medium2A medium acceleration curve.
High3A high acceleration curve.

Wire format

getMousePointerInfo carries a 3-byte zero request payload and returns a 16-byte long response payload (obtained via extend_payload()).

get_mouse_pointer_info (fn 0)

Request: [0x00, 0x00, 0x00] — three padding bytes; no parameters.

Response (byte → field):

ByteFieldNotes
0sensor_resolution high byteCombined with byte 1 as big-endian u16.
1sensor_resolution low byteu16::from_be_bytes([payload[0], payload[1]])
2 bits [1:0]pointer_accelerationLow 2 bits: 0=None, 1=Low, 2=Medium, 3=High.
2 bit 2suggest_os_ballistics(flags & (1 << 2)) != 0
2 bit 3suggest_vertical_tuning(flags & (1 << 3)) != 0
3–15(reserved)Ignored.

Usage (Rust)

use hidpp::{device::Device, feature::mouse_pointer::MousePointerFeature};

// device: &mut Device, already created via Device::new(channel, index).await?
device.enumerate_features().await?;
if let Some(feat) = device.get_feature::<MousePointerFeature>() {
    let info = feat.get_mouse_pointer_info().await?;
    println!("Sensor resolution: {} DPI", info.sensor_resolution);
    println!("Acceleration hint: {:?}", info.pointer_acceleration);
    println!("Suggest OS ballistics: {}", info.suggest_os_ballistics);
    println!("Suggest vertical tuning: {}", info.suggest_vertical_tuning);
}

On this page