「トラックポイント」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「[[zh-CN:」を「[[zh-hans:」に置換)
 
(4人の利用者による、間の9版が非表示)
3行目: 3行目:
 
[[en:TrackPoint]]
 
[[en:TrackPoint]]
 
[[zh-hans:TrackPoint]]
 
[[zh-hans:TrackPoint]]
TrackPoint はキーボードの中央に位置するポインティングスティックに対する Lenovo の登録商標です。トラックポイントは {{Pkg|xf86-input-evdev}} や {{Pkg|xf86-input-libinput}} でサポートされています。[[Xorg]] では evdev ドライバーがデフォルトです。
+
TrackPoint はキーボードの中央に位置するポインティングスティックに対する Lenovo の登録商標です。トラックポイントは {{Pkg|xf86-input-evdev}} や {{Pkg|xf86-input-libinput}} でサポートされています。
   
デフォルトの [[Xorg]] ではクリックとポイントをサポートしていますが、中クリックやスクロールを使うには設定が必要です。
+
デフォルトの [[Xorg]] ではクリックとポイントをサポートしていますが、{{ic|evdev}} ドライバーで中クリックやスクロールを使うには設定が必要です。
   
 
== GUI の設定 ==
 
== GUI の設定 ==
   
{{Pkg|gpointing-device-settings}} パッケージを[[インストール]]してください。
+
{{AUR|gpointing-device-settings}} パッケージを[[インストール]]してください。
  +
  +
{{Note|上記のソフトウェアはメンテナンスが止まっています (最後のリリースは2013年です)。{{Pkg|xf86-input-libinput}} を使用する場合、細かい設定ができない可能性があります。}}
   
 
==中ボタンのスクロール==
 
==中ボタンのスクロール==
18行目: 20行目:
   
 
{{hc|~/.xinitrc|
 
{{hc|~/.xinitrc|
tpset() { xinput set-prop "''TPPS/2 IBM TrackPoint''" "$@"; }
+
xinput set-prop "''TPPS/2 IBM TrackPoint''" "Evdev Wheel Emulation" 1
  +
xinput set-prop "''TPPS/2 IBM TrackPoint''" "Evdev Wheel Emulation Button" 2
 
tpset "Evdev Wheel Emulation" 1
+
xinput set-prop "''TPPS/2 IBM TrackPoint''" "Evdev Wheel Emulation Timeout" 200
tpset "Evdev Wheel Emulation Button" 2
+
xinput set-prop "''TPPS/2 IBM TrackPoint''" "Evdev Wheel Emulation Axes" 6 7 4 5
tpset "Evdev Wheel Emulation Timeout" 200
 
tpset "Evdev Wheel Emulation Axes" 6 7 4 5
 
tpset "Device Accel Constant Deceleration" 0.95
 
 
}}
 
}}
   
32行目: 31行目:
 
}}
 
}}
   
  +
=== Xorg の設定 ===
== タップで選択 ==
 
 
TrackPoint ではタッチパッドのような tap-to-click 機能が使えます。手動で有効にするには:
 
 
# echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select
 
 
{{Note|{{ic|press_to_select}} ファイルの位置は使用するデバイスによって変わります。トラックポイントとタッチパッドが両方存在するコンピュータでは {{ic|/sys/devices/platform/i8042/serio1/serio2/}} のパスが使われますが、トラックポイントデバイスがしか存在しない場合は {{ic|/sys/devices/platform/i8042/serio1/}} のパスが使われます。}}
 
 
== udev の設定ルール ==
 
以下のルールは起動時にトラックポイントの'''速度'''を上げて'''タップによる選択''' (上を参照) を有効にします。値は自由に変更することができ、{{ic|/sys/devices/platform/i8042/serio1/serio2/}} のファイルに他の変更を加えることもできます。ルールはトラックポイントしか存在しないデバイスでも機能します。
 
 
{{hc|1=/etc/udev/rules.d/10-trackpoint.rules|2=
 
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/sensitivity}="240"
 
}}
 
 
== Xorg の設定 ==
 
   
 
トラックポイントで中マウスボタンを押すことによるスクロールを有効にするには、{{ic|/etc/X11/xorg.conf.d/20-thinkpad.conf}} を作成してください ({{ic|TPPS/2 IBM TrackPoint}} は ''xinput'' で確認できるデバイス名に置き換えてください):
 
