# requests

msg set_cursor = 0 {
    serial: u32,
    surface: id(wl_surface),
    hotspot_x: i32,
    hotspot_y: i32,
}

msg release = 1 {

}

# events

msg enter = 0 {
    serial: u32,
    surface: id(wl_surface),
    surface_x: fixed,
    surface_y: fixed,
}

msg leave = 1 {
    serial: u32,
    surface: id(wl_surface),
}

msg motion = 2 {
    time: u32,
    surface_x: fixed,
    surface_y: fixed,
}

msg button = 3 {
    serial: u32,
    time: u32,
    button: u32,
    state: u32,
}

msg axis = 4 {
    time: u32,
    axis: u32,
    value: fixed,
}

msg frame = 5 {

}

msg axis_source = 6 {
    axis_source: u32,
}

msg axis_stop = 7 {
    time: u32,
    axis: u32,
}

msg axis_discrete = 8 {
    axis: u32,
    discrete: i32,
}

msg axis_value120 = 9 {
    axis: u32,
    value120: i32,
}

msg axis_relative_direction = 10 {
    axis: u32,
    direction: u32,
}
