use super::opcode::{INJ_MOTION_CURSOR, INJ_MOTION_WHEEL, OPT_EMIT, OPT_IMPERFECT, OPT_MOVE_RIDE};
pub fn move_cursor_payload(dx: i16, dy: i16) -> [u8; 5] {
let dx = dx.to_le_bytes();
let dy = dy.to_le_bytes();
[INJ_MOTION_CURSOR, dx[0], dx[1], dy[0], dy[1]]
}
pub fn move_wheel_payload(dz: i16) -> [u8; 3] {
let d = dz.to_le_bytes();
[INJ_MOTION_WHEEL, d[0], d[1]]
}
pub fn inject_payload(class: u8, id: u16, action: u8) -> [u8; 4] {
let u = id.to_le_bytes();
[class, u[0], u[1], action]
}
pub fn query_payload(what: u8) -> [u8; 1] {
[what]
}
pub fn led_payload(target: u8, mode: u8, level: u8) -> [u8; 3] {
[target, mode, level]
}
pub fn lock_payload(class: u8, usage: u16, direction: u8, state: u8) -> [u8; 5] {
let u = usage.to_le_bytes();
[class, u[0], u[1], direction, state]
}
pub fn catch_payload(mask: u8) -> [u8; 1] {
[mask]
}
pub fn imperfect_payload(allow: bool) -> [u8; 2] {
[OPT_IMPERFECT, allow as u8]
}
pub fn move_ride_payload(timeout_ms: u16) -> [u8; 3] {
let t = timeout_ms.to_le_bytes();
[OPT_MOVE_RIDE, t[0], t[1]]
}
pub fn emit_pace_payload(mode: u8, hz: u16) -> [u8; 4] {
let h = hz.to_le_bytes();
[OPT_EMIT, mode, h[0], h[1]]
}