use crate::sys::{
self, libinput_event_get_switch_event, libinput_event_switch,
libinput_event_switch_get_base_event,
};
super::define_events!(
Switch,
libinput_event_switch,
libinput_event_switch_get_base_event,
libinput_event_get_switch_event,
Toggle,
);
impl SwitchToggleEvent {
pub fn switch_state(&self) -> SwitchState {
SwitchState::from_raw(unsafe { sys::libinput_event_switch_get_switch_state(self.raw) })
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum SwitchState {
Off,
On,
}
impl std::fmt::Display for SwitchState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Off => write!(f, "off"),
Self::On => write!(f, "on"),
}
}
}
impl SwitchState {
pub const fn from_raw(raw: sys::libinput_switch_state) -> Self {
match raw {
sys::libinput_switch_state::LIBINPUT_SWITCH_STATE_OFF => Self::Off,
sys::libinput_switch_state::LIBINPUT_SWITCH_STATE_ON => Self::On,
_ => panic!("libinput returned an invalid switch state"), }
}
}