কমান্ড লাইনে এক্স কী এবং পয়েন্টারটি নিয়ন্ত্রণ করে


20

এক্স সার্ভার গ্রাবগুলি তালিকাভুক্ত ও পরিচালনা করতে কোন কমান্ড লাইন সরঞ্জাম উপস্থিত রয়েছে? (এটি কী এবং পয়েন্টার গ্র্যাবগুলির মতো গ্র্যাব, যেমন একটি নির্দিষ্ট অ্যাপ্লিকেশনে একটি নির্দিষ্ট কী বা মাউস বোতামের ব্যবহারকে সীমাবদ্ধ করে দেওয়া বা মাউস পয়েন্টারটিকে একটি নির্দিষ্ট পর্দার ক্ষেত্রের থেকে আবদ্ধ করার জন্য সঙ্কুচিত করা) আমি একটি অনুমানমূলক xgrabইউটিলিটি খুঁজছি যা মত জিনিস প্রদর্শন করুন

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

যার অর্থ সেখানে একটি কল করা হয়েছে XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)এবং তাই দিয়ে XGrabButton, XGrabPointer, XGrabKeyboard, XGrabServer(যদি সম্ভব হয়)। ডিসপ্লে ফর্ম্যাটটি কোনও ব্যাপার নয়, আমি কী চাই তা কীভাবে দখল করছে তা দেখার কিছু উপায় এবং সম্ভবত এই গ্রাবগুলি প্রত্যাহারের কিছু উপায় (যদি এটি সম্ভব হয় তবে আমি নিশ্চিত না যে এক্স 11 এপিআই অনুমতি দেয় কিনা)।

উত্তর:


21

এক্স এর সাম্প্রতিক সংস্করণগুলি (X.org সার্ভার -১.১১) এই প্রতিশ্রুতিতে প্রবর্তিত বেশ কয়েকটি ডিবাগিং কীগুলি সমর্থন করে । যখন ট্রিগার করা হয় তখন এগুলি গ্রাব সম্পর্কিত ক্রিয়া সম্পাদন করে।

ডিফল্টরূপে ( কমপক্ষে সাম্প্রতিক সংস্করণগুলিতে ), এগুলি অক্ষম করা আছে (ডিফল্ট কীম্যাপ থেকে অনুপস্থিত)।

তবে, আপনি যদি xdotoolইনস্টল করে থাকেন তবে কমান্ড-লাইনে কার্যকর করে তাদের কল করা সম্ভব:

xdotool key NameOfKey

NameOfKeyআপনি কীসিমটি সক্রিয় করতে চান তা কোথায় । উদাহরণস্বরূপ, এক্স সার্ভার লগটিতে সক্রিয় গ্রাবগুলির একটি তালিকা মুদ্রণ করতে, ব্যবহার করুন xdotool key XF86LogGrabInfo

প্রাসঙ্গিক কীওয়ার্ডগুলি হ'ল:

নোট করুন যে XF86LogGrabInfoকেবল সক্রিয় গ্রাবগুলি তালিকাভুক্ত করে, প্যাসিভ গ্রাবগুলি নয় যেমন কোনও কীতে ধরার জন্য যা বর্তমানে চাপছে না। যদি আপনি কোনও প্যাসিভ দখল সম্পর্কে তথ্য পেতে চান তবে আপনার দখলটি সক্রিয় করতে হবে: xdotool key XF86LogGrabInfoআপনি আগ্রহী এমন কী জলের বা মাউস বোতামের সংমিশ্রণটি টিপানোর সময় চালান । এর মতো কিছু করুন:

  1. চালান sleep 1; xdotool key XF86LogGrabInfo
  2. 1 সেকেন্ডের মধ্যে, কী জর্ড বা মাউস বোতামের সংমিশ্রণটি টিপুন।
  3. 1 সেকেন্ডের পরে, কী / বোতামটি ছেড়ে দিন।
  4. এক্স সার্ভার লগটিতে "সচল দখল ..." তথ্য পরীক্ষা করুন (প্রায়শই /var/log/Xorg.0.log)।

2
এক্সআরগ ১.১২.৪ দিয়ে ডেবিয়ান হুইজি-তে এখন পরীক্ষা করা, xdotool key XF86LogGrabInfoএক্স লগের মধ্যে কেবল দুটি এন্ট্রি ট্রিগার করে: "বর্তমানে সক্রিয় সমস্ত ডিভাইস ছাপানো:" তত্ক্ষণাত্ "সক্রিয় ডিভাইস গ্রাবগুলির শেষ তালিকা" এর পরে। তবুও আমার উইন্ডো ম্যানেজার কী একগুচ্ছ কী দখল করে। আপনি কী ধরেছেন কীগুলি এই কাজটি দেখেছেন?
গিলস 'তাই মন্দ হওয়া বন্ধ করুন'

