কীভাবে শেল স্ক্রিপ্টের মাধ্যমে কীস্ট্রোক ইনজেক্ট করবেন?


27

আমি ইনপুট ডেমনে কীস্ট্রোকগুলি ইনজেকশনের চেষ্টা করছি যাতে কোনও বাশ স্ক্রিপ্ট থেকে টাইপিং অনুকরণ করতে পারে। এটি কি সম্ভব এবং যদি তা হয় তবে আমি কীভাবে এটি ঘটতে পারি?


আপনি কি কার্নেল স্তরে ইনপুট অনুকরণ করতে চান (যদি তাই হয় তবে কোন ওএসে), এক্স স্তরে, টার্মিনালে?
গিলস 'অশুভ হওয়া বন্ধ করুন'

কার্নেল স্তরে, আমি এটির মূলত উপস্থিত হওয়া চাই যেন আমি কোনও আসল কী-বোর্ডে একটি আসল কী চাপলাম।
নাফটুলি কে

@ টি কে কোচরান: তো, এআইএক্স এর অধীনে? FreeBSD 'র? লিনাক্স? ওএসএক্স? … উত্তর প্রতিটি বৈকল্পিকের সম্পূর্ণ আলাদা হতে পারে।
গিলস'স 23-

1
তোমার কী দরকার?
স্টার ব্লু

2
সম্ভবত আমি এমন একটি স্ক্রিপ্ট লিখতে চাই যা এলোমেলোভাবে বিরতিতে কী-চাপগুলি serোকায়।
নাফটুলি কে

উত্তর:


23

আপনি যদি X স্তরে অপারেশন করছেন (গিলসের প্রশ্নে) তবে এক্সডটুলটি এর মতো ব্যবহার করুন :

xdotool key KEYSTROKE_SPECIFIER

যেখানে KEYSTROKE_SPECIFIER "a" বা "F2" বা "নিয়ন্ত্রণ + j" এর মতো কিছু হতে পারে

সম্পাদনা: গিলসের প্রশ্নের জবাব আমি মিস করেছি, দুঃখিত। এক্স-কেসের সমাধান হিসাবে আমি এই প্রতিক্রিয়াটি এখানে রেখে দেব।


3
আমি মনে করি xteএকই স্তরে কাজ করে।
ক্যাসাবেল

24

uinputড্রাইভার ব্যবহার করুন । আমি মনে করি না যে এর জন্য কোনও উপযোগ আছে; আপনাকে কিছুটা সি কোড লিখতে বা মানিয়ে নিতে হবে। সংক্ষেপে:

#include <fcntl.h>
#include <ioctl.h>
#include <unistd.h>
#include <linux/input.h>
#include <linux/uinput.h>
/* Set up a fake keyboard device */
fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK); // or /dev/input/uinput
ioctl(fd, UI_SET_EVBIT, EV_KEY);
struct uinput_user_dev uidev = …;
write(fd, &uidev, sizeof(uidev));
ioctl(fd, UI_DEV_CREATE);
/* Send an event */
struct input_event ev = …;
write(fd, &ev, sizeof(ev));
/* Clean up */
ioctl(fd, UI_DEV_DESTROY);
close(fd);

আরও সম্পূর্ণ রেফারেন্স:


Einfochips.com এর লিঙ্কটি ভেঙে গেছে। আমি এটি সংরক্ষণাগার ..org থেকে একটি স্ন্যাপশট দিয়ে প্রতিস্থাপন করেছি।
ফোনেহেহে

আপনি কি মনে করেন এটি এই প্রশ্নটি সমাধান করতে সহায়তা করতে পারে? unix.stackexchange.com/questions/156985/… , আমি ভেবেছিলাম, আমি যখন একটি কী টিপব তখন এই প্রোগ্রামটি আরও একটি কী প্রেরণ করবে যা সমস্যাযুক্ত অ্যাপ্লিকেশনটি আসলে চিনতে পারে (এমনকি একই সময়ে থাকলেও)?
অ্যাকোরিয়াস পাওয়ার

মাউস তৈরি এবং ঘুরিয়ে নেওয়ার জন্য থিমঞ্জের নমুনা কোড কাজ করে, কীভাবে কী স্ট্রোকগুলি তৈরি করা যায় তা অনুমান করতে পারে না যদিও এটি অনুমিতভাবে শেখানো হয়।
সিস্টেরিয়ান

@ সিসটরিয়ান এটি স্ট্যাক ওভারফ্লোয়ের জন্য একটি প্রশ্নের মতো মনে হচ্ছে । আপনার কোডটি পোস্ট করুন, আপনি কী প্রত্যাশা করেছিলেন এবং পরিবর্তে আপনি কী দেখছেন তা ব্যাখ্যা করুন এবং কোনও প্রাসঙ্গিক ত্রুটি বার্তা, লগ এন্ট্রি ইত্যাদি সরবরাহ করুন
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস ভালই আমি পছন্দ করতে চাই, তবে এটি বলে যে আমি আমার প্রশ্নের সীমাতে পৌঁছেছি ... 2 টি প্রশ্নে অনেকগুলি ডাউনভোট পাওয়ার জন্য আমি কিছুক্ষণ আগে জিজ্ঞাসা করেছি; এবং সম্ভবত মুছে ফেলা অনেক পুরানো প্রশ্নের উপর আরো কিছু। হেল, আমি জানি না কেন আমি এখানে অনেকগুলি নিম্নবিতর পেয়েছি স্ট্যাকওভারফ্লো.com/ প্রশ্নস / ২০61০৯০২০ / / (যদিও বেশ ভাল উত্তর পেয়েছে), কারণ আমি যে ত্রুটিটি পাচ্ছিলাম তা পোস্ট না করায় কি হয়েছিল? যাইহোক, বিষয় বন্ধ। মূলত আমি চাই কিন্তু পারব না :(
সিস্টেরিয়ান

9

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


7

আমি কিছু পাইথন কোড লিখেছি যা এটি করে। আপনি আমার ওপেন সোর্স প্রকল্পে এটি সন্ধান করতে পারেন।

http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py

আপনি যদি সেই মডিউলটিকে স্ক্রিপ্ট হিসাবে রুট হিসাবে চালান তবে আপনি কার্যত একটি ডেমো দেখতে পাবেন।

এই প্রাথমিক কার্যকারিতাটি অন্য একটি প্রকল্পের জন্য বাড়ানো হয়েছিল, পাওয়ারড্রয়েড যা এম্বেডড সিস্টেম (অ্যান্ড্রয়েড) এর জন্য আরও কংক্রিট বাস্তবায়ন সরবরাহ করে।

http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.