web-dev-qa-db-ja.com

Firefoxでスクロールホイールの左プッシュをページに戻す方法(Logitech M-UAG120マウス)

Ubuntu 18.10LTSでFirefoxバージョン67を実行しています。

Logitech M-UAG120マウス スクロールホイール付きです。スクロールホイールには、左右に横に押す方法があります。必要なのは、FirefoxのAlt-LEFTと同じように左に押すアクションでページに戻ることと、逆にスクロールホイールを右に押す操作です。現在、Firefoxはどちらのスクロールホイールプッシュ操作でもどちらのXイベントにも応答していません。 (これは、正常に機能しているスクロールホイールを垂直に押し下げてマウスの中ボタンをクリックすることと同じではないため、これらを「プッシュ操作」と呼んでいます)。スクロール操作も正しく機能します。

xev を実行し、次のXイベントを生成していると判断しました。

  1. 左スクロールホイールプッシュ操作:ボタン6
  2. 右スクロールホイールプッシュ操作:ボタン7

http://kb.mozillazine.org/About:config を調べたところ、これらのイベントに固有のものは何も見つかりませんでした。Webを検索して、不足していました。

Xイベントが一貫して同じ動作をするように、マウスまたはFirefoxを構成するにはどうすればよいですか?可能であれば、このマウス用の特別なドライバーをインストールしたくありません。

アップデート#1

Logitech M525 Bluetoothマウス を備えたUbuntu 18.10 LTSデスクトップでは、左右のスクロールホイールのプッシュ操作によって異なるが生成されます。 xev からわかるように、ラップトップで使用されている有線マウスよりもXイベントのセット:

  1. 左スクロールホイールプッシュ操作:ボタン8
  2. 右スクロールホイールプッシュ操作:ボタン9

そして、この特定のマウスの左/右スクロールホイールのプッシュ操作は、私が期待するとおりに機能します。

アップデート#2:

Logitech M-UAG120マウス を両方のマシン(ラップトップとデスクトップ、どちらもUbuntu 18.10 LTSを実行)で再度テストしましたが、生成されるXイベントは一貫して異なりますLogitech M525 Bluetoothマウス より。

特定のXイベントはマウスデバイス間で標準化されていないと推測しますが、両方のマウスデバイスがLogitech製であるため、これは驚くべきことです。

3
bgoodr

解決

私は次の解決策を見つけました:

/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.confを追加しました:

Section "InputClass"
        Identifier "Logitech Optical Tilt Wheel Mouse M-UAG120"
        MatchUSBID "046d:c019" 
        MatchDevicePath "/dev/input/event*"
        # I found that using this command:
        #
        #   xinput --set-button-map 10 1 2 3 4 5 8 9 8 9
        #                                        ^ ^
        # The "^" above are the numbers I changed from 6 and 7 to 8 and 9, respectively.
        # That does the same thing as this ButtonMapping below:
        #
        Option "ButtonMapping" "1 2 3 4 5 8 9 8 9"
EndSection

そして再起動しました。

Sudo service gdm restart を使用してgdmディスプレイマネージャーを再起動してもnotが機能しなかったのは、私には不可解です。ログに記録できませんでした。 in(CAPSLOCKをオンにしていない場合でも、パスワードプロンプトに戻り続けた)なので、再起動する必要がありました。


TL; DR参考資料

上記を理解するのに役立つと私が見つけた参考資料:

デバイスIDとボタンパラメータを見つけるためのxinput

デバイスIDとは、以下のid=10番号を意味します。 「ボタンパラメータ」とは、/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.confファイルのButtonMappingで使用されるパラメータの意味を意味します。

プラグイン後にデバイスを見つけるためのGrep:

$ xinput --list | grep -i logit
⎜   ↳ Logitech USB Optical Mouse                id=10   [slave  pointer  (2)]

システムがボタンの意味であると考えるものを確認してください。

$ xinput --list 10 | grep -i 'Button labels'
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" None

引用符で囲まれた文字列には、ButtonMappingに対応する1ベースの列挙値があると推測していますが、その証拠はまだありません。したがって、それが正しいと仮定すると、それらに番号を付けることができます。

$ xinput --list 10 | grep -i 'Button labels' | sed 's%: %:\n%g; s%" "%"\n"%g' | sed '1d' | cat -n
     1  "Button Left"
     2  "Button Middle"
     3  "Button Right"
     4  "Button Wheel Up"
     5  "Button Wheel Down"
     6  "Button Horiz Wheel Left"
     7  "Button Horiz Wheel Right"
     8  "Button Side"
     9  "Button Extra"
    10  "Button Forward"
    11  "Button Back" None
$ 

その憶測も Logitech_Marble_Mouse --Basic_function でジャイブしているようです。

したがって、8と9のButtonMappingの位置は、システムがFirefoxXアプリケーションに渡す「ブラウザの戻る」アクションと「ブラウザの進む」アクションに対応します。他のすべての動作を保持したかったので、/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.confファイルのキーラインは次のとおりです。

Option "ButtonMapping" "1 2 3 4 5 8 9 8 9"
#                                 ^ ^

^は、変更される6および7パラメーターのみをマークしました)。

ボタンマッピング

libinput(4)のマニュアルページのボタンマッピングセクション メカニズムについて説明しています。

