![如何使用 xdotool 在所有 4 个对角线方向上移动鼠标?](https://linux22.com/image/1634522/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20xdotool%20%E5%9C%A8%E6%89%80%E6%9C%89%204%20%E4%B8%AA%E5%AF%B9%E8%A7%92%E7%BA%BF%E6%96%B9%E5%90%91%E4%B8%8A%E7%A7%BB%E5%8A%A8%E9%BC%A0%E6%A0%87%EF%BC%9F.png)
如何将鼠标移动xdotool
到显示屏的第二象限或第四象限?
(我所说的“象限”。
将鼠标移动xdotool
到象限 I 可以正常工作:
mousemouve_x=100
mousemouve_y=100
xdotool mousemove_relative -- -$mousemouve_x -$mousemove_y
将鼠标移动xdotool
到象限 III 可以正常工作,如下所示:
mousemouve_x=100
mousemouve_y=100
xdotool mousemove_relative $mousemove_x $mousemove_y
如何将鼠标移动xdotool
到显示屏的第二象限或第四象限方向?
评论:
- 尝试了一下之后,我似乎清楚该怎么做了。特别感谢 Kamil Maciorowski:
- 下面的“mousemove_relative -- x100 y100”接受 x 和 y 的正数和负数。下面的“mousemove_relative x100 y100”接受 y 的正数和负数。
- 负的 x 值会给出错误消息,正值则正常工作。这看起来就像是 xdotools 的一个小错误。如果有人知道如何报告此错误,请报告 xdotools 的小错误。
答案1
数学中的象限并不完全适用于此,因为在计算机图形和显示中,Y 坐标几乎总是从顶部(图像或屏幕)向下增长。在数学中,“X 增加,Y 增加”和“向右上方移动”这两个短语通常是等价的,但在计算机中它们通常不是。
如果您的命令确实有效,您会看到差异。有拼写错误(mousemouve
vs mousemove
),有未加引号的变量可能会扩展为零。在新的 shell 中,这两个命令都不会沿对角线移动光标。如果它们对您有效(或曾经有效),那么可能是因为存在(或曾经存在)名称包含mousemove
声明的非空变量较早。
要明确的是:这些是您的固定命令(即没有拼写错误):
mousemove_x=100
mousemove_y=100
xdotool mousemove_relative -- "-$mousemove_x" "-$mousemove_y"
mousemove_x=100
mousemove_y=100
xdotool mousemove_relative -- "$mousemove_x" "$mousemove_y"
它们可以工作并沿着其中一个对角线方向移动光标。我理解您的问题是:如何沿另一个对角线方向移动光标?
当你在 shell 中运行某个程序时,你可以提供零个或多个参数,例如字符串。该工具可能会将其中一些解释为数字。Herexdotool mousemove_relative --
需要特定格式的两个参数,因此它可以将它们解释为数字。看起来像正数的字符串将导致相应坐标增加(如果可能);看起来像负数的字符串将导致相应坐标减少(如果可能)。
在您的 (固定) 尝试中,您xdotool
只需扩展其值本身看起来像正数 ( ) 的变量,即可使传递的字符串看起来像正数100
。然后,通过在看起来像正数的扩展值前添加字符,使传递给另一个的字符串xdotool
看起来像负数-
。
要沿另一条对角线方向移动光标,需要将一个字符串解释为负数,将另一个字符串解释为正数:
# poor code though
mousemove_x=100
mousemove_y=100
xdotool mousemove_relative -- "$mousemove_x" "-$mousemove_y"
或者
# still poor code
mousemove_x=100
mousemove_y=100
xdotool mousemove_relative -- "-$mousemove_x" "$mousemove_y"
我称其为“糟糕的代码”,因为它概念上错误。
从概念上来说数据:
mousemove_x=100
mousemove_y=100
这是代码:
xdotool mousemove_relative -- "-$mousemove_x" "$mousemove_y"
到目前为止,我们通过更改代码来选择方向。正确的方法是更改数据:
mousemove_x=100
mousemove_y=100
xdotool mousemove_relative -- "$mousemove_x" "$mousemove_y"
mousemove_x=-100
mousemove_y=100
xdotool mousemove_relative -- "$mousemove_x" "$mousemove_y"
mousemove_x=-100
mousemove_y=-100
xdotool mousemove_relative -- "$mousemove_x" "$mousemove_y"
mousemove_x=100
mousemove_y=-100
xdotool mousemove_relative -- "$mousemove_x" "$mousemove_y"
请注意,四种情况下的代码都相同,它是通用的。只需提供正确的数据,您就可以获得任何可能的运动。
使用 eg 的代码-$mousemove_x
并不通用,因为您无法通过这种方式传递看起来像正数的字符串。如果您尝试通过存储-100
在变量中来反转方向,那么您最终会得到--100
;这不会被解释为正数。