如何查询鼠标当前的图标状态?

如何查询鼠标当前的图标状态?

如何(从代码中)查询鼠标的当前图标/状态?

在此处输入图片描述

鼠标可能悬停在浏览器中的链接上,或者显示来自终端的 I 形光标。
我不关心鼠标的实际位置,也不关心它在哪个应用程序上——我只关心它的视觉状态。

我怎样才能向 ubuntu 查询我的鼠标当前是什么样子的?

我使用的是以下版本的 Ubuntu:

lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:    16.04
Codename:   xenial

使用 gnome flashback:

$echo $XDG_CURRENT_DESKTOP
GNOME-Flashback:Unity
$echo $GDMSESSION
gnome-flashback-metacity

(不确定这些是否相关)。

我本来打算从鼠标位置开始截取 32x32 的屏幕截图,然后进行基本的图像识别以查看状态,但这也行不通!截取屏幕截图时(例如,使用 gnome-screenshot 或 shutter),它会自动显示鼠标的正常图标状态,而不管截取屏幕截图时鼠标的图标状态如何。

答案1

已知错误

这似乎是一个已知的错误:

https://bugs.launchpad.net/ubuntu/+source/gnome-screenshot/+bug/659399
https://bugzilla.gnome.org/show_bug.cgi?id=571602

根据线程,我们需要安装gnome-utils实际上没有帮助的包。


解决方案

使用命令shutterxdotool,我已经能够得到一个可行的解决方案:

  1. 剧本:
    #!/bin/bash

    # Get current cursor position using xdotool and eval them as variables
    eval $(xdotool getmouselocation --shell)
    
    # We need the X and Y coordinates. Minus 10 pixels to create some padding around the cursor
    xc=$(($X-10))
    yc=$(($Y-10))

    # Use shutter to capture a screenshot of the area around the cursor 32px by 32px and save it in the current directory
    shutter -s=$xc,$yc,32,32 -c -e -o './%y-%m-%d_$w_$h_$RRRR.png'
  1. 这截取了屏幕截图,但使用了默认光标指针。但它给了我一个错误消息:

    WARNING: XFIXES extension not found - using a default cursor image
    
  2. 有了这个错误,我找到了方向。我很快做了一个apt-cache search xfixes,结果如下:

    subroot@subroot:~$ apt-cache search xfixes
    libxcb-xfixes0 - X C Binding, xfixes extension
    libxcb-xfixes0-dbg - X C Binding, xfixes extension, debugging symbols
    libxcb-xfixes0-dev - X C Binding, xfixes extension, development files
    libxfixes-dev - X11 miscellaneous 'fixes' extension library (development headers)
    libxfixes3 - X11 miscellaneous 'fixes' extension library
    libxfixes3-dbg - X11 miscellaneous 'fixes' extension library (debug package)
    libx11-protocol-other-perl - miscellaneous X11::Protocol helpers
    subroot@subroot:~$
    
  3. 我刚刚安装了所有内容:

    subroot@subroot:~$ sudo apt install libxcb-xfixes0 libxfixes3 libxcb-xfixes0-dbg libxfixes-dev libxfixes3-dbg libxcb-xfixes0-dev libx11-protocol-other-perl
    . . .
    subroot@subroot:~$
    
  4. 然后我再次尝试并且成功了::)

    subroot@subroot:~$ sh cursor.sh
    

结果:

在此处输入图片描述 在此处输入图片描述

只需调整尺寸和屏幕截图大小即可获得完美的光标指针图像。干杯。

相关内容