Курсор мыши набора к покинутому центру в настоящее время активного дисплея с командой/Сценарием

Я пытаюсь выяснить, как сделать сценарий, который работает следующим образом:

  1. находит размеры дисплея, который указатель мыши в настоящее время включен
  2. перемещает указатель мыши в центр левого края на том дисплее
  3. Я хотел бы смочь добавить аргументы команды при запущении скрипта, который добавит или вычтет к граничной позиции левого центра и переместит мышь соответственно. Например, если я работал:

python3/path/to/script.py

затем сценарий поместил бы указатель мыши в левый край дисплея и в центре вертикальной оси. Если я выполнил это:

python3/path/to/script.py 10 - 10

затем сценарий поместил бы указатель мыши 10 пкс-> от левого края экрана и-10px (вниз) из центра вертикальной оси.

Я - вполне уверенный xdotool, и Python может выполнить это, но я - полный новичок когда дело доходит до программирования чего-либо, и даже при том, что я нашел эту ссылку, я все еще не уверен, как продолжить двигаться. Если бы кто-либо чувствует себя так добрым для выручения меня с этим, это значительно ценилось бы, но если не затем никакие заботы.

Если кому-либо любопытно относительно того, почему я хочу сделать это: я настраиваю планшет для использования i3wm. Я создаю сенсорные ярлыки кнопки для i3 управления окнами с помощью jgmenu. Jgmenu имеет опцию запуститься в местоположении указателя мыши. Я хотел бы использовать touchegg жест для первого шага указатель мыши с этим сценарием, затем запустил бы jgmenu.

1
задан 19 April 2018 в 17:39

1 ответ

Этот подход использует утилиты для X-серверов, он, по-видимому, не будет работать с Уэйлендом.
Вот немного bash функция для Вас:

line_up () 
{ 
  vc=$(( $(xwininfo -root|sed '/Height/!d;s/.* //') / 2 ));
  [[ -n $2 ]] && vc=$(( -$2 + vc ));
  xdotool mousemove $(( $1 )) $vc
}

Как острота:

line_up(){ vc=$(($(xwininfo -root|sed '/Height/!d;s/.* //')/2));[[ $2 ]]&&vc=$((-$2+vc));xdotool mousemove $(($1)) $vc;}

Это использует вывод xwininfo получить высоту текущего дисплея, разделяет его пополам и сохраняет его как переменную cv. Если $2 существует, это вычтено. xdotool затем перемещает курсор в координаты $1,$vc. Я использую в своих интересах факт это bashарифметическое выражение просто возвращается 0 если $1 не установлен, плоскость xdotool mousemove $1 … просто бросил бы ошибку в этом случае. Как выше Вас может вызвать функцию с так же аргументами как Вам угодно, если нет ни одного, во что она просто переместит курсор 0,totalheight/2, если существует тот к $1,totalheight/2 и если существует два или больше к $1,totalheight/2-$2.

Пример выполняется

$ xwininfo -root|sed '/Height/!d' # display height is 1024 px
  Height: 1024
$ xdotool getmouselocation # current mouse location: 469,875
x:469 y:875 screen:0 window:15294612
$ line_up
$ xdotool getmouselocation # current mouse location: 0,512
x:0 y:512 screen:0 window:14680366
$ line_up 10
$ xdotool getmouselocation # current mouse location: 10,512
x:10 y:512 screen:0 window:14680366
$ line_up 20 -10
$ xdotool getmouselocation # current mouse location: 20,522
x:20 y:522 screen:0 window:14680366

Источники

1
ответ дан 7 December 2019 в 15:21

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

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