Skip to main content

muxr_core/protocol/
pane_mouse.rs

1use serde::Serialize;
2
3#[derive(rkyv::Archive, Clone, Copy, Debug, rkyv::Deserialize, Eq, PartialEq, Serialize, rkyv::Serialize)]
4pub struct ClientMousePosition {
5    /// Zero-based row in the client viewport.
6    pub row: u16,
7    /// Zero-based column in the client viewport.
8    pub col: u16,
9}
10
11/// Press or release phase for an SGR mouse event captured by the muxr client.
12#[derive(rkyv::Archive, Clone, Copy, Debug, rkyv::Deserialize, Eq, PartialEq, Serialize, rkyv::Serialize)]
13pub enum ClientMouseEventPhase {
14    /// Button press, wheel, or button-motion event.
15    Press,
16    /// Button release event.
17    Release,
18}
19
20/// Mouse event captured from the outer terminal before server-side pane translation.
21#[derive(rkyv::Archive, Clone, Copy, Debug, rkyv::Deserialize, Eq, PartialEq, Serialize, rkyv::Serialize)]
22pub struct ClientMouseEvent {
23    /// SGR button code, including modifier, wheel, and motion bits.
24    pub button: u16,
25    /// Press/motion/wheel or release phase.
26    pub phase: ClientMouseEventPhase,
27    /// Position in client viewport coordinates.
28    pub position: ClientMousePosition,
29}