use std::fmt::Debug;
#[derive(Debug, Clone, Copy)]
pub(super) enum KeyEvent {
Down,
Up,
Press,
}
impl ToString for KeyEvent {
fn to_string(&self) -> String {
match self {
Self::Down => "KEYDOWN",
Self::Up => "KEYUP",
Self::Press => "KEYPRESS",
}
.to_string()
}
}
impl From<KeyEvent> for Vec<KeyEvent> {
fn from(event: KeyEvent) -> Vec<KeyEvent> {
vec![event]
}
}
#[allow(unused)]
#[derive(Debug, Clone, Copy)]
pub enum Button {
SeekFwd,
SeekBack,
Pause,
Play,
Down,
Left,
#[doc(hidden)]
LeftAlt,
Up,
#[doc(hidden)]
UpAlt,
Right,
#[doc(hidden)]
RightAlt,
Ok,
Back,
SmartCast,
CCToggle,
Info,
Menu,
Home,
VolumeDown,
VolumeUp,
MuteOff,
MuteOn,
MuteToggle,
PicMode,
PicSize,
InputNext,
ChannelDown,
ChannelUp,
ChannelPrev,
Exit,
PowerOff,
PowerOn,
PowerToggle,
}
impl Button {
pub(super) fn codeset(&self) -> u8 {
match self {
Self::SeekFwd | Self::SeekBack | Self::Pause | Self::Play => 2,
Self::Down
| Self::Left
| Self::LeftAlt
| Self::Up
| Self::UpAlt
| Self::Right
| Self::RightAlt
| Self::Ok => 3,
Self::Back
| Self::SmartCast
| Self::CCToggle
| Self::Info
| Self::Menu
| Self::Home => 4,
Self::VolumeDown | Self::VolumeUp | Self::MuteOff | Self::MuteOn | Self::MuteToggle => {
5
}
Self::PicMode | Self::PicSize => 6,
Self::InputNext => 7,
Self::ChannelDown | Self::ChannelUp | Self::ChannelPrev => 8,
Self::Exit => 9,
Self::PowerOff | Self::PowerOn | Self::PowerToggle => 11,
}
}
pub(super) fn code(&self) -> u8 {
match self {
Self::SeekFwd => 0,
Self::SeekBack => 1,
Self::Pause => 2,
Self::Play => 3,
Self::Down => 0,
Self::Left => 1,
Self::LeftAlt => 4,
Self::Up => 8,
Self::UpAlt => 3,
Self::Right => 7,
Self::RightAlt => 5,
Self::Ok => 2,
Self::Back => 0,
Self::SmartCast => 3,
Self::CCToggle => 4,
Self::Info => 6,
Self::Menu => 8,
Self::Home => 15,
Self::VolumeDown => 0,
Self::VolumeUp => 1,
Self::MuteOff => 2,
Self::MuteOn => 3,
Self::MuteToggle => 4,
Self::PicMode => 0,
Self::PicSize => 2,
Self::InputNext => 1,
Self::ChannelDown => 0,
Self::ChannelUp => 1,
Self::ChannelPrev => 2,
Self::Exit => 0,
Self::PowerOff => 0,
Self::PowerOn => 1,
Self::PowerToggle => 2,
}
}
pub(super) fn alt(&self) -> Option<Self> {
match self {
Self::Left => Some(Self::LeftAlt),
Self::Up => Some(Self::UpAlt),
Self::Right => Some(Self::RightAlt),
_ => None,
}
}
}