use super::action::Action;
use super::button::ButtonId;
use super::gesture::GestureDirection;
use super::value::Binding;
#[must_use]
pub fn default_binding(button: ButtonId) -> Action {
match button {
ButtonId::LeftClick => Action::LeftClick,
ButtonId::RightClick => Action::RightClick,
ButtonId::MiddleClick => Action::MiddleClick,
ButtonId::Back => Action::BrowserBack,
ButtonId::Forward => Action::BrowserForward,
ButtonId::DpiToggle => Action::CycleDpiPresets,
ButtonId::Thumbwheel => Action::AppExpose,
ButtonId::ThumbwheelScrollUp => Action::HorizontalScrollRight,
ButtonId::ThumbwheelScrollDown => Action::HorizontalScrollLeft,
ButtonId::GestureButton => Action::MissionControl,
ButtonId::KeySearch
| ButtonId::KeyDictation
| ButtonId::KeyEmoji
| ButtonId::KeyScreenCapture
| ButtonId::KeyMicMute
| ButtonId::KeyPlayPause
| ButtonId::KeyMute
| ButtonId::KeyVolumeDown
| ButtonId::KeyVolumeUp => Action::None,
}
}
#[must_use]
pub fn default_gesture_binding(direction: GestureDirection) -> Action {
match direction {
GestureDirection::Up => Action::MissionControl,
GestureDirection::Down => Action::ShowDesktop,
GestureDirection::Left => Action::PrevTab,
GestureDirection::Right => Action::NextTab,
GestureDirection::Click => Action::AppExpose,
}
}
#[must_use]
pub fn default_binding_for(button: ButtonId) -> Binding {
match button {
ButtonId::GestureButton => Binding::Gesture(
GestureDirection::ALL
.into_iter()
.map(|d| (d, default_gesture_binding(d)))
.collect(),
),
other => Binding::Single(default_binding(other)),
}
}