libinput
関連記事
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 によって管理されているか 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 で設定を直接相互利用することはできません。
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は 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 ユーティリティを使うことができます。
ユーティリティはユーザーでインストール・設定・アンインストールできます。依存パッケージの python と xdotool はシステムにインストールしてください。~/.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
上記の設定で、全てのタッチパッドやマウスのスクロールが逆になります。
参照
- libinput Wayland ドキュメント
- FOSDEM 2015 - libinput - Hans de Goede on goals and plans of the project
- Peter Hutterer's Blog - numerous posts on libinput from one of the project's hackers.