request motion {
    time: u32,
    dx: fixed,
    dy: fixed,
}

request motion_absolute {
    time: u32,
    x: u32,
    y: u32,
    x_extent: u32,
    y_extent: u32,
}

request button {
    time: u32,
    button: u32,
    state: u32,
}

request axis {
    time: u32,
    axis: u32,
    value: fixed,
}

request frame {
}

request axis_source {
    axis_source: u32,
}

request axis_stop {
    time: u32,
    axis: u32,
}

request axis_discrete {
    time: u32,
    axis: u32,
    value: fixed,
    discrete: i32,
}

request destroy (destructor, since = 1) {
}
