mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-23 02:05:33 +07:00
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:
@@ -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),
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user