「Libinput」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
4行目: 4行目:
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Xorg}}
 
{{Related|Xorg}}
{{Related|Touchpad Synaptics}}
+
{{Related|Synaptics タッチパッド}}
 
{{Related|Wayland}}
 
{{Related|Wayland}}
 
{{Related articles end}}
 
{{Related articles end}}
   
[http://wayland.freedesktop.org/libinput/doc/latest/index.html libinput] プロジェクトより:
+
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:
   
  +
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。
:libinput はディスプレイサーバーなどの入力デバイスを直接操作する必要があるアプリケーションのために入力デバイスを管理するライブラリです。
 
 
:libinput は [[Wayland]] のリファレンスコンポジタである weston から作られました。
 
   
 
libinput ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]はほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [http://wayland.freedesktop.org/libinput/doc/latest/pages.html ドキュメント] を見て下さい。
 
libinput ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]はほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [http://wayland.freedesktop.org/libinput/doc/latest/pages.html ドキュメント] を見て下さい。
18行目: 16行目:
 
== インストール ==
 
== インストール ==
   
{{Pkg|xf86-input-libinput}} パッケージ[[インストール]]してください{{pkg|libinput}} ドライバー依存パッケージとしてインストールされな場合、既にグラフィック環境の依存パッケージとしてインストールされています。また、{{Pkg|xorg-xinput}} インストールこと実行中に設定を変更ることができ
+
[[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありませんあなた使用していグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされていはずです。他に必要なドライバーはありせん
  +
  +
[[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージを[[インストール]]してください。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換できます。
  +
  +
また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。
   
 
== 設定 ==
 
== 設定 ==
   
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/90-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。
+
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/60-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。
   
 
まず、次を実行してください:
 
まず、次を実行してください:
35行目: 37行目:
 
$ xinput set-prop ''device-number'' ''option-number'' ''setting''
 
$ xinput set-prop ''device-number'' ''option-number'' ''setting''
   
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]に設定例が載っています。
+
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#タッチパッドの設定]]に設定例が載っています。
   
通常、[[Xorg#入力デバイス|入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。どのデバイスが libinput によって管理されているか ''xorg'' のログファイルで確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:
+
通常、[[Xorg#入力デバイス|入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。
  +
  +
{{Tip|libinput でタッチパッドを正しく動作させるには synaptics の設定 ({{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}) を手動で削除する必要があるかもしれません。}}
  +
  +
どのデバイスが libinput によって管理されているか ''xorg'' のログファイルで確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:
 
{{hc|$ grep -e "Using input driver 'libinput'" ~/.local/share/xorg/Xorg.0.log|
 
{{hc|$ grep -e "Using input driver 'libinput'" ~/.local/share/xorg/Xorg.0.log|
 
[ 28.799] (II) Using input driver 'libinput' for 'Power Button'
 
[ 28.799] (II) Using input driver 'libinput' for 'Power Button'
50行目: 56行目:
 
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Touchpad Synaptics]] と比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。
 
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Touchpad Synaptics]] と比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。
   
  +
== Tips and tricks ==
== タッチパッドの設定 ==
 
  +
  +
=== タッチパッドの設定 ===
   
 
タップはデフォルトで無効になっていることがあります。有効にするには、設定ファイルを追加してください:
 
タップはデフォルトで無効になっていることがあります。有効にするには、設定ファイルを追加してください:
61行目: 69行目:
 
EndSection}}
 
EndSection}}
   
== デバッグ ==
+
=== マウスボタンの再マピン===
   
  +
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます:
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには `evemu-describe` を使うのが一番です。
 
  +
$ xinput get-button-map ''device''
  +
ボタン番号の順番は自由に変更することができます。例:
  +
$ xinput set-button-map ''device'' 1 6 3 4 5 0 7
  +
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、''device'' の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。
  +
  +
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) ''xev'' を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}
  +
  +
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:
  +
  +
{{hc|~/.xinitrc|<nowiki>
  +
...
  +
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
  +
...</nowiki>}}
  +
  +
=== デバッグ ===
  +
  +
まず、パッケージに含まれている ''libinput-debug-events'' ツールで問題をデバッグできないか確認してください。{{ic|libinput-debug-events --help}} を実行すればオプションが表示されます。
  +
  +
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている ''evemu-describe'' を使います:
  +
  +
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。
  +
  +
===== タッチパッドが GNOME で動作しない =====
  +
  +
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:
  +
$ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled
  +
  +
=== マルチタッチイベント ===
  +
  +
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] ユーティリティを使うことができます。
  +
  +
ユーティリティはユーザーでインストール・設定・アンインストールできます。依存パッケージの {{Pkg|python}} と {{Pkg|xdotool}} はシステムにインストールしてください。{{ic|~/.config/libinput-events.conf}} ファイルを使うことでスワイプやピンチを行ったときのアクションを定義できます。まだ [[AUR]] パッケージは存在しません [https://github.com/bulletmark/libinput-gestures/issues/6]。
  +
  +
=== ナチュラルスクロール ===
  +
  +
ナチュラルスクロール (逆スクロール) を設定するには、以下の設定ファイルを追加:
  +
  +
{{hc|/etc/X11/xorg.conf.d/20-natural-scrolling.conf|
  +
Section "InputClass"
  +
Identifier "libinput pointer catchall"
  +
MatchIsPointer "on"
  +
MatchDevicePath "/dev/input/event*"
  +
Driver "libinput"
  +
Option "NaturalScrolling" "true"
  +
EndSection
  +
  +
Section "InputClass"
  +
Identifier "libinput touchpad catchall"
  +
MatchIsTouchpad "on"
  +
MatchDevicePath "/dev/input/event*"
  +
Driver "libinput"
  +
Option "NaturalScrolling" "true"
  +
EndSection}}
   
  +
上記の設定で、全てのタッチパッドやマウスのスクロールが逆になります。
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。動作しているときは INPUT_PROP_BUTTONPAD が設定されています。
 
   
 
== 参照 ==
 
== 参照 ==
   
  +
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]
 
* [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 on goals and plans of the project
 
* [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 on goals and plans of the project
 
*[http://who-t.blogspot.com.au/ Peter Hutterer's Blog] - numerous posts on libinput from one of the project's hackers.
 
*[http://who-t.blogspot.com.au/ Peter Hutterer's Blog] - numerous posts on libinput from one of the project's hackers.

2016年7月12日 (火) 23:18時点における版

関連記事

libinput プロジェクトより:

libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。

libinput ドライバーは標準的な入力デバイスはほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは ドキュメント を見て下さい。

インストール

Wayland で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして libinput パッケージは既にインストールされているはずです。他に必要なドライバーはありません。

Xorg で libinput を使用する場合、xf86-input-libinput パッケージをインストールしてください。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [1]。つまり、xf86-input- で始まる X 用のドライバーパッケージを置換できます。

また、xorg-xinput をインストールすることで実行中に設定を変更することができます。

設定

Xorg 用のデフォルト設定ファイルは /usr/share/X11/xorg.conf.d/60-libinput.conf にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。

まず、次を実行してください:

# libinput-list-devices

上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。

グラフィカル環境を再起動すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。

設定できるオプションは libinput(4) man ページを参照してください。xinput ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。例えばオプションを確認するには:

$ xinput list-props device-number

オプションを設定するには:

$ xinput set-prop device-number option-number setting 

オプションの永続的な設定については Xorg#.conf ファイルを使う を見て下さい。Logitech Marble Mouse#libinput を使うや下の#タッチパッドの設定に設定例が載っています。

通常、入力デバイス用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、/etc/X11/xorg.conf.d/ にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。

ヒント: libinput でタッチパッドを正しく動作させるには synaptics の設定 (/etc/X11/xorg.conf.d/50-synaptics.conf) を手動で削除する必要があるかもしれません。

どのデバイスが libinput によって管理されているか xorg のログファイルで確認できます。例えば、/etc/X11/xorg.conf.d/ に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:

$ grep -e "Using input driver 'libinput'" ~/.local/share/xorg/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 を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、Touchpad Synaptics と比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。

Tips and tricks

タッチパッドの設定

タップはデフォルトで無効になっていることがあります。有効にするには、設定ファイルを追加してください:

/etc/X11/xorg.conf.d/30-touchpad.conf
Section "InputClass"
        Identifier "MyTouchpad"
        MatchIsTouchpad "on"
        Driver "libinput"
        Option "Tapping" "on"
EndSection

マウスボタンの再マッピング

デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます:

$ xinput get-button-map device

ボタン番号の順番は自由に変更することができます。例:

$ xinput set-button-map device 1 6 3 4 5 0 7

上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。Wayland でも上記の設定は使えますが、device の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。

ヒント: (xorg-xev パッケージに含まれている) xev を使うことで実際のボタンがどの ID にマッピングされているか確認できます。

デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は 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-debug-events ツールで問題をデバッグできないか確認してください。libinput-debug-events --help を実行すればオプションが表示されます。

入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには 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

マルチタッチイベント

libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが、デスクトップ環境ウィンドウマネージャがまだそれらのアクションを実装していない可能性があります。

EWMH (wm-spec を参照) 互換のウィンドウマネージャでは、代わりに libinput-gestures ユーティリティを使うことができます。

ユーティリティはユーザーでインストール・設定・アンインストールできます。依存パッケージの pythonxdotool はシステムにインストールしてください。~/.config/libinput-events.conf ファイルを使うことでスワイプやピンチを行ったときのアクションを定義できます。まだ AUR パッケージは存在しません [2]

ナチュラルスクロール

ナチュラルスクロール (逆スクロール) を設定するには、以下の設定ファイルを追加:

/etc/X11/xorg.conf.d/20-natural-scrolling.conf
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
	Option "NaturalScrolling" "true"
EndSection

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
	Option "NaturalScrolling" "true"
EndSection

上記の設定で、全てのタッチパッドやマウスのスクロールが逆になります。

参照