कमांड लाइन पर X कुंजी और पॉइंटर ग्रेड को जोड़ते हुए


20

X सर्वर ग्रेड को सूचीबद्ध करने और प्रबंधित करने के लिए कौन सी कमांड लाइन उपकरण मौजूद हैं? (यह कुंजी और पॉइंटर ग्रेब में है, यानी किसी विशेष एप्लिकेशन के लिए किसी विशेष कुंजी या माउस बटन के उपयोग को प्रतिबंधित करना, या माउस पॉइंटर को किसी विशेष स्क्रीन क्षेत्र में रहने के लिए सीमित करना।) मैं एक काल्पनिक xgrabउपयोगिता की तलाश कर रहा हूं। जैसी चीजें दिखाओ

Key     0x00f00ba5  0x123   0
Button  0x00f00ba5  2       
Pointer 0x00abcdef  

जिसका अर्थ है कि वहाँ के लिए एक कॉल किया गया है XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)और इतने के साथ पर XGrabButton, XGrabPointer, XGrabKeyboard, XGrabServer(यदि संभव हो)। प्रदर्शन प्रारूप कोई मायने नहीं रखता है, जो मैं चाहता हूं वह यह देखने का कुछ तरीका है कि कौन क्या पकड़ रहा है, और संभवतः इन कब्रों को फिर से चालू करने का कोई तरीका है (यदि यह संभव है, तो मुझे यकीन नहीं है कि अगर X11 एपीआई इसकी अनुमति देता है)।

जवाबों:


21

X (X.org सर्वर ≥1.11) के हाल के संस्करण इस डिबेट में पेश किए गए कई डीबगिंग कीमियों का समर्थन करते हैं । जब ट्रिगर किया जाता है, तो ये पकड़ से संबंधित क्रिया करते हैं।

डिफ़ॉल्ट रूप से ( कम से कम हाल के संस्करणों में ), ये अक्षम हैं (डिफ़ॉल्ट कीमैप से अनुपस्थित हैं)।

हालांकि, अगर आप की है xdotoolस्थापित है, यह है संभव है, उन्हें कॉल करने के लिए कमांड लाइन पर क्रियान्वित करते हुए:

xdotool key NameOfKey

जहां NameOfKeykeysym आप सक्रिय करना चाहते है। उदाहरण के लिए, सक्रिय सर्वर की सूची को एक्स सर्वर लॉग में प्रिंट करने के लिए, उपयोग करें xdotool key XF86LogGrabInfo

प्रासंगिक कुंजी जिम हैं:

ध्यान दें कि XF86LogGrabInfoकेवल सक्रिय कब्रों को सूचीबद्ध करता है, न कि निष्क्रिय कब्रों जैसे कि एक कुंजी को पकड़ना जो वर्तमान में दबाया नहीं गया है। यदि आप एक निष्क्रिय हड़पने के बारे में जानकारी प्राप्त करना चाहते हैं, तो आपको हड़पने को सक्रिय करने की आवश्यकता है: xdotool key XF86LogGrabInfoजब आप जिस कुंजी कॉर्ड या माउस बटन संयोजन में रुचि रखते हैं उसे दबाएं। कुछ ऐसा करें:

  1. Daud sleep 1; xdotool key XF86LogGrabInfo
  2. 1 सेकंड के भीतर, कुंजी कॉर्ड या माउस बटन संयोजन दबाएं।
  3. 1 सेकंड के बाद, कुंजी / बटन जारी करें।
  4. एक्स सर्वर लॉग (अक्सर /var/log/Xorg.0.log) में "एक्टिव ग्रैब ..." जानकारी जांचें ।

2
Xorg 1.12.4 के साथ डेबियन व्हीज़ी पर अब परीक्षण करना, xdotool key XF86LogGrabInfoएक्स लॉग में केवल दो प्रविष्टियों को ट्रिगर करता है: "सभी वर्तमान में सक्रिय डिवाइस पकड़ना मुद्रण:" तुरंत बाद सक्रिय डिवाइस की अंतिम सूची "। फिर भी मेरा विंडो मैनेजर चाबियों का एक गुच्छा पकड़ता है। क्या आपने इस काम को हड़पने के लिए देखा है?
गाइल्स का SO- बुराई पर रोक '

