我正在寻找一个在 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 守护程序:
systemctl enable ydotool
systemctl start ydotool
答案2
这是因为出于安全原因,这些功能已从 Wayland 中明确删除。主要问题是读取其他程序的输入并允许将虚假输入发送到其他程序,从而允许不同的攻击媒介。
一些窗口管理器将来可能会实现某种宏功能,但到目前为止,据我所知还没有这样的功能。
实现这一点意味着要为每个不同的窗口管理器实现它,这肯定需要一段时间。
如果您需要使用这些功能,我建议暂时使用 Xorg 而不是 Wayland。
答案3
答案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