3
0
Fork 0
forked from mirrors/nixpkgs

Trackpoint scrolling on T450s et al

This commit is contained in:
Aristid Breitkreuz 2015-05-25 19:55:26 +02:00
parent d7de6dad5f
commit 4835763e13

View file

@ -45,6 +45,16 @@ with lib;
''; '';
}; };
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.
'';
};
}; };
}; };
@ -52,11 +62,13 @@ with lib;
###### implementation ###### implementation
config = mkMerge [ config =
(mkIf config.hardware.trackpoint.enable { let cfg = config.hardware.trackpoint; in
mkMerge [
(mkIf cfg.enable {
services.udev.extraRules = 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 = system.activationScripts.trackpoint =
@ -65,20 +77,22 @@ with lib;
''; '';
}) })
(mkIf config.hardware.trackpoint.emulateWheel { (mkIf (cfg.emulateWheel) {
services.xserver.config = services.xserver.inputClassSections =
'' [''
Section "InputClass" Identifier "Trackpoint Wheel Emulation"
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"}"
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*"
MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true"
Option "EmulateWheel" "true" Option "EmulateWheelButton" "2"
Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false"
Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7"
Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5"
Option "YAxisMapping" "4 5" ''];
EndSection })
'';
(mkIf cfg.fakeButtons {
boot.extraModprobeConfig = "options psmouse proto=bare";
}) })
]; ];
} }