トラックポイント

提供: ArchWiki
2018年2月6日 (火) 23:09時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「http://www.thinkwiki.org/」を「https://www.thinkwiki.org/」に置換)
ナビゲーションに移動 検索に移動

TrackPoint はキーボードの中央に位置するポインティングスティックに対する Lenovo の登録商標です。トラックポイントは xf86-input-evdevxf86-input-libinput でサポートされています。

デフォルトの Xorg ではクリックとポイントをサポートしていますが、evdev ドライバーで中クリックやスクロールを使うには設定が必要です。

GUI の設定

gpointing-device-settingsAUR パッケージをインストールしてください。

ノート: 上記のソフトウェアはメンテナンスが止まっています (最後のリリースは2013年です)。xf86-input-libinput を使用する場合、細かい設定ができない可能性があります。

中ボタンのスクロール

xf86-input-libinput を使用する場合、デフォルトで中ボタンのスクロールが有効になります。

ヒント: ボタンが2つあるトラックポイントの場合、スクロールボタンを右クリックボタンに設定することができます。

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
ノート:
  • デバイスの名前は xinput --listhwinfo で確認できます。
  • "Device Accel Constant Deceleration" の行ではトラックポイントの感度を設定しています。

Xorg の設定

トラックポイントで中マウスボタンを押すことによるスクロールを有効にするには、/etc/X11/xorg.conf.d/20-thinkpad.conf を作成してください (TPPS/2 IBM TrackPointxinput で確認できるデバイス名に置き換えてください):

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
ノート: press_to_select ファイルの位置は使用するデバイスによって変わります。トラックポイントとタッチパッドが両方存在するコンピュータでは /sys/devices/platform/i8042/serio1/serio2/ のパスが使われますが、トラックポイントデバイスがしか存在しない場合は /sys/devices/platform/i8042/serio1/ のパスが使われます。

起動時に設定

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
ノート: 上記のコマンドでは hwdb からパラメータは適用されませんが、udevadm test コマンドの出力で変更を確認できます。

最後に、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

参照