#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Button {
FaceBottom,
FaceLeft,
FaceRight,
FaceTop,
VirtualConfirm,
VirtualDeny,
LThumbstick,
RThumbstick,
DPadUp,
DPadDown,
DPadLeft,
DPadRight,
LShoulder,
RShoulder,
LTrigger,
RTrigger,
Special,
LSpecial,
RSpecial,
}
impl std::convert::TryFrom<gilrs::Button> for Button {
type Error = ();
fn try_from(other: gilrs::Button) -> Result<Self, Self::Error> {
match other {
gilrs::Button::South => Ok(Button::FaceBottom),
gilrs::Button::East => Ok(Button::FaceLeft),
gilrs::Button::North => Ok(Button::FaceTop),
gilrs::Button::West => Ok(Button::FaceRight),
gilrs::Button::C => Err(()),
gilrs::Button::Z => Err(()),
gilrs::Button::LeftTrigger => Ok(Button::LTrigger),
gilrs::Button::LeftTrigger2 => Ok(Button::LTrigger),
gilrs::Button::RightTrigger => Ok(Button::RTrigger),
gilrs::Button::RightTrigger2 => Ok(Button::RTrigger),
gilrs::Button::Select => Ok(Button::LSpecial),
gilrs::Button::Start => Ok(Button::RSpecial),
gilrs::Button::Mode => Ok(Button::Special),
gilrs::Button::LeftThumb => Ok(Button::LThumbstick),
gilrs::Button::RightThumb => Ok(Button::RThumbstick),
gilrs::Button::DPadUp => Ok(Button::DPadUp),
gilrs::Button::DPadDown => Ok(Button::DPadDown),
gilrs::Button::DPadLeft => Ok(Button::DPadLeft),
gilrs::Button::DPadRight => Ok(Button::DPadRight),
gilrs::Button::Unknown => Err(()),
}
}
}