Jaké nástroje příkazového řádku existují pro výpis a správu uchopení X serveru? (To je uchopení jako u uchopení kláves a ukazatelů, tj. omezení použití konkrétní klávesy nebo tlačítka myši na konkrétní aplikaci nebo omezení ukazatele myši tak, aby zůstal v určité oblasti obrazovky.) Hledám hypotetický xgrab
nástroj, který by ukazoval věci jako
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
což znamená, že došlo k volání XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
a tak dále pomocí XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(Pokud možno). Na formátu zobrazení nezáleží, chci nějaký způsob, jak zjistit, kdo co stahuje, a možná nějaký způsob, jak tato uchopení zrušit (pokud je to možné, nejsem si jistý, jestli to X11 API umožňuje).
Přijatá odpověď:
Nejnovější verze X (server X.org ≥1.11) podporují několik ladicích keysymů představených v tomto potvrzení. Když jsou spuštěny, provádějí akce související s chvaty.
Ve výchozím nastavení (alespoň v posledních verzích) jsou tyto zakázány (neexistují ve výchozí mapě kláves).
Pokud však máte xdotool
nainstalován, je je možné je zavolat spuštěním příkazového řádku:
xdotool key NameOfKey
kde NameOfKey
je keyym, který chcete aktivovat. Chcete-li například vytisknout seznam aktivních uchopení do protokolu X serveru, použijte xdotool key XF86LogGrabInfo
.
Relevantní klíčové symboly jsou:
- XF86LogGrabInfo :vytiskne seznam aktivních uchopení do protokolu X serveru
- XF86Unrab :přeruší všechny aktivní chvaty, aniž by zabil aplikaci, která chyty drží
- XF86ClearGrab :zabije všechny procesy, které drží aktivní chvaty
Všimněte si, že XF86LogGrabInfo uvádí pouze aktivní uchopení, nikoli pasivní uchopení, jako je uchopení klávesy, která není aktuálně stisknuta. Pokud chcete získat informace o pasivním grabování, musíte grab aktivovat:spusťte xdotool key XF86LogGrabInfo
zatímco je stisknuta kombinace kláves nebo tlačítka myši, která vás zajímá. Udělejte něco jako:
- Spustit
sleep 1; xdotool key XF86LogGrabInfo
- Do 1 sekundy stiskněte kombinaci klávesy nebo tlačítka myši.
- Po 1 sekundě uvolněte klávesu/tlačítko.
- Zkontrolujte informace „Active grab…“ v protokolu X serveru (často
/var/log/Xorg.0.log
).