forked from mirrors/nixpkgs
Trackpoint scrolling on T450s et al
This commit is contained in:
parent
d7de6dad5f
commit
4835763e13
|
@ -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";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue