AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1445784
Accepted
bgoodr
bgoodr
Asked: 2019-06-07 12:31:16 +0800 CST2019-06-07 12:31:16 +0800 CST 2019-06-07 12:31:16 +0800 CST

如何在 Firefox(罗技 M-UAG120 鼠标)中左推滚轮返回一个页面

  • 772

我在 Ubuntu 18.10 LTS 上运行 Firefox 67 版。

我有一个带滚轮的罗技 M-UAG120 鼠标。滚轮有办法将其向左和向右侧向推动。我需要的是向左推的动作与 Firefox 的 Alt-LEFT 返回页面相同,而向右推滚轮则相反。目前,Firefox 不响应任何一个滚轮推送操作的 X 事件。(我将这些称为“推动操作”,因为这与通过垂直向下推动滚轮来单击鼠标中键不同,后者工作正常)。滚动操作也能正常工作。

我运行xev并确定它正在生成这些 X 事件:

  1. 左滚轮推动操作:按钮 6
  2. 右滚轮推动操作:按钮 7

我查看了http://kb.mozillazine.org/About:config并没有发现任何特定于这些事件的内容,搜索了网络并得出了结论。

我如何配置鼠标或 Firefox,使 X 事件保持一致,以便它们产生相同的行为?如果可能的话,我不想为这只鼠标安装特殊的驱动程序。

更新#1

在我的 Ubuntu 18.10 LTS 桌面上,它有一个Logitech M525 蓝牙鼠标,左右滚轮推动操作生成一组与我笔记本电脑上使用的有线鼠标不同的 X 事件,如xev 所示:

  1. 左滚轮推动操作:按钮 8
  2. 右滚轮推动操作:按钮 9

这个特殊鼠标的左/右滚轮推动操作按我预期的那样工作。

更新#2:

我在两台机器(我的笔记本电脑和台式机,都运行 Ubuntu 18.10 LTS)上再次测试了罗技 M-UAG120 鼠标,生成的X 事件始终不同于罗技 M525 蓝牙鼠标。

我推测特定的 X 事件在鼠标设备之间没有标准化,但这令人惊讶,因为这两种鼠标设备都来自罗技。

firefox mouse
  • 1 1 个回答
  • 949 Views

1 个回答

  • Voted
  1. Best Answer
    bgoodr
    2019-06-09T13:30:23+08:002019-06-09T13:30:23+08:00

    解决方案

    我找到了以下解决方案:

    我补充道/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
    

    并重新启动。

    令我感到困惑的是,重新启动 gdm 显示管理器sudo service gdm restart无效:它阻止我登录(即使我没有打开 CAPSLOCK 或其他任何东西,也一直弹出密码提示),所以我不得不求助于重新启动。


    TL;DR 参考资料

    我发现的参考资料有助于理解上述内容:

    xinput 查找设备id和按钮参数

    通过设备 ID,我指的是id=10下面的数字。ButtonMapping“按钮参数”是指文件中使用的参数的含义/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf。

    插入后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
    

    我推测带引号的字符串有对应于 的基于 1 的枚举值ButtonMapping,但我还没有这方面的证据。所以假设这是正确的,我们可以给它们编号:

    $ 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 相吻合。

    所以ButtonMapping8 和 9 的位置对应于我希望系统传递给 Firefox X 应用程序的“浏览器后退”和“浏览器前进”操作。由于我想保留所有其他行为,/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”是我偶然发现的,因为在Ubuntu 16.04 和 Logitech M570上它声明:

    Ubuntu 18.04 不再默认使用 evdev 驱动程序。它已被 Libinput 取代

    使用 xinput 命令动态更改按钮映射

    input(1) 手册页有一个选项可以直接验证选项的按钮参数,ButtonMapping而无需重新启动显示管理器或 X 服务器:

    --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 只是两个大按钮的组合按下。)不要更改参数 4、5、6 或 7。

    除了我确实必须ButtonMapping为这个鼠标设备更改我的 6 和 7 参数。上面没有解释为什么写着“请勿改动”。

    xorg.conf(5) 手册页

    xorg.conf(5) 手册页显示了 conf 文件的工作方式,但请注意,由于行为会因版本而异,请确保您使用的是正确的版本,如其网页顶部所示:

    xorg.conf(5) 带注释的屏幕截图

    lsusb -d 供应商:设备

    运行 lsusb 命令(lsusb(8) 手册页)帮助我识别供应商和设备 ID:

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

    这就是我最终MatchUSBID在InputClass. 71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf请参阅Govelius 对 Trouble assigning different layouts to multiple simultaneous input devices in Linux 的回答。

    /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
    $ 
    

    然后通过它查看我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。

    输入类配置

    libinput (4) 手册页 InputClass 部分描述了所有选项,包括MatchUSBID选项。

    • 3

相关问题

  • 在 Firefox 私有模式下使用不同的搜索引擎

  • 在 Firefox 中,为什么这个页面在运行 NoScript 或 uBlock Origin 时以这种方式呈现(noscript 标签的内容被忽略)?

  • 在远程机器上运行 Selenium 脚本

  • 浏览器不会在 Windows 7 64 位操作系统上获得压缩页面

  • 在不同的 Firefox 实例之间共享选项卡

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve