Как установить позицию курсора с командой/сценарием?

У меня есть сценарий, который сбрасывает некоторые вещи, и в конце его мне нужен он для установки курсора на определенные координаты, или к пользовательскому набору или к центру экрана (где он сбрасывается к по умолчанию при перезапуске gnome-shell например).

Как это может быть достигнуто? Решение должно было бы работать на все размеры дисплея и смочь автоматически получить данные и сделать всю математику, и т.д. включенную.

Я выполняю Ubuntu GNOME 16.04 с GNOME 3.20.

4
задан 3 July 2016 в 15:03

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:]:

должен затем решить, должны ли данные аргументы использоваться или расчетные.

5
ответ дан 1 December 2019 в 09:33

Другие вопросы по тегам:

Похожие вопросы: