如何在 Linux 上滚动半页?

joe*_*lom 4 linux scrolling ubuntu xbindkeys xdotools

我正在寻找一种能够滚动半页的方法,最好使用组合键,如向上/向下移动页面。在 Windows 中,这可以通过 autohotkey 来实现,对于操作系统来说,似乎没有像我发现的那样简单的解决方案。

我只是切换到使用 Ubuntu 14.04(来自 win7)。通过谷歌搜索,在我看来,实现这一目标的最简单方法是创建几个 xdotool/xbindkeys 脚本,它们分别模拟半页的鼠标滚动或向上和向下箭头点击。然后我会将这些绑定到自定义热键。

然而,由于我刚刚切换到 Ubuntu,我意识到我可能会遗漏一些东西。因此我想知道,在 Linux 中启用半页滚动的首选方式是什么?

更新: 我创建了一个脚本,它模拟滚动鼠标滚轮几次:

#!/bin/bash
xdotool click 4
xdotool click 4
xdotool click 4
xdotool click 4
Run Code Online (Sandbox Code Playgroud)

它运行良好,但仍然存在两个问题:

  1. 它总是滚动鼠标所在的窗口。我试图让它滚动活动窗口,但没有运气。

  2. 由于它发送鼠标滚轮滚动,这些被其他程序解释,因此我无法将控制作为热键,因为它会缩放。这是所有热键都被理想化的程序中的一个问题,我想指定滚动距离而不模拟鼠标滚轮滚动。

joe*_*lom 7

我终于想出了一个解决方案,它适用于我的大多数用例。使用xdotools,我创建了两个脚本,一个用于在每个方向上滚动。这是向下滚动的脚本(要向上滚动,将“5”替换为“4”)。

#!/bin/bash

#Get active window id
win=`xdotool getactivewindow`

#Move the mouse to the active window
xdotool mousemove --window $win 45 110 

#Scroll active window several times
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5

#Send click to specific window. Finicky.
#xdotool click --window $win 5
Run Code Online (Sandbox Code Playgroud)

基本上,xdotools 获取 activewindow id,然后在多次发送鼠标滚动信号之前将移动移动到那里。我无法通过直接指定将点击发送到哪个窗口来使其工作,所以我通过移动鼠标光标来解决它。由于 Linux 会自动在鼠标下滚动窗口,因此解决了我的问题中列出的问题 1。该--clearmodifiers参数释放热键组合中使用的任何修饰键,以便发送的唯一键是来自 xdotool 的键,这为我解决了问题 2。

剩下的唯一小烦恼是在某些窗口中,有多个面板,使用此脚本我只能滚动最左上角的面板。这在浏览时不是问题,但对于 spyder 等 IDE 而言。所以如果有人有更好的方法,请分享!