Как установить позицию курсора с помощью команды / скрипта?
У меня есть скрипт, который сбрасывает некоторые вещи, и в конце он мне нужен, чтобы установить курсор на определенные координаты, либо на пользовательский набор, либо на центр экрана (где он сбрасывается по умолчанию при перезапуске 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:]:
Затем решить, следует ли использовать заданные аргументы или расчетные.