web-dev-qa-db-ja.com

libinputでスクロール速度を変更する

マウスホイールのスクロールが遅すぎるため、各スクロールの「目盛り」の行数を増やしたい。これはxinputEvdev Scrolling Distanceを設定することで可能であると読みましたが、libinputを使用しており、スクロール距離に関連するものは何も表示されません。

マウスでのxinput list-propsの出力:

Device Enabled (139):   1                                                                                                       
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (275): -0.640000                                                                                           
libinput Accel Speed Default (276): 0.000000                                                                                    
libinput Accel Profiles Available (277):    1, 1                                                                                
libinput Accel Profile Enabled (278):   1, 0                                                                                    
libinput Accel Profile Enabled Default (279):   1, 0                                                                            
libinput Natural Scrolling Enabled (280):   0                                                                                   
libinput Natural Scrolling Enabled Default (281):   0                                                                           
libinput Send Events Modes Available (259): 1, 0                                                                                
libinput Send Events Mode Enabled (260):    0, 0                                                                                
libinput Send Events Mode Enabled Default (261):    0, 0                                                                        
libinput Left Handed Enabled (282): 0                                                                                           
libinput Left Handed Enabled Default (283): 0                                                                                   
libinput Scroll Methods Available (284):    0, 0, 1                                                                             
libinput Scroll Method Enabled (285):   0, 0, 0                                                                                 
libinput Scroll Method Enabled Default (286):   0, 0, 0                                                                         
libinput Button Scrolling Button (287): 2                                                                                       
libinput Button Scrolling Button Default (288): 274                                                                             
libinput Middle Emulation Enabled (289):    0                                                                                   
libinput Middle Emulation Enabled Default (290):    0                                                                           
Device Node (262):  "/dev/input/event1"                                                                                         
Device Product ID (263):    1133, 50487                                                                                         
libinput Drag Lock Buttons (291):   <no items>                                                                                  
libinput Horizonal Scroll Enabled (264):    1                                                  

スクロール速度を変更するにはどうすればよいですか?私はArch Linux、Xfce 4.12で実行しています。

18
Andrew Sun

Libinputデバイスのスクロール速度を変更するための現在のAPIはありませんが、 このブログ は、マウスホイールのクリックが、systemdのudev構成ファイルでマウスごとに変更できる移動角度にどのように対応するかを説明しています/usr/lib/udev/hwdb.d/70-mouse.hwdb。このファイルの先頭にあるMOUSE_WHEEL_CLICK_ANGLEに関するコメントを読んでください。

ローカルで変更するには、新しいファイルを作成します

 /etc/udev/hwdb.d/71-mouse-local.hwdb

オーバーライドルールを追加します。たとえば、ImExPS/2マウスを使用している場合は、クリックごとにデフォルトの15度を2倍にして30度にすることができます。

# ImExPS/2 Logitech Wheel Mouse
mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse:
 MOUSE_DPI=400@250
 MOUSE_WHEEL_CLICK_ANGLE=30

Udevデータベースをリロードします

 Sudo udevadm hwdb --update
 Sudo udevadm trigger /dev/input/event1
5
meuh

Libinput には、共通のパーティとして「すべてのホイールスクロールに対して、n行/度」という概念はありません。一部の Logitech には「古い」Evdevドライバに含まれている可能性のあるパラメータEvdev Scrolling Distance (278)があるため、設定は現時点ではデバイス固有のようです。

これは、私の意見ではユーザーエクスペリエンスの regression と見なされます。最初は、構成可能なマウススクロールの感度を共通のツールキット(libinput)に含めることは拒否されましたが、現在は pull request 将来のバージョンになる予定です–おそらく、すべてのデスクトップ環境に関数呼び出しを実装する必要があります。

このような問題を修正する方法はたくさんありますが、Linuxディストリビューションによって異なります。

  1. 幸運であり、ドライバー固有のスクロール感度を備えている-スクロール変数を使用してすべての入力を検索して確認してください。

    xinputリスト|カット-f2 |カット-f2 -d '=' |\
     xargs -d $ '\ n' -I '{}' sh -c "xinput list-props '{}' | grep -iq scroll &&\
    (echo Listing dev id ' {} '; xinput list-props' {} ') "
    そしてxinput --set-prop <ID><SUB-ID><values>によって特定の変数を設定します。ここで<ID>はデバイス名であり、<SUB-ID>は設定名にすることができます。
  2. 一般的な修正は 再パッチ libinputコードと 再構築 です。

  3. X11でudevadm/evdevインターフェースにロールバックしてから、X11変数 MOUSE_WHEEL_CLICK_ANGLE を試すことができます。

  4. 最後のアイテムの参照 から imwheel を使用して、マウスのスクロールクリックを乗算値でエミュレートすることができます。

    # Should use imwheel --kill --buttons "4 5" to restart imwheel,
    # if the mouse has back/forward buttons, otherwhise imwheel --kill is enough.
    # imwheel must be set to autostart in your DE tools.
    #Edit ~/.imwheelrc to include, where '3' is a multiplier
    ".*"
    None,      Up,   Button4, 3
    None,      Down, Button5, 3
    Control_L, Up,   Control_L|Button4
    Control_L, Down, Control_L|Button5
    Shift_L,   Up,   Shift_L|Button4
    Shift_L,   Down, Shift_L|Button5
    
  5. Chrome SmoothScrollFirefox SmoothWheelref のように、マウスホイールの感度に関する特定のアプリケーション設定があります。