iohidmanager 0.6.0

Safe Rust bindings for Apple's IOKit HID — enumerate, inspect, and subscribe to HID devices on macOS
Documentation
use crate::bridge;

pub const POINTER_ACCELERATION_KEY: &str = "HIDPointerAcceleration";
pub const TRACKPAD_SCROLL_ACCELERATION_KEY: &str = "HIDTrackpadScrollAcceleration";
pub const TRACKPAD_ACCELERATION_TYPE_KEY: &str = "HIDTrackpadAcceleration";
pub const POINTER_ACCELERATION_TYPE_KEY: &str = "HIDPointerAccelerationType";
pub const MOUSE_SCROLL_ACCELERATION_KEY: &str = "HIDMouseScrollAcceleration";
pub const MOUSE_ACCELERATION_TYPE_KEY: &str = "HIDMouseAcceleration";
pub const SCROLL_ACCELERATION_KEY: &str = "HIDScrollAcceleration";
pub const SCROLL_ACCELERATION_TYPE_KEY: &str = "HIDScrollAccelerationType";
pub const DIGITIZER_TIP_THRESHOLD_KEY: &str = "DigitizerTipThreshold";
pub const SURFACE_DIMENSIONS_KEY: &str = "SurfaceDimensions";
pub const WIDTH_KEY: &str = "Width";
pub const HEIGHT_KEY: &str = "Height";
pub const EVENT_DRIVER_HANDLES_REPORT_KEY: &str = "IOHIDEventDriverHandlesReport";
pub const SERVICE_ACCELERATION_PROPERTIES_KEY: &str = "IOHIDSetAcceleration";
pub const POINTER_ACCELERATION_MULTIPLIER_KEY: &str = "HIDPointerAccelerationMultiplier";
pub const POINTER_REPORT_RATE_KEY: &str = "HIDPointerReportRate";
pub const SCROLL_REPORT_RATE_KEY: &str = "HIDScrollReportRate";
pub const POINTER_ACCELERATION_SUPPORT_KEY: &str = "HIDSupportsPointerAcceleration";
pub const SCROLL_ACCELERATION_SUPPORT_KEY: &str = "HIDSupportsScrollAcceleration";
pub const SENSOR_CONTROL_OPTIONS_KEY: &str = "HIDDefaultSensorControlOptions";

pub const KEYBOARD_EVENT_OPTIONS_NO_KEY_REPEAT: u32 = 1 << 8;
pub const POINTER_EVENT_OPTIONS_NO_ACCELERATION: u32 = 1 << 8;
pub const SCROLL_EVENT_OPTIONS_NO_ACCELERATION: u32 = 1 << 8;
pub const SENSOR_CONTROL_DECIMATION: u32 = 1 << 0;
pub const SENSOR_CONTROL_AGGREGATION: u32 = 1 << 1;
pub const SENSOR_CONTROL_DISPATCH_CONTROL: u32 = 1 << 2;

pub const ALL_EVENT_SYSTEM_KEYS: &[(&str, &str)] = &[
    ("kIOHIDPointerAccelerationKey", POINTER_ACCELERATION_KEY),
    (
        "kIOHIDTrackpadScrollAccelerationKey",
        TRACKPAD_SCROLL_ACCELERATION_KEY,
    ),
    ("kIOHIDTrackpadAccelerationType", TRACKPAD_ACCELERATION_TYPE_KEY),
    (
        "kIOHIDPointerAccelerationTypeKey",
        POINTER_ACCELERATION_TYPE_KEY,
    ),
    ("kIOHIDMouseScrollAccelerationKey", MOUSE_SCROLL_ACCELERATION_KEY),
    ("kIOHIDMouseAccelerationTypeKey", MOUSE_ACCELERATION_TYPE_KEY),
    ("kIOHIDScrollAccelerationKey", SCROLL_ACCELERATION_KEY),
    (
        "kIOHIDScrollAccelerationTypeKey",
        SCROLL_ACCELERATION_TYPE_KEY,
    ),
    ("kIOHIDDigitizerTipThresholdKey", DIGITIZER_TIP_THRESHOLD_KEY),
    ("kIOHIDSurfaceDimensionsKey", SURFACE_DIMENSIONS_KEY),
    ("kIOHIDWidthKey", WIDTH_KEY),
    ("kIOHIDHeightKey", HEIGHT_KEY),
    (
        "kIOHIDEventDriverHandlesReport",
        EVENT_DRIVER_HANDLES_REPORT_KEY,
    ),
    (
        "kIOHIDServiceAccelerationProperties",
        SERVICE_ACCELERATION_PROPERTIES_KEY,
    ),
    (
        "kIOHIDPointerAccelerationMultiplierKey",
        POINTER_ACCELERATION_MULTIPLIER_KEY,
    ),
    ("kHIDPointerReportRateKey", POINTER_REPORT_RATE_KEY),
    ("kIOHIDScrollReportRateKey", SCROLL_REPORT_RATE_KEY),
    (
        "kIOHIDPointerAccelerationSupportKey",
        POINTER_ACCELERATION_SUPPORT_KEY,
    ),
    (
        "kIOHIDScrollAccelerationSupportKey",
        SCROLL_ACCELERATION_SUPPORT_KEY,
    ),
    (
        "kIOHIDEventServiceSensorControlOptionsKey",
        SENSOR_CONTROL_OPTIONS_KEY,
    ),
];

#[must_use]
pub fn bridge_keyboard_no_key_repeat() -> u32 {
    unsafe { bridge::iohidmanager_swift_event_keyboard_no_repeat() }
}

#[must_use]
pub fn bridge_sensor_control_decimation() -> u32 {
    unsafe { bridge::iohidmanager_swift_event_sensor_control_decimation() }
}