Как я могу ограничить движение указателя мыши только по горизонтали или только по вертикали?

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

Меня также интересуют частичные решения для этого, такие как программа командной строки для ограничения движения или другой способ изменить режим движения с помощью клавиатуры. Или даже какой-то локальный «взлом конфигурации».

Прекрасным примером использования этой функции является разрешение использовать панель миниатюр в видео на YouTube без необходимости держать мышь внутри горизонтального диапазона вручную.

1
задан 28 April 2019 в 12:58

1 ответ

Обход проблемы:

сначала получите разрешение экрана и измените значения в скрипте.

Пример содержимого для вертикального перемещения. Измените значение 768 в соответствии с вертикальным разрешением экрана.

borderxl=$XPOS
borderyu=0

borderxr=$XPOS
borderyd=768

Пример содержимого для горизонтального перемещения. Измените значение 1366 в соответствии с разрешением экрана по горизонтали.

borderxl=0
borderyu=$YPOS

borderxr=1366
borderyd=$YPOS

Оригинальный сценарий взят из этого поста. кредит также идет к этой должности Keep Mouse Within Circle

Модифицированный скрипт:

#!/bin/bash

POS=$(xdotool getmouselocation | sed 's/:/ /g')
XPOS=$(echo $POS | cut -d' ' -f2)
YPOS=$(echo $POS | cut -d' ' -f4)

borderxl=0
borderyu=$YPOS

borderxr=1366
borderyd=$YPOS

check=0

if [ $borderxl -gt $borderxr ]
then
        check=1
fi

if [ $borderyu -gt $borderyd ]
then
        check=1
fi
if [ $check -ge "1" ]
then
        echo "Make sure the first coordinate pair refers to the upper left corner"
        echo "and the second pair refers to the lower right one."
fi

if [ $check -lt "1" ]
then
        while [ true ]
        do
                check=0
                xpos=`xdotool getmouselocation | awk '{ print $1}'`
                xpos=${xpos:2}
                #xpos=`getcurpos | awk '{ print $1}'`
                ypos=`xdotool getmouselocation | awk '{ print $2}'`
                ypos=${ypos:2}
                #ypos=`getcurpos | awk '{ print $2}'`

                if [ $xpos -gt $borderxr ]
                then
                        check=1
                        xpos=$borderxr
                fi

                if [ $ypos -gt $borderyd ]
                then
                        check=1
                        ypos=$borderyd
                fi

                if [ $xpos -lt $borderxl ]
                then
                        check=1
                        xpos=$borderxl
                fi

                if [ $ypos -lt $borderyu ]
                then
                        check=1
                        ypos=$borderyu
                fi


                if [ $check -ge "1" ]
                then
                        xdotool mousemove $xpos $ypos
                fi
        done   
fi

Проблемы со скриптом.

Создавая сочетания клавиш для этих двух скриптов, я не смог найти способ убить процесс, единственный выход - принудительный выход из системы. Изначально я создал сочетания клавиш Alt + x и Alt + y, которые работают отлично ... но убить процесс я не смог.

enter image description here

0
ответ дан 28 April 2019 в 12:58

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

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