2015-06-21 9 views
5

मुझे लिनक्स के लिए एक प्रोग्राम लिखने में दिलचस्पी है जो सभी कीस्ट्रोक पढ़ेगा, इसे संसाधित करेगा और फिर शेष चल रही प्रक्रियाओं को आउटपुट करेगा। अनिवार्य रूप से, सभी कीबोर्ड इनपुट इस कार्यक्रम और अकेले इस कार्यक्रम में जाना चाहिए ... फिर प्रोग्राम शेष कंप्यूटर के लिए कीबोर्ड के रूप में कार्य करेगा। मैं मूल रूप से एंड्रॉइड उपकरणों पर पूर्वानुमानित पाठ की तरह कुछ करना चाहता हूं, इसलिए मेरा प्रोग्राम फ़िल्टर के रूप में कार्य करेगा।लिनक्स में निम्नतम स्तर पर कीबोर्ड इनपुट को कैसे रोकें?

मैं जो पूछ रहा हूं वह मूल रूप से मेरे प्रोग्राम में सभी कीबोर्ड ईवेंट को निर्देशित करने का तरीका है। जबकि मैं कोड की तलाश नहीं कर रहा हूं, मैं जानना चाहता हूं कि इस कार्य को पूरा करने में सक्षम होने के लिए मुझे लिनक्स प्रोग्रामिंग/लिनक्स सिस्टम का कौन सा हिस्सा सीखना है? यह, क्योंकि मैं लिनक्स सीखने के प्रयास में ऐसा कर रहा हूं।

+4

1. लिनक्स कर्नेल स्रोत कोड प्राप्त करें। 2. कीबोर्ड ड्राइवर को जो भी आप चाहते हैं उसे संशोधित करें। – Steve

+0

इसका मतलब यह होगा कि मैं लिनक्स कर्नेल को संशोधित करूंगा और फिर उसे पुनर्स्थापित करना होगा? ठीक है, कोई समस्या नहीं है ... लेकिन क्या उपयोगकर्ता स्थान में ऐसा करने का कोई तरीका है, इसलिए प्रोग्राम उपयोगकर्ताओं के साथ साझा किया जा सकता है और आसानी से इंस्टॉल किया जा सकता है? – FutureSci

+1

'निम्नतम स्तर'! = 'उपयोगकर्ता स्थान '। ... पैक किए गए कर्नेल स्थापित करना मुश्किल नहीं है। – deviantfan

उत्तर

1

आप के बाद से इस हर कीबोर्ड निर्माता के लिए एक समाधान है करने की आवश्यकता होगी कीबोर्ड ड्राइवरों को संशोधित नहीं करना चाहिए। (और काफी इन का एक बहुत .. देखते हैं)

इसके बजाय आप एक कर्नेल समारोह है कि पैच चाहिए इनपुट को पास करने से पहले सभी ड्राइवरों द्वारा स्टैक को आगे बढ़ाया जाता है।

के साथ, आप input_event जो आम तौर पर सभी इनपुट ड्राइवरों see documentation here से पुकारा जाता है पैच सकता है शुरू करने के लिए (न केवल कुंजीपटल लेकिन यह भी माउस और अन्य उपकरणों)

किसी भी मामले में आप के लिए "डिकोड" इनपुट स्कैन कोड होगा में जहां आपको this दस्तावेज़ीकरण उपयोगी हो सकता है।

कर्नेल पैचिंग पर अधिक जानकारी के लिए here और here पढ़ें।

संबंधित मुद्दे