Mam aplikację, która najwyraźniej chwyciła mysz (mogę ją przenieść, ale nie mogę nigdzie kliknąć), czy istnieje sposób, aby dowiedzieć się, która aplikacja jest właścicielem chwytaka myszy X.org?
Podany tutaj skrót do zwolnienia myszy nie działał, więc interesuje mnie coś, co mogłoby dać mi więcej informacji.
Odpowiedzi:
Możesz to zrobić, naciskając XF86LogGrabInfoklawisz wprowadzony w tym zatwierdzeniu .
Domyślnie ten klawisz nie jest powiązany z żadnym fizycznym kluczem ani kombinacją klawiszy. Ale nadal możesz go aktywować za pomocą
xdotool
:Po wykonaniu tego polecenia lista aktywnych chwytów zostanie zapisana w dzienniku X. Przynajmniej na Ubuntu
/var/log/Xorg.0.log
. Będzie to gdzieś pod koniec pliku dziennika, ale pod nim może znajdować się kilka nieistotnych komunikatów dziennika. Jeśli nie ma żadnych chwytów, pisze:Jeśli są jakieś chwyty (tutaj otworzyłem menu w przeglądarce Firefox), rejestruje coś takiego:
źródło
Właśnie miałem podobny problem i zawęziłem go do błędu, który w jakiś sposób sprawia, że X11 myśli, że środkowy przycisk jest wciśnięty i nie zwolniony. Fizyczne odłączenie myszy nie pomaga, dopóki nie nastąpi zdarzenie myszy.
Problem można odtworzyć za pomocą
xdotool mousedown 2
- nie można przełączać fokusu między oknami,xdotool key XF86LogGrabInfo
pokazuje bieżące skoncentrowane okno procesu, ale gdy jedno go zabija, inne okno otrzymuje fokus i ten sam scenariusz jest kontynuowany.Obejście: problem
xdotool mouseup 2
.Aktualizacja: naciśnięcie i zwolnienie środkowego przycisku jest po prostu najmniej zauważalne, ponieważ większość aplikacji nie reaguje na to, a niektóre myszy nie mają tego przycisku, aby spróbować kliknąć, aby sprawdzić, czy problem zniknie.
źródło
Wpisy w dzienniku Xorg mogą być dość nieczytelne. Napisałem program, który analizuje je i przedstawia w formie możliwej do zrozumienia dla człowieka:
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
Aby użyć, najpierw uruchom
xdotool key XF86LogGrabInfo
, jak opisano w odpowiedzi Mechanicznego ślimaka. Następnie uruchom powyższy program. Jeśli plik dziennika Xorg nie znajduje się w/var/log/Xorg.0.log
, możesz określić jego lokalizację za pomocą--xorg-log
opcji. Zobacz--help
szczegóły.źródło