Add clickfinger in touchpad config (#256)

* Add clickfinger in touchpad config

* Change `clickfinger` to `click-method`

* Change `bottom_areas` to `button_areas`

* Change button_areas to button-areas

For consistency.

* Reorder click methods in error message

The most usual one comes first.

* default-config: Move click-method down

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
This commit is contained in:
la .uetcis
2024-03-13 21:26:03 -07:00
committed by GitHub
parent ba4e7481c3
commit cc83ff008d
3 changed files with 40 additions and 0 deletions
+33
View File
@@ -142,6 +142,8 @@ pub struct Touchpad {
pub dwtp: bool, pub dwtp: bool,
#[knuffel(child)] #[knuffel(child)]
pub natural_scroll: bool, pub natural_scroll: bool,
#[knuffel(child, unwrap(argument, str))]
pub click_method: Option<ClickMethod>,
#[knuffel(child, unwrap(argument), default)] #[knuffel(child, unwrap(argument), default)]
pub accel_speed: f64, pub accel_speed: f64,
#[knuffel(child, unwrap(argument, str))] #[knuffel(child, unwrap(argument, str))]
@@ -170,6 +172,21 @@ pub struct Trackpoint {
pub accel_profile: Option<AccelProfile>, pub accel_profile: Option<AccelProfile>,
} }
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ClickMethod {
Clickfinger,
ButtonAreas,
}
impl From<ClickMethod> for input::ClickMethod {
fn from(value: ClickMethod) -> Self {
match value {
ClickMethod::Clickfinger => Self::Clickfinger,
ClickMethod::ButtonAreas => Self::ButtonAreas,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AccelProfile { pub enum AccelProfile {
Adaptive, Adaptive,
@@ -1469,6 +1486,20 @@ impl FromStr for Key {
} }
} }
impl FromStr for ClickMethod {
type Err = miette::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"clickfinger" => Ok(Self::Clickfinger),
"button-areas" => Ok(Self::ButtonAreas),
_ => Err(miette!(
r#"invalid click method, can be "button-areas" or "clickfinger""#
)),
}
}
}
impl FromStr for AccelProfile { impl FromStr for AccelProfile {
type Err = miette::Error; type Err = miette::Error;
@@ -1534,6 +1565,7 @@ mod tests {
tap tap
dwt dwt
dwtp dwtp
click-method "clickfinger"
accel-speed 0.2 accel-speed 0.2
accel-profile "flat" accel-profile "flat"
tap-button-map "left-middle-right" tap-button-map "left-middle-right"
@@ -1676,6 +1708,7 @@ mod tests {
tap: true, tap: true,
dwt: true, dwt: true,
dwtp: true, dwtp: true,
click_method: Some(ClickMethod::Clickfinger),
natural_scroll: false, natural_scroll: false,
accel_speed: 0.2, accel_speed: 0.2,
accel_profile: Some(AccelProfile::Flat), accel_profile: Some(AccelProfile::Flat),
+1
View File
@@ -33,6 +33,7 @@ input {
// accel-speed 0.2 // accel-speed 0.2
// accel-profile "flat" // accel-profile "flat"
// tap-button-map "left-middle-right" // tap-button-map "left-middle-right"
// click-method "clickfinger"
} }
mouse { mouse {
+6
View File
@@ -1774,6 +1774,12 @@ pub fn apply_libinput_settings(config: &niri_config::Input, device: &mut input::
} else if let Some(default) = device.config_tap_default_button_map() { } else if let Some(default) = device.config_tap_default_button_map() {
let _ = device.config_tap_set_button_map(default); let _ = device.config_tap_set_button_map(default);
} }
if let Some(method) = c.click_method {
let _ = device.config_click_set_method(method.into());
} else if let Some(default) = device.config_click_default_method() {
let _ = device.config_click_set_method(default);
}
} }
// This is how Mutter tells apart mice. // This is how Mutter tells apart mice.