如何使用命令/脚本设置光标​​位置?

如何使用命令/脚本设置光标​​位置?

我有一个脚本可以重置一些东西,在它的最后我需要将光标设置为某些坐标,要么设置为自定义设置,要么设置为屏幕的中心(gnome-shell例如,重新启动时默认重置为该坐标)。

如何实现?解决方案必须适用于所有显示尺寸,并能够自动获取数据并进行所有相关数学运算等。

我正在运行带有 GNOME 3.20 的 Ubuntu GNOME 16.04。

答案1

将鼠标移动到定义(绝对)位置

..只需通过命令即可完成(例如):

xdotool mousemove 200 200

将鼠标移到中心然而,屏幕是相对的命令,我们需要读取屏幕的信息并进行一些计算。这在下面的两个小脚本中完成。

简单版本(将光标移至屏幕左侧中央)

要将鼠标移动到屏幕(最左边)的中心,请使用以下脚本:

#!/usr/bin/env python3
import subprocess

xr = [s for s in subprocess.check_output("xrandr").decode("utf-8").split() if "+0+" in s]
scr = [int(n)/2 for n in xr[0].split("+")[0].split("x")]
subprocess.Popen(["xdotool", "mousemove", str(scr[0]), str(scr[1])])
  • 安装 xdotool

    sudo apt-get install xdotool
    
  • 将脚本复制到一个空文件中,另存为center_screen.py

  • 运行:

    python3 /path/to/center_screen.py
    

扩展版本(可选参数 x、y)

如果任意坐标选修的, 使用:

#!/usr/bin/env python3
import subprocess
import sys

if sys.argv[1:]:
    scr = [sys.argv[1], sys.argv[2]]
else:
    xr = [s for s in subprocess.check_output("xrandr").decode("utf-8").split() if "+0+" in s]
    scr = [str(int(n)/2) for n in xr[0].split("+")[0].split("x")]

subprocess.Popen(["xdotool", "mousemove", scr[0], scr[1]])

此版本运行时会将光标移动到屏幕中心没有参数,或者运行时移动到任意位置带有参数,例如:

python3 /path/to/center_screen.py 200 200

解释

在命令的输出中:xrandr,我们需要找到类似的字符串:

1680x1050+0+0

...其中包含以下数据最左边屏幕(+0+)。 1680x1050然后将中的两个数字除以二,用于:

xdotool mousemove <x> <y>

以下行:

if sys.argv[1:]:

然后决定是否应该使用给定的参数或计算的参数。

相关内容