「libinput」は私が偶然見つけたものです。なぜなら buntu16.04およびLogitechM57 で次のように述べているからです。

Ubuntu 18.04は、デフォルトでevdevドライバーを使用しなくなりました。 Libinputに取って代わられました

Xinputコマンドを使用してボタンマップを動的に変更する

input(1)man page は、ディスプレイマネージャまたはXサーバーを再起動せずに、ButtonMappingオプションのボタンパラメータを直接確認するオプションがあります。

--set-button-map device map_button_1 [map_button_2 [...]]
        Change the button mapping of device. The buttons are specified in physical order (starting with button 1) and are mapped to the logical button provided. 0 disables a but‐
        ton. The default button mapping for a device is 1 2 3 4 5 6 etc.

したがって、何も再起動/再起動せずに使用できるコマンドは次のとおりです。

$ xinput --set-button-map 10 1 2 3 4 5 8 9 8 9
$

ボタンの割り当て

Logitech_Marble_Mouse-ボタンの割り当て はArchLinux固有およびデバイス固有ですが、特に次のように記載されている場合は、それでも非常に役立ちました。

ボタンを押すと、新しいアクションを割り当てることができます。これは、位置パラメータを設定することによって行われます。ボタン1、2、3、8、および9の値は変更できます(ボタン2は、2つの大きなボタンを組み合わせて押すだけです)。パラメーター4、5、6、または7は変更しないでください。

このマウスデバイスのButtonMappingの6と7のパラメータを実際に変更する必要があったことを除いて。上記は、なぜ「変更しないでください」と述べたのかを説明していません。

xorg.conf(5)のマニュアルページ

xorg.conf(5)man page は、confファイルがどのように機能するかを示していますが、リリースごとに動作が変わるため、次のように、正しいリリースになっていることを確認してください。彼らのウェブページの上部に:

xorg.conf(5) annotated screenshot

lsusb -d VENDOR:DEVICE

Lsusbコマンド( lsusb(8)man page )を実行すると、ベンダーとデバイスIDを特定するのに役立ちました。

$ lsusb -d 046d:c019
Bus 001 Device 009: ID 046d:c019 Logitech, Inc. Optical Tilt Wheel Mouse

これが、71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.confMatchUSBIDセクションのInputClassオプション内で使用することになったものです。 Linuxで複数の同時入力デバイスに異なるレイアウトを割り当てる問題に対するGoveliusの回答 を参照してください。

/var/log/Xorg*.logファイル

最近変更された/var/log/Xorg.*.logファイルの検索:

$ ls -ladtr /var/log/X*
-rw-r--r-- 1 root root 18922 Mar 17  2017 /var/log/Xorg.failsafe.log.old
-rw-r--r-- 1 root root 18922 Mar 19  2017 /var/log/Xorg.failsafe.log
-rw-r--r-- 1 root root 26019 Jun  8 12:20 /var/log/Xorg.2.log.old
-rw-r--r-- 1 root root 26019 Jun  8 12:21 /var/log/Xorg.2.log
-rw-r--r-- 1 root root 28910 Jun  8 12:45 /var/log/Xorg.0.log.old
-rw-r--r-- 1 root root 38010 Jun  8 12:45 /var/log/Xorg.1.log.old
-rw-r--r-- 1 root root 27869 Jun  8 12:57 /var/log/Xorg.0.log
-rw-r--r-- 1 root root 34901 Jun  8 12:57 /var/log/Xorg.1.log
$ 

次に、それをgrepして、私のButtonMappingが表示されていることを確認します。

$ grep -n -B10 -i -H -e 'ButtonMapping' /var/log/Xorg.1.log
/var/log/Xorg.1.log-292-[   665.912] (**) Logitech USB Optical Mouse: Applying InputClass "libinput pointer catchall"
/var/log/Xorg.1.log-293-[   665.912] (**) Logitech USB Optical Mouse: Applying InputClass "Logitech Optical Tilt Wheel Mouse M-UAG120"
/var/log/Xorg.1.log-294-[   665.912] (II) Using input driver 'libinput' for 'Logitech USB Optical Mouse'
/var/log/Xorg.1.log-295-[   665.912] (II) systemd-logind: got fd for /dev/input/event5 13:69 fd 46 paused 0
/var/log/Xorg.1.log-296-[   665.913] (**) Logitech USB Optical Mouse: always reports core events
/var/log/Xorg.1.log-297-[   665.913] (**) Option "Device" "/dev/input/event5"
/var/log/Xorg.1.log-298-[   665.913] (**) Option "_source" "server/udev"
/var/log/Xorg.1.log-299-[   665.914] (II) event5  - Logitech USB Optical Mouse: is tagged by udev as: Mouse
/var/log/Xorg.1.log-300-[   665.914] (II) event5  - Logitech USB Optical Mouse: device is a pointer
/var/log/Xorg.1.log-301-[   665.914] (II) event5  - Logitech USB Optical Mouse: device removed
/var/log/Xorg.1.log:302:[   665.914] (**) Option "ButtonMapping" "1 2 3 4 5 8 9 8 9"
$ 

Logitech Optical Tilt Wheel Mouse M-UAG120が表示され、その後にButtonMappingが表示されます。

InputClass構​​成

libinput(4)のマニュアルページInputClass Section は、MatchUSBIDオプションを含むすべてのオプションについて説明しています。

2
bgoodr