mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-24 02:01:18 +07:00
input: enable configuring of trackpoint devices
This commit is contained in:
committed by
Ivan Molodetskikh
parent
8e1d4de0dc
commit
363e1d8764
@@ -57,6 +57,8 @@ pub struct Input {
|
||||
#[knuffel(child, default)]
|
||||
pub mouse: Mouse,
|
||||
#[knuffel(child, default)]
|
||||
pub trackpoint: Trackpoint,
|
||||
#[knuffel(child, default)]
|
||||
pub tablet: Tablet,
|
||||
#[knuffel(child)]
|
||||
pub disable_power_key_handling: bool,
|
||||
@@ -151,6 +153,16 @@ pub struct Mouse {
|
||||
pub accel_profile: Option<AccelProfile>,
|
||||
}
|
||||
|
||||
#[derive(knuffel::Decode, Debug, Default, PartialEq)]
|
||||
pub struct Trackpoint {
|
||||
#[knuffel(child)]
|
||||
pub natural_scroll: bool,
|
||||
#[knuffel(child, unwrap(argument), default)]
|
||||
pub accel_speed: f64,
|
||||
#[knuffel(child, unwrap(argument, str))]
|
||||
pub accel_profile: Option<AccelProfile>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum AccelProfile {
|
||||
Adaptive,
|
||||
@@ -924,6 +936,12 @@ mod tests {
|
||||
accel-profile "flat"
|
||||
}
|
||||
|
||||
trackpoint {
|
||||
natural-scroll
|
||||
accel-speed 0.0
|
||||
accel-profile "flat"
|
||||
}
|
||||
|
||||
tablet {
|
||||
map-to-output "eDP-1"
|
||||
}
|
||||
@@ -1043,6 +1061,11 @@ mod tests {
|
||||
accel_speed: 0.4,
|
||||
accel_profile: Some(AccelProfile::Flat),
|
||||
},
|
||||
trackpoint: Trackpoint {
|
||||
natural_scroll: true,
|
||||
accel_speed: 0.0,
|
||||
accel_profile: Some(AccelProfile::Flat),
|
||||
},
|
||||
tablet: Tablet {
|
||||
map_to_output: Some("eDP-1".to_owned()),
|
||||
},
|
||||
|
||||
@@ -41,6 +41,12 @@ input {
|
||||
// accel-profile "flat"
|
||||
}
|
||||
|
||||
trackpoint {
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
}
|
||||
|
||||
tablet {
|
||||
// Set the name of the output (see below) which the tablet will map to.
|
||||
// If this is unset or the output doesn't exist, the tablet maps to one of the
|
||||
|
||||
@@ -1622,6 +1622,18 @@ pub fn apply_libinput_settings(config: &niri_config::Input, device: &mut input::
|
||||
let _ = device.config_accel_set_profile(default);
|
||||
}
|
||||
}
|
||||
|
||||
if is_trackpoint {
|
||||
let c = &config.trackpoint;
|
||||
let _ = device.config_scroll_set_natural_scroll_enabled(c.natural_scroll);
|
||||
let _ = device.config_accel_set_speed(c.accel_speed);
|
||||
|
||||
if let Some(accel_profile) = c.accel_profile {
|
||||
let _ = device.config_accel_set_profile(accel_profile.into());
|
||||
} else if let Some(default) = device.config_accel_default_profile() {
|
||||
let _ = device.config_accel_set_profile(default);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
@@ -628,6 +628,7 @@ impl State {
|
||||
|
||||
if config.input.touchpad != old_config.input.touchpad
|
||||
|| config.input.mouse != old_config.input.mouse
|
||||
|| config.input.trackpoint != old_config.input.trackpoint
|
||||
{
|
||||
libinput_config_changed = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user