我正在尝试弄清楚如何制作按以下方式运行的脚本:
- 查找鼠标指针当前所在显示屏的尺寸
- 将鼠标指针移动到该显示屏左边缘的中心
- 我希望能够在运行脚本时添加命令参数,以增加或减少中心左边缘位置并相应地移动鼠标。例如,如果我运行:
python3 /path/to/script.py
然后脚本会将鼠标指针放在显示屏的左边缘和垂直轴的中心。如果我运行这个:
python3 /path/to/script.py 10 -10
然后脚本会将鼠标指针放置在距离屏幕左边缘 10px --> 处,距离垂直轴中心 -10px (向下)处。
我很确定 xdotool 和 python 可以实现这一点,但是对于编程来说我完全是个菜鸟,尽管我发现此链接,我仍然不确定如何继续。如果有人愿意帮助我,我将不胜感激,但如果没有人愿意,也不用担心。
如果有人好奇我为什么要这样做:我正在设置一台平板电脑以使用 i3wm。我正在使用 jgmenu 为 i3 窗口管理创建触摸按钮快捷方式。jgmenu 有一个在鼠标指针位置启动的选项。我想使用 touchegg 手势首先使用此脚本移动鼠标指针,然后启动 jgmenu。
答案1
此方法使用 X 服务器实用程序,可能不适用于 Wayland。
这里有一个小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
来源
- 如何从 shell 脚本中找出我的屏幕分辨率?
- Bash 黑客维基
man xdotool
- 常见的尝试和错误