diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-21 10:10:11 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-21 10:10:11 +0400 |
| commit | c9d90afe591ea133955409b05bb9039e622da9e5 (patch) | |
| tree | ac098ff6dc5c3efdb11bb25bb361ce9cf771163f | |
| parent | d088ce248fab2af01feb4dfefddb390b1ef1d755 (diff) | |
| download | niri-c9d90afe591ea133955409b05bb9039e622da9e5.tar.gz niri-c9d90afe591ea133955409b05bb9039e622da9e5.tar.bz2 niri-c9d90afe591ea133955409b05bb9039e622da9e5.zip | |
Add left-handed input property
Closes https://github.com/YaLTeR/niri/issues/366
| -rw-r--r-- | niri-config/src/lib.rs | 9 | ||||
| -rw-r--r-- | src/input/mod.rs | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 1c63e5c1..437a3a2c 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -171,6 +171,8 @@ pub struct Touchpad { pub accel_profile: Option<AccelProfile>, #[knuffel(child, unwrap(argument, str))] pub tap_button_map: Option<TapButtonMap>, + #[knuffel(child)] + pub left_handed: bool, } #[derive(knuffel::Decode, Debug, Default, PartialEq)] @@ -181,6 +183,8 @@ pub struct Mouse { pub accel_speed: f64, #[knuffel(child, unwrap(argument, str))] pub accel_profile: Option<AccelProfile>, + #[knuffel(child)] + pub left_handed: bool, } #[derive(knuffel::Decode, Debug, Default, PartialEq)] @@ -242,6 +246,8 @@ impl From<TapButtonMap> for input::TapButtonMap { pub struct Tablet { #[knuffel(child, unwrap(argument))] pub map_to_output: Option<String>, + #[knuffel(child)] + pub left_handed: bool, } #[derive(knuffel::Decode, Debug, Default, PartialEq)] @@ -2454,11 +2460,13 @@ mod tests { accel_speed: 0.2, accel_profile: Some(AccelProfile::Flat), tap_button_map: Some(TapButtonMap::LeftMiddleRight), + left_handed: false, }, mouse: Mouse { natural_scroll: true, accel_speed: 0.4, accel_profile: Some(AccelProfile::Flat), + left_handed: false, }, trackpoint: Trackpoint { natural_scroll: true, @@ -2467,6 +2475,7 @@ mod tests { }, tablet: Tablet { map_to_output: Some("eDP-1".to_owned()), + left_handed: false, }, touch: Touch { map_to_output: Some("eDP-1".to_owned()), diff --git a/src/input/mod.rs b/src/input/mod.rs index 1984b23c..0d2074a4 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -2200,6 +2200,7 @@ pub fn apply_libinput_settings(config: &niri_config::Input, device: &mut input:: let _ = device.config_dwtp_set_enabled(c.dwtp); let _ = device.config_scroll_set_natural_scroll_enabled(c.natural_scroll); let _ = device.config_accel_set_speed(c.accel_speed); + let _ = device.config_left_handed_set(c.left_handed); if let Some(accel_profile) = c.accel_profile { let _ = device.config_accel_set_profile(accel_profile.into()); @@ -2243,6 +2244,7 @@ pub fn apply_libinput_settings(config: &niri_config::Input, device: &mut input:: let c = &config.mouse; let _ = device.config_scroll_set_natural_scroll_enabled(c.natural_scroll); let _ = device.config_accel_set_speed(c.accel_speed); + let _ = device.config_left_handed_set(c.left_handed); if let Some(accel_profile) = c.accel_profile { let _ = device.config_accel_set_profile(accel_profile.into()); @@ -2262,6 +2264,12 @@ pub fn apply_libinput_settings(config: &niri_config::Input, device: &mut input:: let _ = device.config_accel_set_profile(default); } } + + let is_tablet = device.has_capability(input::DeviceCapability::TabletTool); + if is_tablet { + let c = &config.tablet; + let _ = device.config_left_handed_set(c.left_handed); + } } pub fn mods_with_binds( |
