Как запросить текущее состояние значка мыши?

Как я могу запросить (из кода) текущий значок / состояние мыши?

Мышь может зависать по ссылке в браузере или показывать 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
задан 5 October 2017 в 06:53

2 ответа

Известный Bug

Кажется, это известная ошибка:

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

В соответствии с потоком нам нужно установить пакет gnome-utils, который на самом деле не помогает.

Решение

Используя командную строку shutter и xdotool, я смог получить рабочее решение:

Сценарий: #!/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' Сценарий: С этой ошибкой у меня было направление. Я быстро сделал 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:~$ Я только что установил все: subroot@subroot:~$ sudo apt install libxcb-xfixes0 libxfixes3 libxcb-xfixes0-dbg libxfixes-dev libxfixes3-dbg libxcb-xfixes0-dev libx11-protocol-other-perl . . . subroot@subroot:~$ Затем я снова попытался, и это сработало: :) subroot@subroot:~$ sh cursor.sh

Результат:

https://bugs.launchpad.net/ubuntu/+source/gnome-screenshot/+bug/659399

Просто поиграйте с размерами и размером экрана для получения идеального изображения указателя курсора. Приветствия.

0
ответ дан 18 July 2018 в 05:44

Известный Bug

Кажется, это известная ошибка:

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

В соответствии с потоком нам нужно установить пакет gnome-utils, который на самом деле не помогает.

Решение

Используя командную строку shutter и xdotool, я смог получить рабочее решение:

Сценарий: #!/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' Сценарий: С этой ошибкой у меня было направление. Я быстро сделал 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:~$ Я только что установил все: subroot@subroot:~$ sudo apt install libxcb-xfixes0 libxfixes3 libxcb-xfixes0-dbg libxfixes-dev libxfixes3-dbg libxcb-xfixes0-dev libx11-protocol-other-perl . . . subroot@subroot:~$ Затем я снова попытался, и это сработало: :) subroot@subroot:~$ sh cursor.sh

Результат:

https://bugs.launchpad.net/ubuntu/+source/gnome-screenshot/+bug/659399

Просто поиграйте с размерами и размером экрана для получения идеального изображения указателя курсора. Приветствия.

0
ответ дан 24 July 2018 в 18:25
  • 1
    Благодарю. Я придумал очень похожее решение, использующее ffmpeg для захвата одного кадра 32x32 на основе информации о местоположении мыши xdotool. Затем использовалась магия изображения для сброса определенного цвета пикселя, который отличается от состояний мыши, о которых я забочусь. К сожалению, нет прямого вызова API, как в Windows, но это будет сделано. – Trevor Hickey 5 October 2017 в 17:40

Другие вопросы по тегам:

Похожие вопросы: