![如何在 Linux 上滚动半个页面?](https://linux22.com/image/1405924/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%8A%E6%BB%9A%E5%8A%A8%E5%8D%8A%E4%B8%AA%E9%A1%B5%E9%9D%A2%EF%BC%9F.png)
我正在寻找一种能够滚动半页的方法,最好使用组合键,例如向上/向下按 Shift 键翻页。在 Windows 中,这可以通过 autohotkey 实现对于操作系统来说,似乎没有一个简单的解决方案我发现这是。
我刚刚切换到使用 Ubuntu 14.04(来自 win7)。通过谷歌搜索,我发现实现此目的的最简单方法是创建几个 xdotool/xbindkeys 脚本,分别模拟半页的鼠标滚动或上下箭头单击。然后我会将它们绑定到自定义热键。
但是,由于我刚刚切换到 Ubuntu,我意识到我可能错过了一些东西。因此,我想知道,在 Linux 中启用半页滚动的首选方法是什么?
更新: 我创建了一个脚本,模拟滚动鼠标滚轮几次:
#!/bin/bash
xdotool click 4
xdotool click 4
xdotool click 4
xdotool click 4
虽然它运行良好,但仍然存在两个问题:
它总是滚动鼠标所在的窗口。我曾尝试让它滚动活动窗口,但没有成功。
由于它发送鼠标滚轮滚动,这些滚动会被其他程序解释,因此我无法将其作为热键进行控制,因为它会缩放。这在所有热键都被占用的程序中是一个问题,因此理想情况下,我想指定滚动距离而不模拟鼠标滚轮滚动。
答案1
我终于想出了一个对我的大多数用例都非常有用的解决方案。使用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
基本上,xdotools 获取 activewindow id,然后将鼠标移动到那里,然后多次发送鼠标滚动信号。我无法通过直接指定将点击发送到哪个窗口来使其工作,因此我通过移动鼠标光标解决了这个问题。由于 Linux 会自动滚动鼠标下的窗口,因此这解决了我的问题中列出的问题 1。该--clearmodifiers
参数释放热键组合中使用的任何修饰键,以便发送的唯一键是来自 xdotool 的键,这为我解决了问题 2。
剩下的唯一小麻烦是,在某些窗口中,有多个面板,而使用此脚本,我只能滚动最左上角的面板。浏览时这不是问题,但对于 spyder 等 IDE 来说是个问题。所以如果有人有更好的方法,请分享!