トラックポイント
TrackPoint はキーボードの中央に位置するポインティングスティックに対する Lenovo の登録商標です。トラックポイントは xf86-input-evdev や xf86-input-libinput でサポートされています。
デフォルトの Xorg ではクリックとポイントをサポートしていますが、evdev
ドライバーで中クリックやスクロールを使うには設定が必要です。
目次
GUI の設定
gpointing-device-settings パッケージをインストールしてください。
中ボタンのスクロール
xf86-input-libinput を使用する場合、デフォルトで中ボタンのスクロールが有効になります。
xf86-input-evdev を使用する場合、中ボタンのスクロールは xorg-xinput パッケージの xinput でサポートされます。例:
~/.xinitrc
xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 1 xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 2 xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 200 xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 6 7 4 5
Xorg の設定
トラックポイントで中マウスボタンを押すことによるスクロールを有効にするには、/etc/X11/xorg.conf.d/20-thinkpad.conf
を作成してください (TPPS/2 IBM TrackPoint
は xinput で確認できるデバイス名に置き換えてください):
Section "InputClass" Identifier "Trackpoint Wheel Emulation" Driver "evdev" MatchProduct "TPPS/2 IBM TrackPoint" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection
Sysfs 属性
トラックポイントでは属性を /sys/devices/platform/i8042/serio1/
のファイルから変更することができます。例えば、手動でタップでクリック機能を有効にするには:
# echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select
起動時に設定
udev の設定ルール
以下のルールは起動時にトラックポイントの速度を上げてタップによる選択 (上を参照) を有効にします。値は自由に変更することができ、/sys/devices/platform/i8042/serio1/serio2/
のファイルに他の変更を加えることもできます。ルールはトラックポイントしか存在しないデバイスでも機能します。
/etc/udev/rules.d/10-trackpoint.rules
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/sensitivity}="240", ATTR{device/press_to_select}="1"
systemd.path ユニット
ブートプロセスの中で /sys/devices/platform/i8042/serio1/serio2/
の属性やファイルが現れるのが遅すぎて上記の udev ルールを使う方法が使えないという 報告 がフォーラムにあります。代わりに systemd.path ユニットを使ってトラックポイントの属性を設定することができます。
まず /usr/local/bin/trackpoint_configuration.sh
とう名前のスクリプトを作成してください。スクリプトの中で #Sysfs 属性に書かれているようにトラックポイントの属性を設定します。それから以下の systemd ユニットを作成してください。スクリプトで変更する属性は全て PathExists
に指定してください。
/etc/systemd/system/trackpoint_parameters.path
[Unit] Description=Watch for, and modify, Trackpoint attributes [Path] PathExists=/sys/devices/platform/i8042/serio1/press_to_select [Install] WantedBy=default.target
/etc/systemd/system/trackpoint_parameters.service
[Unit] Description=Set TrackPoint attributes [Service] ExecStart=/usr/local/bin/trackpoint_configuration.sh
最後に trackpoint_parameters.path
を起動・有効化してください。
udev hwdb エントリ
Libinput は udev ハードウェアデータベース のエントリに基づいて sysfs にパラメータを適用します。Wayland コンポジタでは libinput が唯一の入力インターフェイスになります。Wayland コンポジタや X セッションを起動する前に変更を行っても上書きされてしまいます。
libinput のデフォルト設定を上書きするには、ローカル hwdb エントリを追加してください:
/etc/udev/hwdb.d/99-trackpoint.hwdb
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:* POINTINGSTICK_SENSITIVITY=250 POINTINGSTICK_CONST_ACCEL=1.5
udev ハードウェアデータベース で様々なベンダー/モデルキーを見つけることができます。
変更を適用するには udev の hwdb をリロードします:
# udevadm hwdb --update
コンポジタや X セッションを再起動する前に変更をテストするには、まず以下のコマンドでデバイスの入力ノード /dev/input/eventX
を確認してください:
# libinput-list-devices
そして以下のコマンドを実行してデバッグ出力を生成:
# udevadm trigger /sys/class/input/eventX # udevadm test /sys/class/input/eventX
最後に、Wayland コンポジタや X セッションを再起動して変更を適用してください。
トラブルシューティング
トラックポイントが認識されない、あるいは数分後に認識される
カーネルのバグが原因です。参照: https://bugzilla.kernel.org/show_bug.cgi?id=33292
対処方法は psmouse
モジュールに proto=bare
を指定することです。ただし、これを設定するとクリックパッドによるスクロールと2本指の中クリックが無効化されてしまいます:
# modprobe psmouse proto=bare
トラックポイントのボタンが動かない場合がある
BIOS でタッチパッドを無効化すると間違ったボタンが無効になったり、トラックポイントのボタンが安定して動作しない場合、psmouse
モジュールに proto=imps
を設定することで解決できます:
# rmmode psmouse; modprobe psmouse proto=imps