इनपुट डिवाइस की कॉन्फ़िगरेशन फ़ाइलें

इनपुट डिवाइस की कॉन्फ़िगरेशन फ़ाइलों (.idc फ़ाइलों) में, डिवाइस के हिसाब से कॉन्फ़िगरेशन प्रॉपर्टी होती हैं. इनका असर इनपुट डिवाइसों के काम करने के तरीके पर पड़ता है.

आम तौर पर, एचआईडी कीबोर्ड और माउस जैसे स्टैंडर्ड डिवाइसों के लिए, इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों की ज़रूरत नहीं होती. ऐसा इसलिए, क्योंकि डिफ़ॉल्ट सिस्टम व्यवहार से आम तौर पर यह पक्का होता है कि वे बिना किसी सेटिंग के काम करेंगे. दूसरी ओर, डिवाइस में पहले से मौजूद एम्बेड किए गए डिवाइसों, खास तौर पर टच स्क्रीन के लिए, इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों की ज़रूरत होती है, ताकि उनके काम करने का तरीका बताया जा सके.

वजह

Android, इनपुट डिवाइस की ज़्यादातर सुविधाओं का पता अपने-आप लगाता है और उन्हें कॉन्फ़िगर करता है. ऐसा, इवेंट टाइप और प्रॉपर्टी के आधार पर किया जाता है. इन प्रॉपर्टी की जानकारी, इनपुट डिवाइस के लिनक्स कर्नेल ड्राइवर से मिलती है.

उदाहरण के लिए, अगर कोई इनपुट डिवाइस EV_REL इवेंट टाइप और कोड REL_X और REL_Y के साथ-साथ EV_KEY इवेंट टाइप और BTN_MOUSE के साथ काम करता है, तो Android उस इनपुट डिवाइस को माउस के तौर पर लेबल करेगा. माउस के लिए डिफ़ॉल्ट तौर पर, स्क्रीन पर एक कर्सर दिखता है. यह कर्सर, माउस की गतिविधियों को ट्रैक करता है और माउस पर क्लिक करने पर, टच की नकल करता है. माउस को अलग तरीके से कॉन्फ़िगर किया जा सकता है. हालांकि, आम तौर पर स्टैंडर्ड माउस के लिए, डिफ़ॉल्ट तरीके से काम करना ही काफ़ी होता है.

इनपुट डिवाइसों की कुछ क्लास के बारे में ज़्यादा जानकारी नहीं होती. उदाहरण के लिए, मल्टी-टच स्क्रीन और टच पैड, दोनों में कम से कम EV_ABS इवेंट टाइप और कोड ABS_MT_POSITION_X और ABS_MT_POSITION_Y काम करते हैं. हालांकि, इन डिवाइसों के इस्तेमाल के मकसद अलग-अलग होते हैं और इनका पता हमेशा अपने-आप नहीं लगाया जा सकता. साथ ही, टच डिवाइसों से मिलने वाले दबाव और साइज़ की जानकारी को समझने के लिए, ज़्यादा जानकारी की ज़रूरत होती है. इसलिए, टच डिवाइसों, खास तौर पर डिवाइस में पहले से मौजूद टच स्क्रीन के लिए, आम तौर पर आईडीसी फ़ाइलों की ज़रूरत होती है.

जगह की जानकारी

इनपुट डिवाइस की कॉन्फ़िगरेशन फ़ाइलें, यूएसबी वेंडर, प्रॉडक्ट (और वैकल्पिक तौर पर वर्शन) आईडी या इनपुट डिवाइस के नाम से मिलती हैं.

नीचे दिए गए पाथ को क्रम से देखा जाता है.

  • /product/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
  • /system_ext/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
  • /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
  • /product/usr/idc/Vendor_XXXX_Product_XXXX.idc
  • /system_ext/usr/idc/Vendor_XXXX_Product_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
  • /product/usr/idc/device-name.idc
  • /system_ext/usr/idc/device-name.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 है, तो डिवाइस इंटरनल है.

  • अगर कोई वैल्यू नहीं दी गई है, तो यूएसबी (BUS_USB) या ब्लूटूथ (BUS_BLUETOOTH) बस पर मौजूद सभी डिवाइसों के लिए डिफ़ॉल्ट वैल्यू 0 होगी. इसके अलावा, सभी डिवाइसों के लिए डिफ़ॉल्ट वैल्यू 1 होगी.

इस प्रॉपर्टी से, डिवाइस के चालू होने की वजह से होने वाले इवेंट के लिए, नीति से जुड़े डिफ़ॉल्ट फ़ैसले तय होते हैं.

आम तौर पर, डिसप्ले को स्लीप मोड से तब तक नहीं जगाया जाता, जब तक कि कुंजी लेआउट फ़ाइल या हार्डकोड की गई नीति के नियम में ऐसा करने के लिए साफ़ तौर पर कॉन्फ़िगर न किया गया हो. इस अंतर की वजह से, जब फ़ोन आपकी जेब में होता है, तो बटन दबाने और स्क्रीन छूने पर भी वह अनलॉक नहीं होता. आम तौर पर, डिवाइस को चालू करने के लिए सिर्फ़ कुछ ही बटन तय किए जाते हैं.

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

यह पक्का करना ज़रूरी है कि सभी इंटरनल इनपुट डिवाइसों के लिए, device.internal प्रॉपर्टी की वैल्यू सही तरीके से सेट की गई हो.

पुष्टि करें

कीमैप की पुष्टि करें टूल का इस्तेमाल करके, इनपुट डिवाइस की कॉन्फ़िगरेशन फ़ाइलों की पुष्टि करना न भूलें.