У меня есть сценарий, который сбрасывает некоторые вещи, и в конце его мне нужен он для установки курсора на определенные координаты, или к пользовательскому набору или к центру экрана (где он сбрасывается к по умолчанию при перезапуске gnome-shell
например).
Как это может быть достигнуто? Решение должно было бы работать на все размеры дисплея и смочь автоматически получить данные и сделать всю математику, и т.д. включенную.
Я выполняю Ubuntu GNOME 16.04 с GNOME 3.20.
.. просто сделан командой (например).:
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
Если произвольные координаты являются дополнительными, используйте:
#!/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:]:
должен затем решить, должны ли данные аргументы использоваться или расчетные.