4
@ গিলস - না, আপনি যদি এটির মতো চালান তবে আপনি কোনও আউটপুট পাবেন না ... এটির সাথে চালানোর চেষ্টা করুন sleep 2; xdotool key "XF86LogGrabInfo"এবং তত্ক্ষণাত একটি কী (যেমন "উইন" কী) টি খুব দ্রুত চাপতে শুরু করুন, তারপরে আপনি কিছু আউটপুট দেখতে পাবেন Xorg.log। বা একই সাথে xdotool+ টিপতে টিপুন XF86LogGrabInfo, যেমন এখানে ব্যবহার করুন
don_crissti

@ ডন_ক্রিসটি আহ, আমি দেখতে পাচ্ছি XF86LogGrabInfoযে কেবলমাত্র একটি চাপ দেওয়া কী সম্পর্কিত তথ্যই কেবল মুদ্রণ করে? যা এর উপযোগিতা সীমাবদ্ধ করে। আমি সমস্ত গ্র্যাবগুলি তালিকাভুক্ত করতে চাই - সমস্ত প্যাসিভ গ্র্যাবস, যদি আমি পরিভাষাটি সঠিকভাবে বুঝতে পারি।
গিলস 10'13

সম্ভবত এটি ভার্চুয়াল কীবোর্ড ব্যতীত কী সংমিশ্রণগুলির স্ক্রিপ্টেড বিস্তৃত অনুসন্ধানের সাথে একত্রিত করার কিছু চতুর উপায় রয়েছে। অবশ্যই আমার জ্ঞানের বাইরে।
আদম কাটজ

ধন্যবাদ! এটি আমাকে এটি আবিষ্কার করতে সহায়তা করেছিল যা xfsettingsdআমার Win+ Lশর্টকাটটি চুরি করছে ।
মাইকেল 13'15

8

আমি উপস্থিত থাকতে পারে এমন একক কী বা বোতামের প্যাসিভ গ্রেবস 1 এর জন্য কিছুই জানি না তবে পুরো কীবোর্ড বা মাউস ডিভাইসের সক্রিয় গ্রাবগুলি তালিকাভুক্ত করার কয়েকটি উপায় রয়েছে।

  1. সমস্ত প্ল্যাটফর্মে, তবে কেবল এক্সর্গ ১.১১ এবং তারপরে (বা প্যাচ প্রয়োগ করা পুরানো সংস্করণ) দিয়ে এই প্যাচ নোটগুলিতে বর্ণিত লগটিতে দখল করা ডেটা ডাম্প করতে হটকিগুলি ম্যাপ করুন ।
  2. সোলারিস ১১-তে (সোলারিস ১১ এক্সপ্রেস ২০১০.১১ বা প্রকৃত সোলারিস ১১ রিলিজ), এক্স সার্ভার থেকে গ্র্যাবিং ইনফরমেশন/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client বর্ণিত ডিবাগার স্ক্রিপ্টগুলি ব্যবহার করুন । সার্ভার গ্র্যাবগুলির জন্য এখানে একটি রয়েছে যা Xorg 1.11 হটকিগুলি বর্তমানে কভার করে না।

1 অ্যাক্টিভ বনাম প্যাসিভ গ্র্যাবসের সংজ্ঞা জন্য http://tronche.com/gui/x/xlib/input/pointer-grabbing.html দেখুন ।


4

এটি যান্ত্রিক শামুকের উত্তরের একটি সংযোজন -

জর্গ লগ এন্ট্রিগুলি বেশ অনির্বচনীয় হতে পারে। আমি একটি প্রোগ্রাম লিখেছিলাম যা তাদের পার্স করে এবং একটি মানব-ট্র্যাকটেবল আকারে উপস্থাপন করে:

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

xdotool key XF86LogGrabInfoযান্ত্রিক শামুকের উত্তরে বর্ণিত হিসাবে প্রথমে ব্যবহার করুন run তারপরে, উপরে লিঙ্ক করা প্রোগ্রামটি চালান। আপনি যদি জর্গ লগ ফাইলটি অবস্থিত না হন তবে /var/log/Xorg.0.logআপনি --xorg-logবিকল্পটি ব্যবহার করে এর অবস্থান নির্দিষ্ট করতে পারেন । দেখুন --helpবিস্তারিত জানার জন্য।


1
এখানে বর্ণিত বাক্যটি ভাষা D. তে প্রোগ্রাম করা হয়েছে একটি এক্সিকিউটেবল ফাইল পাওয়ার জন্য, কেউ প্যাকেজ ইনস্টল করতে পারে gdc(GNU D সংকলক) এবং libx11-devতারপরে চালানো যেতে পারে gdc -o xorg-show-grabs xorg-show-grabs.d -lX11
স্টাফেন গ্যারিচন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.