56 lines
1.4 KiB
Rust
56 lines
1.4 KiB
Rust
use std::fmt::{Display, Formatter};
|
|
|
|
use enum_map::Enum;
|
|
use serde::Deserialize;
|
|
|
|
use loupedeck_serial::characteristics::LoupedeckButton;
|
|
|
|
#[derive(Debug, Eq, PartialEq, Hash, Clone, Copy, Deserialize, Enum)]
|
|
pub enum ButtonPosition {
|
|
#[serde(rename = "0")]
|
|
N0,
|
|
#[serde(rename = "1")]
|
|
N1,
|
|
#[serde(rename = "2")]
|
|
N2,
|
|
#[serde(rename = "3")]
|
|
N3,
|
|
#[serde(rename = "4")]
|
|
N4,
|
|
#[serde(rename = "5")]
|
|
N5,
|
|
#[serde(rename = "6")]
|
|
N6,
|
|
#[serde(rename = "7")]
|
|
N7,
|
|
}
|
|
|
|
impl ButtonPosition {
|
|
pub fn of(button: &LoupedeckButton) -> Self {
|
|
match button {
|
|
LoupedeckButton::N0 => Self::N0,
|
|
LoupedeckButton::N1 => Self::N1,
|
|
LoupedeckButton::N2 => Self::N2,
|
|
LoupedeckButton::N3 => Self::N3,
|
|
LoupedeckButton::N4 => Self::N4,
|
|
LoupedeckButton::N5 => Self::N5,
|
|
LoupedeckButton::N6 => Self::N6,
|
|
LoupedeckButton::N7 => Self::N7,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Display for ButtonPosition {
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
|
f.write_str(match self {
|
|
ButtonPosition::N0 => "0",
|
|
ButtonPosition::N1 => "1",
|
|
ButtonPosition::N2 => "2",
|
|
ButtonPosition::N3 => "3",
|
|
ButtonPosition::N4 => "4",
|
|
ButtonPosition::N5 => "5",
|
|
ButtonPosition::N6 => "6",
|
|
ButtonPosition::N7 => "7",
|
|
})
|
|
}
|
|
}
|