Trackpoint scrolling on T450s et al

Changed files
+31 -17
nixos
modules
+31 -17
nixos/modules/tasks/trackpoint.nix
···
'';
};
+
fakeButtons = mkOption {
+
default = false;
+
type = types.bool;
+
description = ''
+
Switch to "bare" PS/2 mouse support in case Trackpoint buttons are not recognized
+
properly. This can happen for example on models like the L430, T450, T450s, on
+
which the Trackpoint buttons are actually a part of the Synaptics touchpad.
+
'';
+
};
+
};
};
···
###### implementation
-
config = mkMerge [
-
(mkIf config.hardware.trackpoint.enable {
+
config =
+
let cfg = config.hardware.trackpoint; in
+
mkMerge [
+
(mkIf cfg.enable {
services.udev.extraRules =
''
-
ACTION=="add|change", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/speed}="${toString config.hardware.trackpoint.speed}", ATTR{device/sensitivity}="${toString config.hardware.trackpoint.sensitivity}"
+
ACTION=="add|change", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/speed}="${toString cfg.speed}", ATTR{device/sensitivity}="${toString cfg.sensitivity}"
'';
system.activationScripts.trackpoint =
···
'';
})
-
(mkIf config.hardware.trackpoint.emulateWheel {
-
services.xserver.config =
-
''
-
Section "InputClass"
-
Identifier "Trackpoint Wheel Emulation"
-
MatchProduct "Elantech PS/2 TrackPoint|TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint"
-
MatchDevicePath "/dev/input/event*"
-
Option "EmulateWheel" "true"
-
Option "EmulateWheelButton" "2"
-
Option "Emulate3Buttons" "false"
-
Option "XAxisMapping" "6 7"
-
Option "YAxisMapping" "4 5"
-
EndSection
-
'';
+
(mkIf (cfg.emulateWheel) {
+
services.xserver.inputClassSections =
+
[''
+
Identifier "Trackpoint Wheel Emulation"
+
MatchProduct "${if cfg.fakeButtons then "PS/2 Generic Mouse" else "Elantech PS/2 TrackPoint|TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint"}"
+
MatchDevicePath "/dev/input/event*"
+
Option "EmulateWheel" "true"
+
Option "EmulateWheelButton" "2"
+
Option "Emulate3Buttons" "false"
+
Option "XAxisMapping" "6 7"
+
Option "YAxisMapping" "4 5"
+
''];
+
})
+
+
(mkIf cfg.fakeButtons {
+
boot.extraModprobeConfig = "options psmouse proto=bare";
})
];
}