4
@ गिल्स - नहीं, अगर आप इसे चलाते हैं तो आपको कोई आउटपुट नहीं मिलेगा ... इसे चलाने की कोशिश करें sleep 2; xdotool key "XF86LogGrabInfo"और तुरंत एक कुंजी (जैसे "विन" कुंजी) को बहुत तेजी से दबाने शुरू करें, फिर आपको कुछ आउटपुट दिखाई देंगे Xorg.log। या xdotoolकुंजियों XF86LogGrabInfoको एक ही समय में दबाने के लिए उपयोग करें , जैसे कि यहाँ
don_crissti

@don_crissti आह, मैं देखता हूं, XF86LogGrabInfoकेवल एक कुंजी के बारे में जानकारी प्रिंट करता है जो वर्तमान में दबाया गया है? यही इसकी उपयोगिता को सीमित करता है। मैं सभी कब्रों - सभी निष्क्रिय कब्रों को सूचीबद्ध करना चाहता हूं, अगर मैं शब्दावली को सही ढंग से समझता हूं।
गाइल्स का SO- बुराई से दूर रहना '

वहाँ कुंजी संयोजन की एक पटकथा खोज के साथ संयोजन के शायद कुछ चालाक तरीका है, उम्मीद है कि एक आभासी कीबोर्ड के बिना। निश्चित रूप से मेरे ज्ञान के बाहर।
एडम काट्ज

धन्यवाद! इससे मुझे पता चला कि xfsettingsdमेरा Win+ Lशॉर्टकट चोरी हो रहा था ।
मिकेल

8

मैं किसी भी कुंजी या बटन के निष्क्रिय ग्रेड 1 के लिए हाथ से कुछ भी नहीं जानता जो मौजूद हो सकता है, लेकिन पूरे कीबोर्ड या माउस डिवाइस के सक्रिय कब्रों को सूचीबद्ध करने के लिए कुछ तरीके हैं।

  1. सभी प्लेटफार्मों पर, लेकिन केवल Xorg 1.11 के साथ और बाद में (या पैच के साथ एक पुराना संस्करण), इन पैच नोट्स में वर्णित अनुसार लॉग में डेटा हड़पने के लिए हॉटकीज़ को मैप करें ।
  2. सोलारिस 11 पर (या तो सोलारिस 11 एक्सप्रेस 2010.11 या वास्तविक सोलारिस 11 रिलीज़), एक्स सर्वर से सूचना हथियाने/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client में वर्णित के रूप में डीबगर स्क्रिप्ट का उपयोग करें । सर्वर ग्रब के लिए यहां भी एक है, जो Xorg 1.11 हॉटकी वर्तमान में कवर नहीं करता है।

1 सक्रिय बनाम निष्क्रिय कब्र की परिभाषा के लिए http://tronche.com/gui/x/xlib/input/pointer-grabbing.html देखें ।


4

यह मैकेनिकल घोंघा के जवाब के लिए एक अतिरिक्त है -

Xorg लॉग में प्रविष्टियाँ बहुत अचूक हो सकती हैं। मैंने एक कार्यक्रम लिखा, जो उन्हें ख़ुश करता है और उन्हें मानव-ट्रैक्टेबल रूप में प्रस्तुत करता है:

https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e

उपयोग करने के लिए, पहले चलाएं xdotool key XF86LogGrabInfo, जैसा कि मैकेनिकल घोंघे के उत्तर में वर्णित है। फिर, ऊपर दिए गए प्रोग्राम को चलाएं। यदि आप Xorg लॉग फ़ाइल पर स्थित नहीं हैं /var/log/Xorg.0.log, तो आप --xorg-logविकल्प का उपयोग करके इसके स्थान को निर्दिष्ट कर सकते हैं । --helpविवरण के लिए देखें।


1
यहाँ उल्लेख किया गया gist भाषा D. में क्रमादेशित है एक निष्पादन योग्य फ़ाइल प्राप्त करने के लिए, कोई संकुल gdc(GNU D संकलक) स्थापित कर सकता है और libx11-devफिर चला सकता है gdc -o xorg-show-grabs xorg-show-grabs.d -lX11
स्टीफन गौरीचोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.