libinput

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

libinput プロジェクトより:

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

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

インストール

XorgWayland をインストールしている場合、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 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 (#グラフィカルツールを参照)、あるいはデスクトップ環境非依存の udev ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば GNOME におけるタッチパッドスクロースの速度) を設定したい場合は、libinput-config-gitAUR が使えるかもしれません。サポートされているオプションは libinput-config README にまとめられています。

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

Xorg の 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 を使うや下の#ボタンの再マッピングに設定例が載っています。

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

ヒント:
  • libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 (/etc/X11/xorg.conf.d に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが 70- と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:
# ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf

両方の設定ファイルが /etc/X11/xorg.conf.d に存在する場合、libinput の設定ファイルは2番目になります。Xorg#.conf ファイルを使うを見てください。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 です。

ヒント: 利用可能な設定オプションや説明などは /usr/share/X11/xorg.conf.d/40-libinput.conflibinput(4) のマニュアルページを参照してください。

基本的な設定は以下のようになります:

/etc/X11/xorg.conf.d/30-touchpad.conf
Section "InputClass"
    Identifier "devname"
    Driver "libinput"
    ...
EndSection

単体の設定ファイルで好きな数だけセクションを定義することができます。xorg.conf(5) § INPUTCLASS_SECTION にあるフィルターを使ってデバイスをフィルターできます。例えば、

  • MatchIsPointer "on" (トラックポイント)
  • MatchIsKeyboard "on"
  • MatchIsTouchpad "on"
  • MatchIsTouchscreen "on"

入力デバイスは libinput(4) § CONFIGURATOIN_DETAILS を見ながら設定できます。 一般的な設定オプションは以下の通りです:

  • "Tapping" "on": タップでクリック。
  • "ClickMethod" "clickfinger": トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは ドキュメント を参照。
  • "NaturalScrolling" "true": ナチュラルスクロール (逆スクロール)。
  • "ScrollMethod" "edge": エッジスクロール (縦スクロール)。

デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。


グラフィカルツール

複数の GUI ツールが存在します:

  • GNOME:
  • Cinnamon:
    • GNOME UI と同じように設定することができます。
  • MATE:
    • 設定パネルからマウスのオプションが選べます。mate-mouse-properties からも設定できます。
  • KDE Plasma 5:
    • キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。
  • Xfce:
    • xfce4-settings にあるマウスやタッチパッドのサブメニューから設定できます。

ヒントとテクニック

ボタンの再マッピング

例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、Xorg の設定ファイルで TappingButtonMap オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには TappingButtonMaplrm に、左・中・右にするには 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 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (devicexinput 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 で設定を直接相互利用することはできません。

ヒント: (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 がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [2] に書かれています。

タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[3] を見てください。

ノート: クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [4].quirk ファイルによって置き換えられました [5]

デバイスの無効化

環境変数を使う

環境変数 LIBINPUT_IGNORE_DEVICE を使って指定のデバイスの初期化を避ける事ができます [6]。次のような udev ルールを使って設定するのが最適です:

/etc/udev/rules.d/99-libinput-ignore.rules
ACTION=="add|change", device_delineation, ENV{LIBINPUT_IGNORE_DEVICE}="1"

device_delineation によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには lsusb から取得した ID vendor_idproduct_id を使って SUBSYSTEMS=="usb", ATTRS{idVendor}=="vendor_id", ATTRS{idProduct}=="product_id" とします。

一度ファイルを用意したら、udev は自動的に設定の変更を反映するので (Udev#新しいルールをロードするを参照)、デバイスを再接続するだけで反映されます。

xinput を使う

タッチパッドを始めとするデバイスを無効化するには、まず xinput list で名前を確認してから xinput disable name で無効化してください。

ノート:
  • ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。
  • 名前に空白が含まれる場合はクォートで囲ってください。

設定を永続化する場合は自動起動を見てください。

有効化・無効化をトグルするには [7] のようなスクリプトを書いてください。

ジェスチャー

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

libinput-gestures

EWMH (wm-spec を参照) 互換のウィンドウマネージャでは、代わりに libinput-gestures ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを (libinput debug-events を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。

libinput-gestures を使用するには、libinput-gesturesAUR パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは README を見てください。

Touchegg を使っている場合は、干渉を避ける為に libinput-gesturesAUR はアンインストールしてください[9]

fusuma

FusumaRuby で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。

fusumaRuby gem をインストールしてください:

$ gem install fusuma

あるいは、AUR バージョンが存在します: ruby-fusumaAUR

fusuma Ruby gem 以外にも、fusuma-plugin-sendkey Ruby gem あるいは、xdotool (X 用) か ydotool (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は こちらにリストされています。

ヒント: fusuma-plugin-sendkey Ruby gemは X と Wayland 両方をサポートしています。

それから ~/.config/fusuma/config.yml で以下のように設定:

~/.config/fusuma/config.yml
swipe:
  3: 
    left: 
      sendkey: 'LEFTALT+RIGHT'
    right: 
      sendkey: 'LEFTALT+LEFT'
    up: 
      sendkey: 'LEFTALT+LEFTSHIFT+TAB'
    down: 
      sendkey: 'LEFTALT+TAB'
pinch:
  in:
    sendkey: 'LEFTALT+LEFTSHIFT+TAB'
  out:
    sendkey: 'LEFTALT+TAB'

threshold:
  swipe: 0.5
  pinch: 0.2

interval:
  swipe: 0.2
  pinch: 0.2

あるいは xdotool では次のようにします:

~/.config/fusuma/config.yml
swipe:
  3: 
    left: 
      command: 'xdotool key alt+Right'
    right: 
      command: 'xdotool key alt+Left'
    up: 
      command: 'xdotool key ctrl+shift+plus'
    down: 
      command: 'xdotool key ctrl+minus'
pinch:
  in:
    command: 'xdotool key ctrl+shift+plus'
  out:
    command: 'xdotool key ctrl+minus'

threshold:
  swipe: 0.5
  pinch: 0.2

interval:
  swipe: 0.2
  pinch: 0.2

ydotoolxdotool と同様です。

スワイプの閾値を低くするとページをスワイプしすぎるので重要です。

上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [10]

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 のアクションを実行できます (アプリケーションの切り替えなど)。

ボタンを押したままマウスでスクロールする

マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、ScrollMethodbutton に設定し、アクションの 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 'device_name' 'libinput Scroll Distance Scale' 2.5 2.5

ここで、device_name は、xinput --list にリストされているマウスデバイスの名前です。2.5 2.5 は、それぞれx軸とy軸の倍率です。

または、libinput-multiplierAUR をインストールして Xorg を再起動し、y軸のスクロール距離を6倍に拡大します。

$echo 6>/tmp/libinput_discrete_deltay_multiplier

フォーカス変更時に倍率を変更する場合 こちらを参照

入力時のタッチパッドの有効化

デフォルトでは、libinput はタイピング中にタッチパッドを無効化します。Inkscape におけるマウス入力付きキーバインディング動作など、いくつかのソフトウェアにおいて問題になります。次のように /etc/X11/xorg.conf.d/30-touchpad.confInputClass セクションを加える事でこの無効化動作を避ける事ができます:

Section "InputClass"
    ...
    Option "DisableWhileTyping" "0"
EndSection

トラブルシューティング

まず、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

慣性スクロールが KDE で使えない

慣性スクロールの機能は現在実装されていません (KDE bug 456383)。Chromium-ベースのブラウザ上については、SmoothScroll の拡張機能をインストールする事で使えるようになります。

タブレットモードでキーがスタックする

いくつかのタブレット PC (Lenovo Yoga など) において、タブレットモードへの切り替わり時にキー入力が停止しタブレットモードを抜けるまでスタックします。libinput の quirks ファイルを編集する事で解決できる場合があります。詳細は Issue 914 を見てください。

For example, find the name of the keyboard device: 例えば、キーボードデバイスの名前が次の場合:

# libinput list-devices
...
Device:           AT Translated Set 2 keyboard
Kernel:           /dev/input/event3
Capabilities:     keyboard 
...

次の様に上書き用のファイルを作ってください:

/etc/libinput/local-overrides.quirks
[Lenovo Thinkpad Yoga]
MatchName=AT Translated Set 2 keyboard
ModelTabletModeNoSuspend=0

ModelTabletModeNoSuspend=0 によってキースタックの問題となる振る舞いを無効化します。 Device quirks に、設定ファイルのフォーマットやデバイス名の指定方法が記載されています。いくつかのデバイスについては既存の quirks エントリーを使って上書き用のファイルを作れます。デフォルトの quirks ファイルは /usr/share/libinput/ にあります。

参照


翻訳ステータス: このページは en:libinput の翻訳バージョンです。最後の翻訳日は 2024-08-14 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。