相当于 Wayland 的 xdotool

相当于 Wayland 的 xdotool

我正在寻找一个在 Wayland 中工作的解决方案来获取鼠标位置、移动它并在bash脚本内单击,所有这些xdotool都可以为 X 服务器完成。

xdotool getmouselocation

仍在工作,但是

xdotool mousemove 
xdotool click 

对 GNOME Wayland 会话中的鼠标光标没有影响。

答案1

ydotoolWayland 软件包:

软件包 ydotool

通用 Linux 命令行自动化工具(无 X!)

https://github.com/ReimuNotMoe/ydotool

无需 X11 即可执行 xdotool(1) 的某些功能 - 但是,它通常需要 root 权限(打开 /dev/uinput)

当前已实施的命令:

  • type- 输入字符串
  • key- 按键
  • mousemove- 将鼠标指针移动到绝对位置
  • click- 单击鼠标按钮

注意:您可以选择使用以下命令启用并启动 ydotoold 守护程序:

  1. systemctl enable ydotool
  2. systemctl start ydotool

答案2

这是因为出于安全原因,这些功能已从 Wayland 中明确删除。主要问题是读取其他程序的输入并允许将虚假输入发送到其他程序,从而允许不同的攻击媒介。

一些窗口管理器将来可能会实现某种宏功能,但到目前为止,据我所知还没有这样的功能。

实现这一点意味着要为每个不同的窗口管理器实现它,这肯定需要一段时间。

如果您需要使用这些功能,我建议暂时使用 Xorg 而不是 Wayland。

答案3

类型适用于 Wayland 的软件包。它在 Ubuntu 22.04 上的 apt repos 上可用。

似乎是一种更简单的方法(不需要 ydotoold/systemd 服务),但目前它不适用于mutter(GNOME 合成器)。

另请检查叶夫穆,一个 freedesktop 项目,记录并重播设备描述和事件

答案4

埃韦穆来自 evemu-tools 软件包的 可以在 wayland 中模拟鼠标、触摸板和键盘等设备。它无法“读取”屏幕上发生的事情,但可以轻松移动和点击并“盲目”与会话交互。

sudo evemu-describe # list devices

如果您的鼠标/dev/input/event5来自上述命令的输出,则以下命令将鼠标移动 50 像素 xy 然后右键按下并松开按钮:

sudo evemu-event /dev/input/event5 --type EV_REL --code REL_X --value 50
sudo evemu-event /dev/input/event5 --type EV_REL --code REL_Y --value 50 
sudo evemu-event /dev/input/event5 --type EV_KEY --code BTN_RIGHT --value 1 
sudo evemu-event /dev/input/event5 --type EV_KEY --code BTN_RIGHT --value 0

您还可以录制特定序列并重新播放:

# press ctrl-c to stop recording
sudo evemu-record /dev/input/event5 /tmp/mouse-sequence

# to replay session
sudo evemu-play /tmp/mouse-sequence

相关内容