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

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

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

Я использую Ubuntu GNOME 16.04 с GNOME 3.20.

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

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

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