इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें ( .idc
फ़ाइलें) में डिवाइस-विशिष्ट कॉन्फ़िगरेशन गुण होते हैं जो इनपुट डिवाइस के व्यवहार को प्रभावित करते हैं।
इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें आमतौर पर HID कीबोर्ड और चूहों जैसे मानक बाह्य उपकरणों के लिए आवश्यक नहीं होती हैं क्योंकि डिफ़ॉल्ट सिस्टम व्यवहार आमतौर पर यह सुनिश्चित करता है कि वे बॉक्स से बाहर काम करेंगे। दूसरी ओर, अंतर्निहित एम्बेडेड डिवाइस, विशेष रूप से टच स्क्रीन, को अपने व्यवहार को निर्दिष्ट करने के लिए लगभग हमेशा इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों की आवश्यकता होती है।
दलील
एंड्रॉइड स्वचालित रूप से संबंधित लिनक्स कर्नेल इनपुट डिवाइस ड्राइवर द्वारा रिपोर्ट किए गए इवेंट प्रकारों और गुणों के आधार पर अधिकांश इनपुट डिवाइस क्षमताओं का पता लगाता है और कॉन्फ़िगर करता है।
उदाहरण के लिए, यदि कोई इनपुट डिवाइस EV_REL
इवेंट प्रकार और कोड REL_X
और REL_Y
के साथ-साथ EV_KEY
इवेंट प्रकार और BTN_MOUSE
का समर्थन करता है, तो एंड्रॉइड इनपुट डिवाइस को माउस के रूप में वर्गीकृत करेगा। माउस के लिए डिफ़ॉल्ट व्यवहार एक ऑन-स्क्रीन कर्सर प्रस्तुत करना है जो माउस की गतिविधियों को ट्रैक करता है और माउस को क्लिक करने पर स्पर्श का अनुकरण करता है। हालाँकि माउस को अलग तरीके से कॉन्फ़िगर किया जा सकता है, डिफ़ॉल्ट व्यवहार आमतौर पर मानक माउस बाह्य उपकरणों के लिए पर्याप्त होता है।
इनपुट उपकरणों के कुछ वर्ग अधिक अस्पष्ट हैं। उदाहरण के लिए, मल्टी-टच टच स्क्रीन और टच पैड दोनों EV_ABS
इवेंट प्रकार और कोड ABS_MT_POSITION_X
और ABS_MT_POSITION_Y
को न्यूनतम समर्थन देते हैं। हालाँकि, इन उपकरणों का इच्छित उपयोग काफी भिन्न है और हमेशा स्वचालित रूप से निर्धारित नहीं किया जा सकता है। इसके अलावा, स्पर्श उपकरणों द्वारा रिपोर्ट किए गए दबाव और आकार की जानकारी को समझने के लिए अतिरिक्त जानकारी की आवश्यकता होती है। इसलिए टच डिवाइस, विशेष रूप से अंतर्निर्मित टच स्क्रीन, को आमतौर पर आईडीसी फाइलों की आवश्यकता होती है।
जगह
इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें USB विक्रेता, उत्पाद (और वैकल्पिक रूप से संस्करण) आईडी या इनपुट डिवाइस नाम द्वारा स्थित होती हैं।
निम्नलिखित पथों को क्रम से परामर्श दिया गया है।
-
/odm/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/vendor/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/system/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/data/system/devices/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/odm/usr/idc/Vendor_XXXX_Product_XXXX.idc
-
/vendor/usr/idc/Vendor_XXXX_Product_XXXX.idc
-
/system/usr/idc/Vendor_XXXX_Product_XXXX.idc
-
/data/system/devices/idc/Vendor_XXXX_Product_XXXX.idc
-
/odm/usr/idc/ device-name .idc
-
/vendor/usr/idc/ device-name .idc
-
/system/usr/idc/ device-name .idc
-
/data/system/devices/idc/ device-name .idc
डिवाइस नाम वाले फ़ाइल पथ का निर्माण करते समय, डिवाइस नाम में '0'-'9', 'a'-'z', 'A'-'Z', '-' या '_' के अलावा सभी अक्षर '_' द्वारा प्रतिस्थापित किया जाता है।
वाक्य - विन्यास
एक इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल एक सादा पाठ फ़ाइल है जिसमें प्रॉपर्टी असाइनमेंट और टिप्पणियाँ शामिल होती हैं।
गुण
संपत्ति असाइनमेंट में प्रत्येक में एक संपत्ति का नाम, एक =
, एक संपत्ति मूल्य और एक नई लाइन शामिल होती है। इस कदर:
property = value
संपत्ति के नाम गैर-रिक्त शाब्दिक पाठ पहचानकर्ता हैं। उनमें रिक्त स्थान नहीं होना चाहिए. इनपुट सिस्टम का प्रत्येक घटक गुणों के एक सेट को परिभाषित करता है जिसका उपयोग इसके फ़ंक्शन को कॉन्फ़िगर करने के लिए किया जाता है।
संपत्ति मान गैर-रिक्त स्ट्रिंग अक्षर, पूर्णांक या फ़्लोटिंग पॉइंट संख्याएं हैं। उनमें रिक्त स्थान या आरक्षित वर्ण \
या "
नहीं होने चाहिए।
संपत्ति के नाम और मूल्य केस-संवेदी हैं।
टिप्पणियाँ
टिप्पणी पंक्तियाँ '#' से शुरू होती हैं और पंक्ति के अंत तक जारी रहती हैं। इस कदर:
# A comment!
ख़ाली रेखाओं को नज़रअंदाज कर दिया जाता है.
उदाहरण
# This is an example of an input device configuration file. # It might be used to describe the characteristics of a built-in touch screen. # This is an internal device, not an external peripheral attached to the USB # or Bluetooth bus. device.internal = 1 # The device should behave as a touch screen, which uses the same orientation # as the built-in display. touch.deviceType = touchScreen touch.orientationAware = 1 # Additional calibration properties... # etc...
सामान्य गुण
निम्नलिखित गुण सभी इनपुट डिवाइस वर्गों के लिए सामान्य है।
प्रत्येक वर्ग द्वारा उपयोग किए जाने वाले विशेष गुणों के बारे में जानकारी के लिए प्रत्येक इनपुट डिवाइस वर्ग के दस्तावेज़ देखें।
device.internal
परिभाषा: device.internal
= 0
| 1
निर्दिष्ट करता है कि क्या इनपुट डिवाइस बाहरी रूप से संलग्न (संभवतः हटाने योग्य) परिधीय के विपरीत एक आंतरिक अंतर्निर्मित घटक है।
यदि मान
0
है, तो डिवाइस बाहरी है।यदि मान
1
है, तो डिवाइस आंतरिक है।यदि मान निर्दिष्ट नहीं है, तो USB (BUS_USB) या ब्लूटूथ (BUS_BLUETOOTH) बस पर सभी उपकरणों के लिए डिफ़ॉल्ट मान
0
है, अन्यथा1
।
यह संपत्ति वेक इवेंट के संबंध में डिफ़ॉल्ट नीति निर्णय निर्धारित करती है।
आंतरिक इनपुट डिवाइस आम तौर पर डिस्प्ले को स्लीप से नहीं जगाते हैं जब तक कि कुंजी लेआउट फ़ाइल या हार्डकोडेड नीति नियम में ऐसा करने के लिए स्पष्ट रूप से कॉन्फ़िगर नहीं किया जाता है। यह अंतर कुंजी दबाने और छूने से आपके फ़ोन को आपकी जेब में होने पर नकली रूप से जगाने से रोकता है। आम तौर पर केवल कुछ ही वेक कुंजियाँ परिभाषित होती हैं।
इसके विपरीत, बाहरी इनपुट डिवाइस आमतौर पर डिवाइस को अधिक आक्रामक तरीके से जगाते हैं क्योंकि माना जाता है कि परिवहन के दौरान उन्हें बंद कर दिया गया है या प्लग इन नहीं किया गया है। उदाहरण के लिए, बाहरी कीबोर्ड पर किसी भी कुंजी को दबाना एक अच्छा संकेतक है कि उपयोगकर्ता चाहता है कि डिवाइस सक्रिय हो और प्रतिक्रिया दे।
यह सुनिश्चित करना महत्वपूर्ण है कि सभी आंतरिक इनपुट डिवाइसों के लिए device.internal
संपत्ति का मान सही ढंग से सेट किया गया है।
मान्यकरण
वैलिडेट कीमैप्स टूल का उपयोग करके अपनी इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों को सत्यापित करना सुनिश्चित करें।
, इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें ( .idc
फ़ाइलें) में डिवाइस-विशिष्ट कॉन्फ़िगरेशन गुण होते हैं जो इनपुट डिवाइस के व्यवहार को प्रभावित करते हैं।
इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें आमतौर पर HID कीबोर्ड और चूहों जैसे मानक बाह्य उपकरणों के लिए आवश्यक नहीं होती हैं क्योंकि डिफ़ॉल्ट सिस्टम व्यवहार आमतौर पर यह सुनिश्चित करता है कि वे बॉक्स से बाहर काम करेंगे। दूसरी ओर, अंतर्निहित एम्बेडेड डिवाइस, विशेष रूप से टच स्क्रीन, को अपने व्यवहार को निर्दिष्ट करने के लिए लगभग हमेशा इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों की आवश्यकता होती है।
दलील
एंड्रॉइड स्वचालित रूप से संबंधित लिनक्स कर्नेल इनपुट डिवाइस ड्राइवर द्वारा रिपोर्ट किए गए इवेंट प्रकारों और गुणों के आधार पर अधिकांश इनपुट डिवाइस क्षमताओं का पता लगाता है और कॉन्फ़िगर करता है।
उदाहरण के लिए, यदि कोई इनपुट डिवाइस EV_REL
इवेंट प्रकार और कोड REL_X
और REL_Y
के साथ-साथ EV_KEY
इवेंट प्रकार और BTN_MOUSE
का समर्थन करता है, तो एंड्रॉइड इनपुट डिवाइस को माउस के रूप में वर्गीकृत करेगा। माउस के लिए डिफ़ॉल्ट व्यवहार एक ऑन-स्क्रीन कर्सर प्रस्तुत करना है जो माउस की गतिविधियों को ट्रैक करता है और माउस को क्लिक करने पर स्पर्श का अनुकरण करता है। हालाँकि माउस को अलग तरीके से कॉन्फ़िगर किया जा सकता है, डिफ़ॉल्ट व्यवहार आमतौर पर मानक माउस बाह्य उपकरणों के लिए पर्याप्त होता है।
इनपुट उपकरणों के कुछ वर्ग अधिक अस्पष्ट हैं। उदाहरण के लिए, मल्टी-टच टच स्क्रीन और टच पैड दोनों EV_ABS
इवेंट प्रकार और कोड ABS_MT_POSITION_X
और ABS_MT_POSITION_Y
को न्यूनतम समर्थन देते हैं। हालाँकि, इन उपकरणों का इच्छित उपयोग काफी भिन्न है और हमेशा स्वचालित रूप से निर्धारित नहीं किया जा सकता है। इसके अलावा, स्पर्श उपकरणों द्वारा रिपोर्ट किए गए दबाव और आकार की जानकारी को समझने के लिए अतिरिक्त जानकारी की आवश्यकता होती है। इसलिए टच डिवाइस, विशेष रूप से अंतर्निर्मित टच स्क्रीन, को आमतौर पर आईडीसी फाइलों की आवश्यकता होती है।
जगह
इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें USB विक्रेता, उत्पाद (और वैकल्पिक रूप से संस्करण) आईडी या इनपुट डिवाइस नाम द्वारा स्थित होती हैं।
निम्नलिखित पथों को क्रम से परामर्श दिया गया है।
-
/odm/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/vendor/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/system/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/data/system/devices/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
-
/odm/usr/idc/Vendor_XXXX_Product_XXXX.idc
-
/vendor/usr/idc/Vendor_XXXX_Product_XXXX.idc
-
/system/usr/idc/Vendor_XXXX_Product_XXXX.idc
-
/data/system/devices/idc/Vendor_XXXX_Product_XXXX.idc
-
/odm/usr/idc/ device-name .idc
-
/vendor/usr/idc/ device-name .idc
-
/system/usr/idc/ device-name .idc
-
/data/system/devices/idc/ device-name .idc
डिवाइस नाम वाले फ़ाइल पथ का निर्माण करते समय, डिवाइस नाम में '0'-'9', 'a'-'z', 'A'-'Z', '-' या '_' के अलावा सभी अक्षर '_' द्वारा प्रतिस्थापित किया जाता है।
वाक्य - विन्यास
एक इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल एक सादा पाठ फ़ाइल है जिसमें प्रॉपर्टी असाइनमेंट और टिप्पणियाँ शामिल होती हैं।
गुण
संपत्ति असाइनमेंट में प्रत्येक में एक संपत्ति का नाम, एक =
, एक संपत्ति मूल्य और एक नई लाइन शामिल होती है। इस कदर:
property = value
संपत्ति के नाम गैर-रिक्त शाब्दिक पाठ पहचानकर्ता हैं। उनमें रिक्त स्थान नहीं होना चाहिए. इनपुट सिस्टम का प्रत्येक घटक गुणों के एक सेट को परिभाषित करता है जिसका उपयोग इसके फ़ंक्शन को कॉन्फ़िगर करने के लिए किया जाता है।
संपत्ति मान गैर-रिक्त स्ट्रिंग अक्षर, पूर्णांक या फ़्लोटिंग पॉइंट संख्याएं हैं। उनमें रिक्त स्थान या आरक्षित वर्ण \
या "
नहीं होने चाहिए।
संपत्ति के नाम और मूल्य केस-संवेदी हैं।
टिप्पणियाँ
टिप्पणी पंक्तियाँ '#' से शुरू होती हैं और पंक्ति के अंत तक जारी रहती हैं। इस कदर:
# A comment!
ख़ाली रेखाओं को नज़रअंदाज कर दिया जाता है.
उदाहरण
# This is an example of an input device configuration file. # It might be used to describe the characteristics of a built-in touch screen. # This is an internal device, not an external peripheral attached to the USB # or Bluetooth bus. device.internal = 1 # The device should behave as a touch screen, which uses the same orientation # as the built-in display. touch.deviceType = touchScreen touch.orientationAware = 1 # Additional calibration properties... # etc...
सामान्य गुण
निम्नलिखित गुण सभी इनपुट डिवाइस वर्गों के लिए सामान्य है।
प्रत्येक वर्ग द्वारा उपयोग किए जाने वाले विशेष गुणों के बारे में जानकारी के लिए प्रत्येक इनपुट डिवाइस वर्ग के दस्तावेज़ देखें।
device.internal
परिभाषा: device.internal
= 0
| 1
निर्दिष्ट करता है कि क्या इनपुट डिवाइस बाहरी रूप से संलग्न (संभवतः हटाने योग्य) परिधीय के विपरीत एक आंतरिक अंतर्निर्मित घटक है।
यदि मान
0
है, तो डिवाइस बाहरी है।यदि मान
1
है, तो डिवाइस आंतरिक है।यदि मान निर्दिष्ट नहीं है, तो USB (BUS_USB) या ब्लूटूथ (BUS_BLUETOOTH) बस पर सभी उपकरणों के लिए डिफ़ॉल्ट मान
0
है, अन्यथा1
।
यह संपत्ति वेक इवेंट के संबंध में डिफ़ॉल्ट नीति निर्णय निर्धारित करती है।
आंतरिक इनपुट डिवाइस आम तौर पर डिस्प्ले को स्लीप से नहीं जगाते हैं जब तक कि कुंजी लेआउट फ़ाइल या हार्डकोडेड नीति नियम में ऐसा करने के लिए स्पष्ट रूप से कॉन्फ़िगर नहीं किया जाता है। यह अंतर कुंजी दबाने और छूने से आपके फ़ोन को आपकी जेब में होने पर नकली रूप से जगाने से रोकता है। आम तौर पर केवल कुछ ही वेक कुंजियाँ परिभाषित होती हैं।
इसके विपरीत, बाहरी इनपुट डिवाइस आमतौर पर डिवाइस को अधिक आक्रामक तरीके से जगाते हैं क्योंकि माना जाता है कि परिवहन के दौरान उन्हें बंद कर दिया गया है या प्लग इन नहीं किया गया है। उदाहरण के लिए, बाहरी कीबोर्ड पर किसी भी कुंजी को दबाना एक अच्छा संकेतक है कि उपयोगकर्ता चाहता है कि डिवाइस सक्रिय हो और प्रतिक्रिया दे।
यह सुनिश्चित करना महत्वपूर्ण है कि सभी आंतरिक इनपुट डिवाइसों के लिए device.internal
संपत्ति का मान सही ढंग से सेट किया गया है।
मान्यकरण
वैलिडेट कीमैप्स टूल का उपयोग करके अपनी इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों को सत्यापित करना सुनिश्चित करें।