「Libinput」の版間の差分
(→設定) |
Kusanaginoturugi (トーク | 投稿記録) (→参照: 記事を追加) |
||
(4人の利用者による、間の16版が非表示) | |||
2行目: | 2行目: | ||
[[Category:入力デバイス]] |
[[Category:入力デバイス]] |
||
[[en:Libinput]] |
[[en:Libinput]] |
||
+ | [[es:Libinput]] |
||
+ | [[zh-hans:Libinput]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Xorg}} |
{{Related|Xorg}} |
||
12行目: | 14行目: | ||
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。 |
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。 |
||
− | libinput ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]はほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [ |
+ | libinput ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]はほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。 |
== インストール == |
== インストール == |
||
27行目: | 29行目: | ||
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。 |
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。 |
||
+ | |||
+ | === xinput を使う === |
||
まず、次を実行してください: |
まず、次を実行してください: |
||
− | # libinput |
+ | # libinput list-devices |
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。 |
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。 |
||
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。 |
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。 |
||
− | 設定できるオプションは {{man|4| |
+ | 設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。''xinput'' ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。 |
デバイスとその番号を確認するには: |
デバイスとその番号を確認するには: |
||
$ xinput list |
$ xinput list |
||
オプションを確認するには: |
オプションを確認するには: |
||
− | $ xinput list-props ''device |
+ | $ xinput list-props ''device'' |
オプションを設定するには: |
オプションを設定するには: |
||
− | $ xinput set-prop ''device |
+ | $ xinput set-prop ''device'' ''option-number'' ''setting'' |
+ | |||
+ | 例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行: |
||
+ | |||
+ | $ xinput set-prop 14 303 1 1 |
||
+ | |||
+ | または |
||
+ | |||
+ | $ xinput set-prop 14 "libinput Click Method Enabled" 1 1 |
||
+ | |||
+ | === Xorg 設定ファイルを使う === |
||
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。 |
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。 |
||
49行目: | 63行目: | ||
{{Tip|libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、{{ic|70-synaptics.conf}} のファイル名によって synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください: |
{{Tip|libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、{{ic|70-synaptics.conf}} のファイル名によって synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください: |
||
# ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf |
# ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf |
||
− | 両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。}} |
+ | 両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。}} |
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります: |
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります: |
||
63行目: | 77行目: | ||
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。 |
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。 |
||
− | |||
− | === 一般的なオプション === |
||
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。 |
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。 |
||
− | {{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4| |
+ | {{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}} |
− | 基本的な設定は以下のようになります |
+ | 基本的な設定は以下のようになります: |
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf| |
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf| |
||
Section "InputClass" |
Section "InputClass" |
||
Identifier "devname" |
Identifier "devname" |
||
Driver "libinput" |
Driver "libinput" |
||
− | Option "Device" "devpath" |
||
... |
... |
||
EndSection |
EndSection |
||
}} |
}} |
||
− | 単体の設定ファイルでお好きな数だけセクションを定義することができます。{{ic|MatchIsPointer "on"}}, {{ic|MatchIsKeyboard "on"}}, {{ic|MatchIsTouchpad "on"}}, {{ic|MatchIsTouchscreen "on"}} などを使って設定したいデバイスをフィルタリングしてください。詳しくは {{man|4| |
+ | 単体の設定ファイルでお好きな数だけセクションを定義することができます。{{ic|MatchIsPointer "on"}}, {{ic|MatchIsKeyboard "on"}}, {{ic|MatchIsTouchpad "on"}}, {{ic|MatchIsTouchscreen "on"}} などを使って設定したいデバイスをフィルタリングしてください。詳しくは {{man|4|libinput}} を参照。一般的な設定オプションは以下の通りです: |
* {{ic|"Tapping" "on"}}: タップでクリック。 |
* {{ic|"Tapping" "on"}}: タップでクリック。 |
||
− | * {{ic|"ClickMethod" "clickfinger"}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ |
+ | * {{ic|"ClickMethod" "clickfinger"}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。 |
* {{ic|"NaturalScrolling" "true"}}: ナチュラルスクロール (逆スクロール)。 |
* {{ic|"NaturalScrolling" "true"}}: ナチュラルスクロール (逆スクロール)。 |
||
* {{ic|"ScrollMethod" "edge"}}: エッジスクロール (縦スクロール)。 |
* {{ic|"ScrollMethod" "edge"}}: エッジスクロール (縦スクロール)。 |
||
92行目: | 103行目: | ||
* [[GNOME]]: |
* [[GNOME]]: |
||
** コントロールセンターの 'Mouse & Touchpad' に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。 |
** コントロールセンターの 'Mouse & Touchpad' に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。 |
||
+ | ** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。 |
||
* [[Cinnamon]]: |
* [[Cinnamon]]: |
||
** GNOME UI と同じように設定することができます。 |
** GNOME UI と同じように設定することができます。 |
||
+ | * [[MATE]]: |
||
+ | ** Mouse option available in the settings panel. Also accessible using {{ic|mate-mouse-properties}} |
||
* [[KDE|KDE Plasma]] 5: |
* [[KDE|KDE Plasma]] 5: |
||
+ | ** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。 |
||
− | ** システム設定のタッチパッドセクション (kcm_touchpad) に基本的なオプションが存在します。 |
||
+ | * [[Xfce]]: |
||
− | ** [https://github.com/amezin/pointing-devices-kcm pointing-devices-kcm] ({{AUR|kcm-pointing-devices-git}}) は新しい書き直された KCM で libinput によってサポートされている全ての入力デバイスに対応しています。 |
||
+ | ** Configured from the Mouse and Touchpad submenu in {{pkg|xfce4-settings}}. |
||
+ | == ヒントとテクニック == |
||
− | == Tips and tricks == |
||
=== ボタンの再マッピング === |
=== ボタンの再マッピング === |
||
117行目: | 132行目: | ||
=== ボタンの手動再マッピング === |
=== ボタンの手動再マッピング === |
||
− | デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます: |
+ | デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (''device'' は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください): |
$ xinput get-button-map ''device'' |
$ xinput get-button-map ''device'' |
||
ボタン番号の順番は自由に変更することができます。例: |
ボタン番号の順番は自由に変更することができます。例: |
||
135行目: | 150行目: | ||
done |
done |
||
...</nowiki>}} |
...</nowiki>}} |
||
+ | |||
+ | === タッチパッド感度の変更 === |
||
+ | |||
+ | libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。 |
||
+ | |||
+ | タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。 |
||
+ | |||
+ | {{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}} |
||
+ | |||
+ | === タッチパッドの無効化 === |
||
+ | |||
+ | タッチパッドを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable ''name''}} で無効化してください。 |
||
+ | |||
+ | {{Note| |
||
+ | * ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。 |
||
+ | * 名前に空白が含まれる場合はクォートで囲ってください。 |
||
+ | }} |
||
+ | |||
+ | 設定を永続化する場合は[[自動起動]]を見てください。 |
||
=== ジェスチャー === |
=== ジェスチャー === |
||
140行目: | 174行目: | ||
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。 |
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。 |
||
+ | ==== libinput-gestures ==== |
||
− | [[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput-debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。 |
||
+ | |||
+ | [[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。 |
||
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。 |
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。 |
||
+ | |||
+ | ==== fusuma ==== |
||
+ | |||
+ | [https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。 |
||
+ | |||
+ | {{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください: |
||
+ | |||
+ | $ gem install fusuma |
||
+ | |||
+ | また、AUR には旧バージョンが存在します: {{AUR|ruby-fusuma}}。 |
||
+ | |||
+ | それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定: |
||
+ | |||
+ | {{hc|~/.config/fusuma/config.yml|<nowiki> |
||
+ | swipe: |
||
+ | 3: |
||
+ | left: |
||
+ | shortcut: 'alt+Right' |
||
+ | right: |
||
+ | shortcut: 'alt+Left' |
||
+ | up: |
||
+ | shortcut: 'ctrl+shift+plus' |
||
+ | down: |
||
+ | shortcut: 'ctrl+minus' |
||
+ | pinch: |
||
+ | in: |
||
+ | shortcut: 'ctrl+shift+plus' |
||
+ | out: |
||
+ | shortcut: 'ctrl+minus' |
||
+ | |||
+ | threshold: |
||
+ | swipe: 0.5 |
||
+ | pinch: 0.2 |
||
+ | |||
+ | interval: |
||
+ | swipe: 0.2 |
||
+ | pinch: 0.2 |
||
+ | </nowiki>}} |
||
+ | |||
+ | スワイプの閾値を低くするとページをスワイプしすぎてしまいます。 |
||
+ | |||
+ | 上記の設定は3本指のスワイプを使います。 |
||
+ | |||
+ | ==== gebaar ==== |
||
+ | [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。 |
||
+ | Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。 |
||
+ | |||
+ | gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] |
||
+ | |||
+ | ==== GnomeExtendedGestures ==== |
||
+ | |||
+ | GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。 |
||
+ | |||
+ | === ボタンを押したままマウスでスクロールする === |
||
+ | |||
+ | マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。 |
||
+ | |||
+ | {{hc|/etc/X11/xorg.conf.d/00-mouse.conf| |
||
+ | Section "InputClass" |
||
+ | Identifier "system-mouse" |
||
+ | MatchIsPointer "on" |
||
+ | Option "ScrollMethod" "button" |
||
+ | Option "ScrollButton" "3" |
||
+ | EndSection |
||
+ | }} |
||
+ | |||
+ | === マウスホイールのスクロール速度の調整 === |
||
+ | |||
+ | マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。 |
||
+ | |||
+ | このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。 |
||
+ | |||
+ | $ xinput --set-prop 'RAPOO Rapoo 2.4G Wireless Device' 'libinput Scroll Distance Scale' 2.5 2.5 |
||
+ | |||
+ | ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。 |
||
+ | |||
+ | または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。 |
||
+ | |||
+ | $echo 6>/tmp/libinput_discrete_deltay_multiplier |
||
+ | |||
+ | フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照] |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
− | まず、 |
+ | まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。 |
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている ''evemu-describe'' を使います: |
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている ''evemu-describe'' を使います: |
||
157行目: | 274行目: | ||
$ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled |
$ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled |
||
+ | さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します: |
||
− | === KDE の Touchpad KCM におけるタッチパッドの設定が反映されない === |
||
+ | $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true |
||
− | |||
+ | $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false |
||
− | KDE の Touchpad KCM は [[Xorg]] における libinput をサポートしていますが、まだ全てを GUI で設定することはできません。''タイピング中はタッチパッドを無効化する''などの設定は使うことができません。また、グレーになっているオプションも存在します。サポートが改善されるまで、{{ic|xinput set-prop}} で手動でオプションを設定してください。 |
||
== 参照 == |
== 参照 == |
||
166行目: | 283行目: | ||
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明 |
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明 |
||
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事 |
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事 |
||
+ | * [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling |
||
+ | * [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput |
2021年11月25日 (木) 12:09時点における最新版
関連記事
libinput プロジェクトより:
- libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。
libinput ドライバーは標準的な入力デバイスはほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは libinput のドキュメント を見て下さい。
インストール
Wayland で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして libinput パッケージは既にインストールされているはずです。他に必要なドライバーはありません。
Xorg で libinput を使用する場合、xf86-input-libinput パッケージをインストールしてください。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [1]。つまり、xf86-input-
で始まる X 用のドライバーパッケージを置換できます。
また、xorg-xinput をインストールすることで実行中に設定を変更することができます。
設定
Wayland 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況によって変わります。#グラフィカルツールを参照。
Xorg 用のデフォルト設定ファイルは /usr/share/X11/xorg.conf.d/40-libinput.conf
にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。
xinput を使う
まず、次を実行してください:
# libinput list-devices
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。
グラフィカル環境を再起動すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。
設定できるオプションは libinput(4) man ページを参照してください。xinput ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。
デバイスとその番号を確認するには:
$ xinput list
オプションを確認するには:
$ xinput list-props device
オプションを設定するには:
$ xinput set-prop device option-number setting
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:
$ xinput set-prop 14 303 1 1
または
$ xinput set-prop 14 "libinput Click Method Enabled" 1 1
Xorg 設定ファイルを使う
オプションの永続的な設定については Xorg#.conf ファイルを使う を見て下さい。Logitech Marble Mouse#libinput を使うや下の#ボタンの再マッピングに設定例が載っています。
通常、入力デバイス用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、/etc/X11/xorg.conf.d/
にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。
どのデバイスが libinput によって管理されているか xorg のログファイルで確認できます。例えば、/etc/X11/xorg.conf.d/
に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:
$ grep -e "Using input driver 'libinput'" /path/to/Xorg.0.log
[ 28.799] (II) Using input driver 'libinput' for 'Power Button' [ 28.847] (II) Using input driver 'libinput' for 'Video Bus' [ 28.853] (II) Using input driver 'libinput' for 'Power Button' [ 28.860] (II) Using input driver 'libinput' for 'Sleep Button' [ 28.872] (II) Using input driver 'libinput' for 'AT Translated Set 2 keyboard' [ 28.878] (II) Using input driver 'libinput' for 'SynPS/2 Synaptics TouchPad' [ 28.886] (II) Using input driver 'libinput' for 'TPPS/2 IBM TrackPoint' [ 28.895] (II) Using input driver 'libinput' for 'ThinkPad Extra Buttons'
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、Synaptics タッチパッドドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。
カスタム設定ファイルは /etc/X11/xorg.conf.d/
に配置します。よく使われるファイル名は 30-touchpad.conf
です。
基本的な設定は以下のようになります:
/etc/X11/xorg.conf.d/30-touchpad.conf
Section "InputClass" Identifier "devname" Driver "libinput" ... EndSection
単体の設定ファイルでお好きな数だけセクションを定義することができます。MatchIsPointer "on"
, MatchIsKeyboard "on"
, MatchIsTouchpad "on"
, MatchIsTouchscreen "on"
などを使って設定したいデバイスをフィルタリングしてください。詳しくは libinput(4) を参照。一般的な設定オプションは以下の通りです:
"Tapping" "on"
: タップでクリック。"ClickMethod" "clickfinger"
: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは ドキュメント を参照。"NaturalScrolling" "true"
: ナチュラルスクロール (逆スクロール)。"ScrollMethod" "edge"
: エッジスクロール (縦スクロール)。
デバイスによっては上記の一部オプションが使えないこともあるので注意してください。
グラフィカルツール
複数の GUI ツールが存在します:
- GNOME:
- コントロールセンターの 'Mouse & Touchpad' に基本的な設定 UI が存在します。GNOME#マウスとタッチパッドも参照。
- gnome-tweaks には他にもいくつか設定が存在します。
- Cinnamon:
- GNOME UI と同じように設定することができます。
- MATE:
- Mouse option available in the settings panel. Also accessible using
mate-mouse-properties
- Mouse option available in the settings panel. Also accessible using
- KDE Plasma 5:
- キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。
- Xfce:
- Configured from the Mouse and Touchpad submenu in xfce4-settings.
ヒントとテクニック
ボタンの再マッピング
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、Xorg の設定ファイルで TappingButtonMap
オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには TappingButtonMap
を lrm
に、左・中・右にするには lmr
に設定してください。
/etc/X11/xorg.conf.d/30-touchpad.conf
Section "InputClass" Identifier "touchpad" Driver "libinput" MatchIsTouchpad "on" Option "Tapping" "on" Option "TappingButtonMap" "lmr" EndSection
デバイスがタッチパッドではない場合は MatchIsTouchpad "on"
を削除して Identifier
も変えてください。
ボタンの手動再マッピング
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (device は xinput list
で確認できるデバイス名あるいはデバイス ID に置き換えてください):
$ xinput get-button-map device
ボタン番号の順番は自由に変更することができます。例:
$ xinput set-button-map device 1 6 3 4 5 0 7
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。Wayland でも上記の設定は使えますが、device の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は xinitrc で Logitech Revolution MX マウスのボタンマッピングを変更する例です:
~/.xinitrc
... for i in $(xinput list | grep "Logitech USB Receiver" | perl -n -e'/id=(\d+)/ && print "$1\n"') do if xinput get-button-map "$i" 2>/dev/null| grep -q 20; then xinput set-button-map "$i" 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20 fi done ...
タッチパッド感度の変更
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [2] に書かれています。
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[3] を見てください。
タッチパッドの無効化
タッチパッドを無効化するには、まず xinput list
で名前を確認してから xinput disable name
で無効化してください。
設定を永続化する場合は自動起動を見てください。
ジェスチャー
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [6]、デスクトップ環境やウィンドウマネージャがまだそれらのアクションを実装していない可能性があります。
libinput-gestures
EWMH (wm-spec を参照) 互換のウィンドウマネージャでは、代わりに libinput-gestures ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを (libinput debug-events
を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。
libinput-gestures を使用するには、libinput-gesturesAUR パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは README を見てください。
fusuma
Fusuma は Ruby で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。
fusuma
の Ruby gem をインストールしてください:
$ gem install fusuma
また、AUR には旧バージョンが存在します: ruby-fusumaAUR。
それから ~/.config/fusuma/config.yml
で以下のように設定:
~/.config/fusuma/config.yml
swipe: 3: left: shortcut: 'alt+Right' right: shortcut: 'alt+Left' up: shortcut: 'ctrl+shift+plus' down: shortcut: 'ctrl+minus' pinch: in: shortcut: 'ctrl+shift+plus' out: shortcut: 'ctrl+minus' threshold: swipe: 0.5 pinch: 0.2 interval: swipe: 0.2 pinch: 0.2
スワイプの閾値を低くするとページをスワイプしすぎてしまいます。
上記の設定は3本指のスワイプを使います。
gebaar
Gebaar もジェスチャー認識ツールです。 Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。
gebaar のフォークは Gebaar にあり、gebaar-libinput-gitAUR を使ってインストールすることができます。gebaar-libinput-gitAUR はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください Gebaar
GnomeExtendedGestures
GNOME との統合が必要な場合、GnomeExtendedGestures が存在します (gnome-shell-extension-extended-gestures-gitAUR)。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。
ボタンを押したままマウスでスクロールする
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、ScrollMethod
を button
に設定し、アクションの ScrollButton
オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。
/etc/X11/xorg.conf.d/00-mouse.conf
Section "InputClass" Identifier "system-mouse" MatchIsPointer "on" Option "ScrollMethod" "button" Option "ScrollButton" "3" EndSection
マウスホイールのスクロール速度の調整
マウスによっては、特に HiDPI デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。patch が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの xf86-input-libinput が組み込まれています。
このパッチでは、マウスに新しいプロパティ libinput Scroll Distance Scale
が導入され、次のようなスケーリング係数を設定できます。
$ xinput --set-prop 'RAPOO Rapoo 2.4G Wireless Device' 'libinput Scroll Distance Scale' 2.5 2.5
ここで、RAPOO Rapoo 2.4G Wireless Device
は、xinput --list
にリストされているマウスデバイスの名前です。2.5 2.5
は、それぞれx軸とy軸の倍率です。
または、libinput-multiplierAUR をインストールして Xorg を再起動し、y軸のスクロール距離を6倍に拡大します。
$echo 6>/tmp/libinput_discrete_deltay_multiplier
フォーカス変更時に倍率を変更する場合 こちらを参照
トラブルシューティング
まず、libinput debug-events
を実行して問題をデバッグできないか確認してください。利用可能なオプションは libinput-debug-events(1) を見てください。
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには evemu パッケージに含まれている evemu-describe を使います:
software supported input trackpad driver の出力を a supported trackpad と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 INPUT_PROP_BUTTONPAD
プロパティも設定されます。
タッチパッドが GNOME で動作しない
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:
$ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の gsettings
コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:
$ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false
参照
- libinput Wayland ドキュメント
- FOSDEM 2015 - libinput - Hans de Goede によるプロジェクトの目標と計画についての説明
- Peter Hutterer のブログ - プロジェクトのハッカーによる libinput 関連の記事
- Talk by the primary libinput maintainer outlining the history and state (as of 2020) of Linux input device handling
- Blog post by the libinput maintainer outlining the rationale for libinput