トラックポイントで中マウスボタンを押すことによるスクロールを有効にするには、{{ic|/etc/X11/xorg.conf.d/20-thinkpad.conf}} を作成してください ({{ic|TPPS/2 IBM TrackPoint}} は ''xinput'' で確認できるデバイス名に置き換えてください):
53行目: 37行目:
 
Section "InputClass"
 
Section "InputClass"
 
Identifier "Trackpoint Wheel Emulation"
 
Identifier "Trackpoint Wheel Emulation"
  +
Driver "evdev"
 
MatchProduct "''TPPS/2 IBM TrackPoint''"
 
MatchProduct "''TPPS/2 IBM TrackPoint''"
 
MatchDevicePath "/dev/input/event*"
 
MatchDevicePath "/dev/input/event*"
61行目: 46行目:
 
Option "YAxisMapping" "4 5"
 
Option "YAxisMapping" "4 5"
 
EndSection
 
EndSection
  +
  +
=== 2ボタントラックポイント ===
  +
ボタンが2つあるトラックポイントの場合、{{Pkg|xf86-input-libinput}} を使うと、スクロールボタンを右クリックボタンに設定することができます。
  +
  +
''device'' を {{ic|xinput}} を実行するとわかるデバイス名に置き換えてください:
  +
  +
$ xinput set-prop "''device''" "libinput Button Scrolling Button" 3
  +
  +
== Sysfs 属性 ==
  +
  +
トラックポイントでは属性を {{ic|/sys/devices/platform/i8042/serio1/}} のファイルから変更することができます。例えば、手動でタップでクリック機能を有効にするには:
  +
  +
# echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select
  +
  +
{{Note|{{ic|press_to_select}} ファイルの位置は使用するデバイスによって変わります。トラックポイントとタッチパッドが両方存在するコンピュータでは {{ic|/sys/devices/platform/i8042/serio1/serio2/}} のパスが使われますが、トラックポイントデバイスがしか存在しない場合は {{ic|/sys/devices/platform/i8042/serio1/}} のパスが使われます。}}
  +
  +
=== 起動時に設定 ===
  +
  +
==== udev ルール ====
  +
  +
このルールは、トラックポイントの'''速度'''を上げ、起動時に'''タップして選択'''(上記を参照)できるようにします。
  +
  +
{{hc|1=/etc/udev/rules.d/10-trackpoint.rules|2=
  +
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/sensitivity}="240", ATTR{device/press_to_select}="1"
  +
}}
  +
  +
==== systemd.path ユニット ====
  +
  +
