在Windows 上,大多数具有大型可滚动文本容器的程序(例如所有浏览器、大多数文字处理程序和IDE)都允许您按鼠标中键,然后移动鼠标进行滚动。这种滚动非常平滑,并且允许您仅使用鼠标即可快速滚动。
当我使用 Linux 时笔记本电脑,两指滚动执行大致相同的功能;快速向下滚动页面很容易(比滚动鼠标滚轮快得多),但滚动仍然足够平滑以允许精确定位。
我不确定如何在使用鼠标在桌面上运行 Linux 时实现同样的效果。据我经过大量谷歌搜索后得知,既没有特定于应用程序的设置可以切换到 Windows 风格的鼠标中键行为,也没有任何系统范围的设置可以达到相同的效果。
为了具体说明这一点,假设 - 如果相关的话 - 我在 Firefox、Google Chrome、Gedit 和 Eclipse 的上下文中询问 Mint(我在家使用的)或 Ubuntu(我使用的)的最新版本在上班)。不过,我怀疑这是一个与发行版和应用程序无关的问题。
据我所知,我的滚动选项是:
- 用鼠标滚轮滚动 - 慢!
- 使用 PgUp / PgDn 键 - 一次跳跃很远的距离,因此无法用于精确定位,并且不如使用鼠标舒适
- 上下拖动屏幕右侧的滚动条,就像我以前在带有两键鼠标的旧 Windows PC 上所做的那样。这就是我在实践中所做的,但它明显不如 Windows 风格的鼠标中键滚动舒服;在巨大的宽屏上,我需要花费大部分时间将光标从屏幕中间移至滚动条,然后再将其移回滚动条,并且我必须将视线从我要查看的内容上移开。实际上正在滚动执行此操作。
这些都不能让我满意!这个 UI 问题是影响我在桌面上享受 Linux 的唯一因素,几乎让我希望使用笔记本电脑触摸板而不是鼠标。这让我很恼火,我得出的结论是,要么我缺少一些解决这个问题的基本 Linux UI 功能,要么我只是一个过度敏感的怪胎,它甚至不会打扰其他人 - 但我不确定是哪一个。
所以我的问题是:
- Windows 风格的鼠标中键滚动是否存在于 Linux 世界的任何地方,或者它真的纯粹是 Windows 的东西?特别是,是否有 Linux Web 浏览器允许您使用 Windows 风格的滚动?
- 是否存在 Linux 中存在但 Windows 中不存在的滚动页面机制,尤其是执行我所描述的角色的机制?
- 我还缺少其他解决方案吗?
答案1
您所说的功能称为“自动滚动”。它允许您按住鼠标中键并移动鼠标以平滑滚动。在 Linux 中,此操作(按鼠标中键)的默认行为通常是粘贴文本。
但是,Firefox 中有一个首选项设置,并且 Chrome/Chromium 提供了一个扩展程序,可以让您使用鼠标中键进行滚动并激活此功能。
火狐浏览器
打开“选项”选项卡:“≡”(打开菜单)→“选项”。
导航到“常规”(默认情况下应打开“常规”)。
向下滚动到“浏览”。在“浏览”下,您将找到“使用自动滚动”选项。在此旁边勾选复选标记以在 Firefox 中激活此功能。
或者只需使用搜索栏搜索“自动滚动”。
铬/铬
对于 Chrome/Chromium,我们可以使用名为“AutoScroll”的扩展(来自 kaescripts.blogspot.com)。
去Chrome 网上应用店中的此链接(显然使用 Chrome/Chromium)。
单击标有“+ ADD TO CHROME”的按钮来安装此扩展。
在确认对话框中单击“添加”。
电子应用程序
在某些 Electron 应用程序(例如 Visual Studio Code、Spotify 和 Discord)中,您可以添加--enable-blink-features=MiddleClickAutoscroll
到启动参数。根据程序是否运行支持它的 Electron 版本,将启用自动滚动。
其他应用
至于其他应用程序,我还没有找到解决方案。不管怎样,大部分问题都是由高网页造成的,而 Firefox 和 Chrome/Chromium 都有解决方案。
答案2
这将适用于您的所有应用程序,无需安装任何东西。
获取您的输入设备ID。就我而言,是 11。
xinput list
如果需要,请列出可用属性xinput list-props <deviceID>
。如果您使用 libinput (未来/现在),几乎所有属性都将以库输入。为了evdev
查看我的回答在这里。
和libinput
设置鼠标属性
xinput set-prop 11 "libinput Scroll Method Enabled" 0, 0, 1 # This is button
xinput set-prop 11 "libinput Button Scrolling Button" 2 # This is middle mouse. Already 2 by default
描述来自man libinput
:
- libinput 滚动方法启用3 个布尔值(8 位,0 或 1),依次为“两指”、“边缘”、“按钮”。指示该设备当前启用哪种滚动方法。
- libinput 按钮 滚动按钮1 个 32 位值。设置用于按钮滚动的按钮编号。此设置与滚动方法无关,要启用按钮滚动,必须将方法设置为按钮滚动,并且必须设置有效的按钮。
答案3
尝试一下:Firefox 中的自动滚动功能
firefox > preferences > search auto scroll and enable it
在 vanilla ubuntu 附带的 Firefox 中,如果您想进一步调整鼠标设置(如下面的控制面板所示),有时它会被禁用安装 gnome 调整工具
第二个选择:
- 通过更改鼠标中键行为x输入。
- 输入以下代码来探测输入设备和外围设备
x输入列表
xinput set-prop 9 "libinput 滚动方法启用" 0, 0, 1
- 现在检查当您按下中键并在任何具有垂直滚动[大文本/文档]的应用程序中向上或向下移动时鼠标的行为。
答案4
决定自动化 Pablo A 的答案,因为我发现它是最好的(因为它适用于所有应用程序,而不仅仅是 Firefox)。
将此文件保存为脚本(例如:~/setup_middle_click_scrolling.sh
),使用 使其可执行chmod +x
,然后运行它(运行后可以将其删除)。它支持中键单击滚动,还添加了启动脚本,以便您每次登录时都能获得该功能。
#!/bin/bash
# Enables middle click to scroll (like Windows).
set -e
: ${SCRIPT_PATH:=~/.config/autostart/middle_click_to_scroll.sh}
: ${DESKTOP_PATH:=~/.config/autostart/middle_click_to_scroll.desktop}
# Create dirs if they don't exist.
echo "$SCRIPT_PATH" "$DESKTOP_PATH" | xargs dirname | xargs mkdir -p
# Create a script that can be run on-demand.
# When run, it enables middle-click to scroll.
cat > "$SCRIPT_PATH" << EOF
#!/bin/bash
# Get device IDs of all devices containing "pointer"
pointer_ids=(\$(xinput list | grep pointer | perl -p -e 's@.*?id=(\d+).*@\1@'))
for pointer_id in "\${pointer_ids[@]}"; do
# If the pointer supports scroll method, set middle click to scroll
if xinput list-props "\$pointer_id" | grep 'Scroll Method Enabled' &>/dev/null; then
xinput set-prop "\$pointer_id" 'libinput Scroll Method Enabled' 0 0 1
fi
done
EOF
chmod +x "$SCRIPT_PATH"
# Create a desktop entry so it runs on startup.
cat > "$DESKTOP_PATH" << EOF
[Desktop Entry]
Type=Application
Name=Middle click to scroll
Exec="$SCRIPT_PATH"
X-GNOME-Autostart-Phase=Initialization
Terminal=false
NoDisplay=true
EOF
"$SCRIPT_PATH"
希望评论中的人们能够指出这是否适用于所有系统,但它适用于我的XFCE
+ libinput
+ 标准 3 键鼠标的设置。