Я хотел бы иметь возможность перемещать указатель мыши по совершенно прямой линии. Я ищу способ использовать две комбинации клавиш-модификаторов, одна из которых заставляет указатель мыши двигаться только горизонтально, а вертикально - обычным способом. Это было бы, как если бы я перемещал саму мышь только вдоль вертикальной линейки, когда мышь была ориентирована совершенно параллельно линейке. И та же самая функция только для горизонтального перемещения, используя различные клавиши-модификаторы или последовательности клавиш.
Меня также интересуют частичные решения для этого, такие как программа командной строки для ограничения движения или другой способ изменить режим движения с помощью клавиатуры. Или даже какой-то локальный «взлом конфигурации».
Прекрасным примером использования этой функции является разрешение использовать панель миниатюр в видео на YouTube без необходимости держать мышь внутри горизонтального диапазона вручную.
Обход проблемы:
сначала получите разрешение экрана и измените значения в скрипте.
Пример содержимого для вертикального перемещения. Измените значение 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, которые работают отлично ... но убить процесс я не смог.