ブートプロセスの中で {{ic|/sys/devices/platform/i8042/serio1/serio2/}} の属性やファイルが現れるのが遅すぎて上記の udev ルールを使う方法が使えないという [https://bbs.archlinux.org/viewtopic.php?id=199998 報告] がフォーラムにあります。代わりに ''systemd.path'' ユニットを使ってトラックポイントの属性を設定することができます。
  +
  +
まず {{ic|/usr/local/bin/trackpoint_configuration.sh}} とう名前のスクリプトを作成してください。スクリプトの中で [[#Sysfs 属性]]に書かれているようにトラックポイントの属性を設定します。それから以下の systemd ユニットを作成してください。スクリプトで変更する属性は全て {{ic|PathExists}} に指定してください。
  +
  +
{{hc|/etc/systemd/system/trackpoint_parameters.path|2=
  +
[Unit]
  +
Description=Watch for, and modify, Trackpoint attributes
  +
  +
[Path]
  +
PathExists=/sys/devices/platform/i8042/serio1/press_to_select
  +
  +
[Install]
  +
WantedBy=default.target
  +
}}
  +
  +
{{hc|/etc/systemd/system/trackpoint_parameters.service|2=
  +
[Unit]
  +
Description=Set TrackPoint attributes
  +
  +
[Service]
  +
ExecStart=/usr/local/bin/trackpoint_configuration.sh
  +
}}
  +
  +
最後に {{ic|trackpoint_parameters.path}} を[[起動]]・[[有効化]]してください。
  +
  +
==== udev hwdb エントリ ====
  +
  +
Libinput は [https://github.com/systemd/systemd/blob/master/hwdb/70-pointingstick.hwdb udev ハードウェアデータベース] のエントリに基づいて sysfs にパラメータを適用します。Wayland コンポジタでは libinput が唯一の入力インターフェイスになります。Wayland コンポジタや X セッションを起動する前に変更を行っても上書きされてしまいます。
  +
  +
libinput のデフォルト設定を上書きするには、ローカル hwdb エントリを追加してください:
  +
  +
{{hc|/etc/udev/hwdb.d/99-trackpoint.hwdb|2=
  +
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:*
  +
POINTINGSTICK_SENSITIVITY=250
  +
}}
  +
  +
[https://github.com/systemd/systemd/blob/master/hwdb/70-pointingstick.hwdb udev ハードウェアデータベース] で様々なベンダー/モデルキーを見つけることができます。なお、[https://cgit.freedesktop.org/wayland/libinput/commit/src/evdev.c?id=3669fa10dff95371658647272ef7ac7a3ef29a61 このコミットから]、libinput は POINTINGSTICK_CONST_ACCEL 設定パラメータを無視し、POINTINGSTICK_SENSITIVITY (0から255の値をとります) を参照します。
  +
  +
変更を適用するには udev の hwdb をリロードします:
  +
  +
# udevadm hwdb --update
  +
  +
コンポジタや X セッションを再起動する前に変更をテストするには、まず以下のコマンドでデバイスの入力ノード {{ic|/dev/input/eventX}} を確認してください:
  +
  +
# libinput-list-devices
  +
  +
そして以下のコマンドを実行してデバッグ出力を生成:
  +
  +
# udevadm trigger /sys/class/input/eventX
  +
# udevadm test /sys/class/input/eventX
  +
  +
{{Note|上記のコマンドでは hwdb からパラメータは適用されませんが、{{ic|udevadm test}} コマンドの出力で変更を確認できます。}}
  +
  +
最後に、Wayland コンポジタや X セッションを再起動して変更を適用してください。
  +
  +
==== device-quirks ====
  +
  +
{{ic|libinput}} は {{ic|.ini}} スタイルの設定ファイルに移行しており、トラックポイントのパラメータを {{ic|/etc/libinput/}} 内で上書きすることで調節できます。
  +
  +
例えば、トラックポイントの速度を上書きするには、{{ic|/etc/libinput/local-overrides.quirks}} を次のように作成してください:
  +
[Trackpoint Override]
  +
MatchUdevType=pointingstick
  +
AttrTrackpointMultiplier=0.75
  +
  +
詳細については、公式ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html#installing-temporary-local-device-quirks libinput: Installing temporary local device quirks] を参照してください。
  +
  +
{{Warning|Model quirks は内部 API であり、後方互換性の保証なく突然変更されることがありえます。ディストリビューション側が libinput をアップデートするまでの方策としてのみ利用するようにしてください。}}
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
68行目: 148行目:
   
 
対処方法は {{ic|psmouse}} モジュールに {{ic|1=proto=bare}} を指定することです。ただし、これを設定するとクリックパッドによるスクロールと2本指の中クリックが無効化されてしまいます:
 
対処方法は {{ic|psmouse}} モジュールに {{ic|1=proto=bare}} を指定することです。ただし、これを設定するとクリックパッドによるスクロールと2本指の中クリックが無効化されてしまいます:
modprobe psmouse proto=bare
+
# modprobe psmouse proto=bare
  +
  +
=== トラックポイントのボタンが動かない場合がある ===
  +
  +
BIOS でタッチパッドを無効化すると間違ったボタンが無効になったり、トラックポイントのボタンが安定して動作しない場合、{{ic|psmouse}} モジュールに {{ic|1=proto=imps}} を設定することで解決できます:
  +
# rmmod psmouse; modprobe psmouse proto=imps
  +
  +
=== サスペンド後に二本指でのスクロールが機能しなくなる ===
  +
  +
いくつかのラップトップでは、psmouse が起動に失敗することや、サスペンド後に復帰しないことがあります:
  +
  +
psmouse serio1: synaptics: Unable to initialize device
  +
  +
カーネルコマンドラインに {{ic|1=psmouse.synaptics_intertouch=0}} を追記してみてください。
  +
  +
=== Trackpoint moves on its own ===
  +
  +
On some ThinkPads the TrackPoint cursor moves spontaneously after release and it does not stop. This happens because of a low value of the {{ic|drift_time}} parameter (e.g. 5), you need to change it to 25 or 30 to fix the problem. This can be done with a [[udev]] rule:
  +
  +
{{hc|/etc/udev/rules.d/10-trackpoint.rules|2=
  +
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/drift_time}="25"
  +
}}
   
 
== 参照 ==
 
== 参照 ==
   
* [http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint How to configure the TrackPoint - ThinkWiki]
+
* [https://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint How to configure the TrackPoint - ThinkWiki]
 
* [https://gist.githubusercontent.com/noromanba/11261595/raw/478cf4c4d9b63f1e59364a6f427ffccd63db5e1e/thinkpad-trackpoint-speed.mkd Trackpoint speed]
 
* [https://gist.githubusercontent.com/noromanba/11261595/raw/478cf4c4d9b63f1e59364a6f427ffccd63db5e1e/thinkpad-trackpoint-speed.mkd Trackpoint speed]
 
* [https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint/553926 What is the best way to configure a Thinkpad's TrackPoint?]
 
* [https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint/553926 What is the best way to configure a Thinkpad's TrackPoint?]

2023年5月14日 (日) 09:16時点における最新版

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

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

GUI の設定

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

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

中ボタンのスクロール

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
ノート:
  • デバイスの名前は 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

2ボタントラックポイント

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

devicexinput を実行するとわかるデバイス名に置き換えてください:

$ xinput set-prop "device" "libinput Button Scrolling Button" 3

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 ルール

このルールは、トラックポイントの速度を上げ、起動時にタップして選択(上記を参照)できるようにします。

/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

udev ハードウェアデータベース で様々なベンダー/モデルキーを見つけることができます。なお、このコミットから、libinput は POINTINGSTICK_CONST_ACCEL 設定パラメータを無視し、POINTINGSTICK_SENSITIVITY (0から255の値をとります) を参照します。

変更を適用するには 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 セッションを再起動して変更を適用してください。

device-quirks

libinput.ini スタイルの設定ファイルに移行しており、トラックポイントのパラメータを /etc/libinput/ 内で上書きすることで調節できます。

例えば、トラックポイントの速度を上書きするには、/etc/libinput/local-overrides.quirks を次のように作成してください:

[Trackpoint Override]
MatchUdevType=pointingstick
AttrTrackpointMultiplier=0.75

詳細については、公式ドキュメント libinput: Installing temporary local device quirks を参照してください。

警告: Model quirks は内部 API であり、後方互換性の保証なく突然変更されることがありえます。ディストリビューション側が libinput をアップデートするまでの方策としてのみ利用するようにしてください。

トラブルシューティング

トラックポイントが認識されない、あるいは数分後に認識される

カーネルのバグが原因です。参照: https://bugzilla.kernel.org/show_bug.cgi?id=33292

対処方法は psmouse モジュールに proto=bare を指定することです。ただし、これを設定するとクリックパッドによるスクロールと2本指の中クリックが無効化されてしまいます:

# modprobe psmouse proto=bare

トラックポイントのボタンが動かない場合がある

BIOS でタッチパッドを無効化すると間違ったボタンが無効になったり、トラックポイントのボタンが安定して動作しない場合、psmouse モジュールに proto=imps を設定することで解決できます:

# rmmod psmouse; modprobe psmouse proto=imps

サスペンド後に二本指でのスクロールが機能しなくなる

いくつかのラップトップでは、psmouse が起動に失敗することや、サスペンド後に復帰しないことがあります:

psmouse serio1: synaptics: Unable to initialize device

カーネルコマンドラインに psmouse.synaptics_intertouch=0 を追記してみてください。

Trackpoint moves on its own

On some ThinkPads the TrackPoint cursor moves spontaneously after release and it does not stop. This happens because of a low value of the drift_time parameter (e.g. 5), you need to change it to 25 or 30 to fix the problem. This can be done with a udev rule:

/etc/udev/rules.d/10-trackpoint.rules
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/drift_time}="25"

参照