टच डिवाइस

एंड्रॉइड विभिन्न प्रकार की टच स्क्रीन और टच पैड का समर्थन करता है, जिसमें स्टाइलस-आधारित डिजिटाइज़र टैबलेट भी शामिल है।

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

टच पैड स्पर्श उपकरण हैं जो डिस्प्ले से संबद्ध नहीं होते हैं, जैसे डिजिटाइज़र टैबलेट। टच पैड का उपयोग आम तौर पर उपयोगकर्ता इंटरफ़ेस को इंगित करने या पूर्ण अप्रत्यक्ष स्थिति या इशारा-आधारित नियंत्रण के लिए किया जाता है।

स्पर्श उपकरणों में ऐसे बटन हो सकते हैं जिनका कार्य माउस बटन के समान होता है।

स्पर्श उपकरणों को कभी-कभी अंतर्निहित स्पर्श सेंसर तकनीक के आधार पर उंगलियों या स्टाइलस जैसे विभिन्न उपकरणों का उपयोग करके हेरफेर किया जा सकता है।

वर्चुअल कुंजियाँ लागू करने के लिए कभी-कभी टच डिवाइस का उपयोग किया जाता है। उदाहरण के लिए, कुछ एंड्रॉइड डिवाइसों पर, टच स्क्रीन सेंसर क्षेत्र डिस्प्ले के किनारे से आगे तक फैला होता है और टच सेंसिटिव की पैड के हिस्से के रूप में दोहरे उद्देश्य को पूरा करता है।

टच डिवाइसों की विशाल विविधता के कारण, एंड्रॉइड प्रत्येक डिवाइस की विशेषताओं और वांछित व्यवहार का वर्णन करने के लिए बड़ी संख्या में कॉन्फ़िगरेशन गुणों पर निर्भर करता है।

स्पर्श उपकरण वर्गीकरण

एक इनपुट डिवाइस को मल्टी-टच डिवाइस के रूप में वर्गीकृत किया जाता है यदि निम्नलिखित दोनों स्थितियाँ सही हों:

  • इनपुट डिवाइस ABS_MT_POSITION_X और ABS_MT_POSITION_Y निरपेक्ष अक्षों की उपस्थिति की रिपोर्ट करता है।
  • इनपुट डिवाइस में कोई गेमपैड बटन नहीं है। यह स्थिति कुछ गेमपैड के साथ अस्पष्टता को हल करती है जो एमटी अक्षों को ओवरलैप करने वाले कोड के साथ अक्षों की रिपोर्ट करते हैं।

एक इनपुट डिवाइस को सिंगल-टच डिवाइस के रूप में वर्गीकृत किया जाता है यदि निम्नलिखित दोनों स्थितियाँ सही हों:

  • इनपुट डिवाइस को मल्टी-टच डिवाइस के रूप में वर्गीकृत नहीं किया गया है। एक इनपुट डिवाइस को या तो सिंगल-टच डिवाइस या मल्टी-टच डिवाइस के रूप में वर्गीकृत किया जाता है, दोनों में कभी नहीं।
  • इनपुट डिवाइस ABS_X और ABS_Y पूर्ण अक्षों की उपस्थिति और BTN_TOUCH कुंजी कोड की उपस्थिति की रिपोर्ट करता है।

जब किसी इनपुट डिवाइस को टच डिवाइस के रूप में वर्गीकृत किया जाता है, तो डिवाइस के लिए वर्चुअल कुंजी मैप फ़ाइल को लोड करने का प्रयास करके वर्चुअल कुंजियों की उपस्थिति निर्धारित की जाती है। यदि वर्चुअल कुंजी मानचित्र उपलब्ध है, तो डिवाइस के लिए कुंजी लेआउट फ़ाइल भी लोड की जाती है। इन फ़ाइलों के स्थान और प्रारूप के बारे में जानकारी के लिए [वर्चुअल कुंजी मानचित्र फ़ाइलें] (# वर्चुअल-कुंजी-मैप-फ़ाइलें) देखें।

इसके बाद, सिस्टम टच डिवाइस के लिए इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल लोड करता है।

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

इनपुट डिवाइस कॉन्फ़िगरेशन लोड होने के बाद, सिस्टम इनपुट डिवाइस को टच स्क्रीन , टच पैड या पॉइंटर डिवाइस के रूप में वर्गीकृत करता है।

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

इनपुट डिवाइस को टच स्क्रीन, टच पैड या पॉइंटर डिवाइस के रूप में वर्गीकृत करने के लिए निम्नलिखित नियमों का उपयोग किया जाता है।

  • यदि touch.deviceType प्रॉपर्टी सेट है, तो डिवाइस प्रकार संकेत के अनुसार सेट किया गया है।
  • यदि इनपुट डिवाइस INPUT_PROP_DIRECT इनपुट प्रॉपर्टी ( EVIOCGPROP ioctl के माध्यम से) की उपस्थिति की रिपोर्ट करता है, तो डिवाइस प्रकार टच स्क्रीन पर सेट होता है। यह स्थिति मानती है कि प्रत्यक्ष इनपुट टच डिवाइस एक डिस्प्ले से जुड़े होते हैं जो जुड़ा हुआ है।
  • यदि इनपुट डिवाइस INPUT_PROP_POINTER इनपुट प्रॉपर्टी ( EVIOCGPROP ioctl के माध्यम से) की उपस्थिति की रिपोर्ट करता है, तो डिवाइस प्रकार पॉइंटर पर सेट होता है।
  • यदि इनपुट डिवाइस REL_X या REL_Y सापेक्ष अक्षों की उपस्थिति की रिपोर्ट करता है, तो डिवाइस प्रकार को टच पैड पर सेट किया जाता है। यह स्थिति उन इनपुट डिवाइसों के लिए अस्पष्टता का समाधान करती है जिनमें माउस और टच पैड दोनों शामिल होते हैं। इस मामले में, पॉइंटर को नियंत्रित करने के लिए टच पैड का उपयोग नहीं किया जाता है क्योंकि माउस पहले से ही इसे नियंत्रित करता है।
  • अन्यथा, डिवाइस प्रकार पॉइंटर पर सेट है। यह डिफ़ॉल्ट सुनिश्चित करता है कि जिन टच पैड को किसी अन्य विशेष उद्देश्य के लिए नामित नहीं किया गया है, वे पॉइंटर को नियंत्रित करते हैं।

बटन

बटन वैकल्पिक नियंत्रण हैं जिनका उपयोग ऐप्स अतिरिक्त कार्य करने के लिए कर सकते हैं। स्पर्श उपकरणों के बटन माउस बटन के समान व्यवहार करते हैं और मुख्य रूप से पॉइंटर प्रकार के स्पर्श उपकरणों या स्टाइलस के साथ उपयोग किए जाते हैं।

निम्नलिखित बटन समर्थित हैं:

  • BTN_LEFT : MotionEvent.BUTTON_PRIMARY पर मैप किया गया।
  • BTN_RIGHT : MotionEvent.BUTTON_SECONDARY पर मैप किया गया।
  • BTN_MIDDLE : MotionEvent.BUTTON_MIDDLE पर मैप किया गया।
  • BTN_BACK और BTN_SIDE : MotionEvent.BUTTON_BACK पर मैप किया गया। इस बटन को दबाने से कुंजी कोड KeyEvent.KEYCODE_BACK के साथ एक कुंजी प्रेस भी संश्लेषित हो जाती है।
  • BTN_FORWARD और BTN_EXTRA : MotionEvent.BUTTON_FORWARD पर मैप किया गया। इस बटन को दबाने से कुंजी कोड KeyEvent.KEYCODE_FORWARD के साथ एक कुंजी प्रेस भी संश्लेषित हो जाती है।
  • BTN_STYLUS : MotionEvent.BUTTON_SECONDARY पर मैप किया गया।
  • BTN_STYLUS2 : MotionEvent.BUTTON_TERTIARY पर मैप किया गया।

उपकरण और उपकरण के प्रकार

उपकरण एक उंगली, स्टाइलस या अन्य उपकरण है जिसका उपयोग स्पर्श उपकरण के साथ इंटरैक्ट करने के लिए किया जाता है। कुछ स्पर्श उपकरण विभिन्न प्रकार के उपकरणों के बीच अंतर कर सकते हैं।

एंड्रॉइड में अन्यत्र, जैसे MotionEvent एपीआई में, एक टूल को अक्सर पॉइंटर के रूप में संदर्भित किया जाता है।

निम्नलिखित उपकरण प्रकार समर्थित हैं:

  • BTN_TOOL_FINGER और MT_TOOL_FINGER : MotionEvent.TOOL_TYPE_FINGER पर मैप किया गया।
  • BTN_TOOL_PEN और MT_TOOL_PEN : MotionEvent.TOOL_TYPE_STYLUS पर मैप किया गया।
  • BTN_TOOL_RUBBER : MotionEvent.TOOL_TYPE_ERASER पर मैप किया गया।
  • BTN_TOOL_BRUSH : MotionEvent.TOOL_TYPE_STYLUS पर मैप किया गया।
  • BTN_TOOL_PENCIL : MotionEvent.TOOL_TYPE_STYLUS पर मैप किया गया।
  • BTN_TOOL_AIRBRUSH : MotionEvent.TOOL_TYPE_STYLUS पर मैप किया गया।
  • BTN_TOOL_MOUSE : MotionEvent.TOOL_TYPE_MOUSE पर मैप किया गया।
  • BTN_TOOL_LENS : MotionEvent.TOOL_TYPE_MOUSE पर मैप किया गया।
  • BTN_TOOL_DOUBLETAP , BTN_TOOL_TRIPLETAP , और BTN_TOOL_QUADTAP : MotionEvent.TOOL_TYPE_FINGER पर मैप किया गया।

मँडराना बनाम छूना उपकरण

उपकरण या तो स्पर्श उपकरण के संपर्क में हो सकते हैं या सीमा में और उसके ऊपर मँडरा सकते हैं। सभी स्पर्श उपकरण स्पर्श उपकरण के ऊपर मँडराते किसी उपकरण की उपस्थिति को महसूस नहीं कर सकते। जो ऐसा करते हैं, जैसे कि आरएफ-आधारित स्टाइलस डिजिटाइज़र, अक्सर यह पता लगा सकते हैं कि उपकरण डिजिटाइज़र की सीमित सीमा के भीतर है।

InputReader घटक स्पर्श करने वाले टूल को होवरिंग टूल से अलग करता है। इसी तरह, टचिंग टूल और होवरिंग टूल को ऐप्स पर अलग-अलग तरीकों से रिपोर्ट किया जाता है।

MotionEvent.ACTION_DOWN , MotionEvent.ACTION_MOVE , MotionEvent.ACTION_DOWN , MotionEvent.ACTION_POINTER_DOWN और MotionEvent.ACTION_POINTER_UP का उपयोग करके टचिंग टूल को ऐप्स को टच इवेंट के रूप में रिपोर्ट किया जाता है।

MotionEvent.ACTION_HOVER_ENTER , MotionEvent.ACTION_HOVER_MOVE , और MotionEvent.ACTION_HOVER_EXIT का उपयोग करके होवरिंग टूल ऐप्स को सामान्य गति ईवेंट के रूप में रिपोर्ट किए जाते हैं।

टच डिवाइस ड्राइवर आवश्यकताएँ

  • टच डिवाइस ड्राइवरों को केवल उन अक्षों और बटनों के लिए अक्ष और कुंजी कोड पंजीकृत करना चाहिए जिनका वे समर्थन करते हैं। असमर्थित अक्षों या कुंजी कोड को पंजीकृत करने से डिवाइस वर्गीकरण एल्गोरिदम भ्रमित हो सकता है या सिस्टम डिवाइस की क्षमताओं का गलत पता लगा सकता है। उदाहरण के लिए, यदि डिवाइस BTN_TOUCH कुंजी कोड की रिपोर्ट करता है, तो सिस्टम मानता है कि BTN_TOUCH उपयोग हमेशा यह इंगित करने के लिए किया जाता है कि उपकरण स्क्रीन को छू रहा है या नहीं। इसलिए, BTN_TOUCH उपयोग यह इंगित करने के लिए नहीं किया जाना चाहिए कि उपकरण केवल सीमा में है और मँडरा रहा है।
  • सिंगल-टच डिवाइस निम्नलिखित लिनक्स इनपुट इवेंट का उपयोग करते हैं:
    • ABS_X : (आवश्यक) टूल के X निर्देशांक की रिपोर्ट करता है।
    • ABS_Y : (आवश्यक) टूल के Y निर्देशांक की रिपोर्ट करता है।
    • ABS_PRESSURE : (वैकल्पिक) उपकरण की नोक पर लागू भौतिक दबाव या स्पर्श संपर्क की सिग्नल शक्ति की रिपोर्ट करता है।
    • ABS_TOOL_WIDTH : (वैकल्पिक) स्पर्श संपर्क या उपकरण के क्रॉस-अनुभागीय क्षेत्र या चौड़ाई की रिपोर्ट करता है।
    • ABS_DISTANCE : (वैकल्पिक) स्पर्श उपकरण की सतह से उपकरण की दूरी की रिपोर्ट करता है।
    • ABS_TILT_X : (वैकल्पिक) X अक्ष के साथ स्पर्श उपकरण की सतह से उपकरण के झुकाव की रिपोर्ट करता है।
    • ABS_TILT_Y : (वैकल्पिक) Y अक्ष के साथ स्पर्श उपकरण की सतह से उपकरण के झुकाव की रिपोर्ट करता है।
    • BTN_TOUCH : (आवश्यक) इंगित करता है कि उपकरण डिवाइस को छू रहा है या नहीं।
    • BTN_LEFT , BTN_RIGHT , BTN_MIDDLE , BTN_BACK , BTN_SIDE , BTN_FORWARD , BTN_EXTRA , BTN_STYLUS , BTN_STYLUS2 : (वैकल्पिक) रिपोर्ट बटन बताता है।
    • BTN_TOOL_FINGER , BTN_TOOL_PEN , BTN_TOOL_RUBBER , BTN_TOOL_BRUSH , BTN_TOOL_PENCIL , BTN_TOOL_AIRBRUSH , BTN_TOOL_MOUSE , BTN_TOOL_LENS , BTN_TOOL_DOUBLETAP , BTN_TOOL_TRIPLETAP , BTN_TOOL_QUADTAP : (वैकल्पिक) टूल प्रकार की रिपोर्ट करता है।
  • मल्टी-टच डिवाइस निम्नलिखित लिनक्स इनपुट इवेंट का उपयोग करते हैं:
    • ABS_MT_POSITION_X : (आवश्यक) टूल के X निर्देशांक की रिपोर्ट करता है।
    • ABS_MT_POSITION_Y : (आवश्यक) टूल के Y निर्देशांक की रिपोर्ट करता है।
    • ABS_MT_PRESSURE : (वैकल्पिक) उपकरण की नोक पर लागू भौतिक दबाव या स्पर्श संपर्क की सिग्नल शक्ति की रिपोर्ट करता है।
    • ABS_MT_TOUCH_MAJOR : (वैकल्पिक) स्पर्श संपर्क के क्रॉस-अनुभागीय क्षेत्र, या स्पर्श संपर्क के लंबे आयाम की लंबाई की रिपोर्ट करता है।
    • ABS_MT_TOUCH_MINOR : (वैकल्पिक) स्पर्श संपर्क के छोटे आयाम की लंबाई की रिपोर्ट करता है। यदि ABS_MT_TOUCH_MAJOR क्षेत्र माप की रिपोर्ट कर रहा है तो इस अक्ष का उपयोग नहीं किया जाना चाहिए।
    • ABS_MT_WIDTH_MAJOR : (वैकल्पिक) उपकरण के क्रॉस-अनुभागीय क्षेत्र, या उपकरण के लंबे आयाम की लंबाई की रिपोर्ट करता है। इस अक्ष का उपयोग तब तक न करें जब तक आप उपकरण के आयामों को न जानते हों।
    • ABS_MT_WIDTH_MINOR : (वैकल्पिक) उपकरण के छोटे आयाम की लंबाई की रिपोर्ट करता है। यदि ABS_MT_WIDTH_MAJOR क्षेत्र माप की रिपोर्ट कर रहा है या यदि उपकरण के आयाम स्वयं अज्ञात हैं तो इस अक्ष का उपयोग नहीं किया जाना चाहिए।
    • ABS_MT_ORIENTATION : (वैकल्पिक) टूल के ओरिएंटेशन की रिपोर्ट करता है।
    • ABS_MT_DISTANCE : (वैकल्पिक) स्पर्श उपकरण की सतह से उपकरण की दूरी की रिपोर्ट करता है।
    • ABS_MT_TOOL_TYPE : (वैकल्पिक) टूल प्रकार को MT_TOOL_FINGER या MT_TOOL_PEN के रूप में रिपोर्ट करता है।
    • ABS_MT_TRACKING_ID : (वैकल्पिक) टूल की ट्रैकिंग आईडी की रिपोर्ट करता है। ट्रैकिंग आईडी एक मनमाना गैर-नकारात्मक पूर्णांक है जिसका उपयोग एकाधिक टूल सक्रिय होने पर प्रत्येक टूल को स्वतंत्र रूप से पहचानने और ट्रैक करने के लिए किया जाता है। उदाहरण के लिए, जब कई उंगलियां डिवाइस को छू रही हैं, तो प्रत्येक उंगली को एक अलग ट्रैकिंग आईडी दी जानी चाहिए जिसका उपयोग तब तक किया जाता है जब तक उंगली संपर्क में रहती है। ट्रैकिंग आईडी का पुन: उपयोग तब किया जा सकता है जब उनके संबंधित उपकरण सीमा से बाहर चले जाएं।
    • ABS_MT_SLOT : (वैकल्पिक) लिनक्स मल्टी-टच प्रोटोकॉल 'बी' का उपयोग करते समय टूल की स्लॉट आईडी की रिपोर्ट करता है। अधिक विवरण के लिए लिनक्स मल्टी-टच प्रोटोकॉल दस्तावेज़ देखें।
    • BTN_TOUCH : (आवश्यक) इंगित करता है कि उपकरण डिवाइस को छू रहा है या नहीं।
    • BTN_LEFT , BTN_RIGHT , BTN_MIDDLE , BTN_BACK , BTN_SIDE , BTN_FORWARD , BTN_EXTRA , BTN_STYLUS , BTN_STYLUS2 : (वैकल्पिक) रिपोर्ट बटन बताता है।
    • BTN_TOOL_FINGER , BTN_TOOL_PEN , BTN_TOOL_RUBBER , BTN_TOOL_BRUSH , BTN_TOOL_PENCIL , BTN_TOOL_AIRBRUSH , BTN_TOOL_MOUSE , BTN_TOOL_LENS , BTN_TOOL_DOUBLETAP , BTN_TOOL_TRIPLETAP , BTN_TOOL_QUADTAP : (वैकल्पिक) टूल प्रकार की रिपोर्ट करता है।
  • यदि सिंगल-टच और मल्टी-टच प्रोटोकॉल दोनों के लिए अक्षों को परिभाषित किया गया है, तो केवल मल्टी-टच अक्षों का उपयोग किया जाता है और एकल-स्पर्श अक्षों को नजरअंदाज कर दिया जाता है।
  • ABS_X , ABS_Y , ABS_MT_POSITION_X और ABS_MT_POSITION_Y अक्षों के न्यूनतम और अधिकतम मान डिवाइस-विशिष्ट सतह इकाइयों में डिवाइस के सक्रिय क्षेत्र की सीमा को परिभाषित करते हैं। टच स्क्रीन के मामले में, सक्रिय क्षेत्र टच डिवाइस के उस हिस्से का वर्णन करता है जो वास्तव में डिस्प्ले को कवर करता है।

    एक टच स्क्रीन के लिए, सिस्टम स्वचालित रूप से निम्नलिखित गणना के अनुसार डिस्प्ले पिक्सल में स्पर्श स्थिति प्राप्त करने के लिए सतह इकाइयों में रिपोर्ट की गई स्पर्श स्थिति को प्रक्षेपित करता है:

        displayX = (x - minX) * displayWidth / (maxX - minX + 1)
        displayY = (y - minY) * displayHeight / (maxY - minY + 1)
        

    एक टच स्क्रीन रिपोर्ट किए गए सक्रिय क्षेत्र के बाहर के स्पर्श की रिपोर्ट कर सकती है।

    सक्रिय क्षेत्र के बाहर शुरू किए गए स्पर्श ऐप्स तक वितरित नहीं किए जाते हैं, लेकिन वर्चुअल कुंजियों के लिए उपयोग किए जा सकते हैं।

    जो स्पर्श सक्रिय क्षेत्र के अंदर शुरू किए जाते हैं, या जो प्रदर्शन क्षेत्र में प्रवेश करते हैं और बाहर निकलते हैं, उन्हें ऐप्स तक पहुंचाया जाता है। नतीजतन, यदि कोई स्पर्श किसी ऐप की सीमा के भीतर शुरू होता है और फिर सक्रिय क्षेत्र से बाहर चला जाता है, तो ऐप को डिस्प्ले निर्देशांक के साथ स्पर्श ईवेंट प्राप्त हो सकते हैं जो नकारात्मक या डिस्प्ले की सीमा से परे हैं। यह अपेक्षित व्यवहार है.

    एक स्पर्श उपकरण को कभी भी स्पर्श निर्देशांक को सक्रिय क्षेत्र की सीमा पर नहीं दबाना चाहिए। यदि कोई स्पर्श सक्रिय क्षेत्र से बाहर निकलता है, तो इसे सक्रिय क्षेत्र से बाहर के रूप में रिपोर्ट किया जाना चाहिए, या इसे बिल्कुल भी रिपोर्ट नहीं किया जाना चाहिए।

    उदाहरण के लिए, यदि उपयोगकर्ता की उंगली टच स्क्रीन के ऊपरी-बाएँ कोने के पास छू रही है, तो यह (minX, minY) के समन्वय की रिपोर्ट कर सकती है। यदि उंगली सक्रिय क्षेत्र से आगे बढ़ती रहती है, तो टच स्क्रीन को या तो minX और minY से कम घटकों, जैसे (minX - 2, minY - 3) के साथ समन्वय रिपोर्ट करना शुरू कर देना चाहिए, या इसे स्पर्श की रिपोर्ट करना पूरी तरह से बंद कर देना चाहिए। दूसरे शब्दों में, जब उपयोगकर्ता की उंगली वास्तव में सक्रिय क्षेत्र के बाहर छू रही हो तो टच स्क्रीन को रिपोर्ट नहीं करना चाहिए (minX, minY)।

    डिस्प्ले किनारे पर क्लैंपिंग टच निर्देशांक स्क्रीन के किनारे के चारों ओर एक कृत्रिम कठोर सीमा बनाता है जो सिस्टम को डिस्प्ले क्षेत्र की सीमा में प्रवेश करने या बाहर निकलने वाली गतिविधियों को सुचारू रूप से ट्रैक करने से रोकता है।

  • ABS_PRESSURE या ABS_MT_PRESSURE द्वारा रिपोर्ट किए गए मान, यदि वे बिल्कुल रिपोर्ट किए गए हैं, तो उपकरण को छूते समय गैर-शून्य होना चाहिए और अन्यथा यह इंगित करने के लिए शून्य होना चाहिए कि उपकरण मँडरा रहा है।

    दबाव संबंधी जानकारी देना वैकल्पिक है लेकिन इसकी पुरजोर अनुशंसा की जाती है। दबाव-संवेदनशील ड्राइंग और अन्य प्रभावों को लागू करने के लिए ऐप्स दबाव संबंधी जानकारी का उपयोग कर सकते हैं।

  • ABS_TOOL_WIDTH , ABS_MT_TOUCH_MAJOR , ABS_MT_TOUCH_MINOR , ABS_MT_WIDTH_MAJOR , या ABS_MT_WIDTH_MINOR द्वारा रिपोर्ट किए गए मान तब गैर-शून्य होना चाहिए जब उपकरण डिवाइस को छू रहा हो और अन्यथा शून्य होना चाहिए, लेकिन यह आवश्यक नहीं है। उदाहरण के लिए, टच डिवाइस फिंगर टच संपर्कों के आकार को मापने में सक्षम हो सकता है लेकिन स्टाइलस टच संपर्कों को नहीं।

    रिपोर्टिंग आकार की जानकारी वैकल्पिक है लेकिन दृढ़ता से अनुशंसित है। आकार-संवेदनशील ड्राइंग और अन्य प्रभावों को लागू करने के लिए ऐप्स दबाव जानकारी का उपयोग कर सकते हैं।

  • जब उपकरण डिवाइस को छू रहा हो तो ABS_DISTANCE या ABS_MT_DISTANCE द्वारा रिपोर्ट किए गए मान शून्य के करीब पहुंचने चाहिए। उपकरण के सीधे संपर्क में होने पर भी दूरी गैर-शून्य रह सकती है। रिपोर्ट किए गए सटीक मान हार्डवेयर द्वारा दूरी मापने के तरीके पर निर्भर करते हैं।

    दूरी की जानकारी देना वैकल्पिक है लेकिन स्टाइलस उपकरणों के लिए अनुशंसित है।

  • जब उपकरण डिवाइस के लंबवत हो तो ABS_TILT_X और ABS_TILT_Y द्वारा रिपोर्ट किए गए मान शून्य होने चाहिए। एक गैर-शून्य झुकाव इंगित करता है कि उपकरण एक झुकाव पर रखा गया है।

    एक्स और वाई अक्षों के साथ झुकाव कोणों को लंबवत से डिग्री में निर्दिष्ट माना जाता है। केंद्र बिंदु (पूर्णतः लंबवत) प्रत्येक अक्ष के लिए (max + min) / 2 द्वारा दिया गया है। केंद्र बिंदु से छोटे मान ऊपर या बाईं ओर झुकाव का प्रतिनिधित्व करते हैं, केंद्र बिंदु से बड़े मान नीचे या दाईं ओर झुकाव का प्रतिनिधित्व करते हैं।

    InputReader X और Y झुकाव घटकों को 0 से PI / 2 रेडियन तक के लंबवत झुकाव कोण और -PI से PI रेडियन तक के समतलीय अभिविन्यास कोण में परिवर्तित करता है। इस निरूपण के परिणामस्वरूप अभिविन्यास का वर्णन मिलता है जो कि उंगलियों के स्पर्श का वर्णन करने के लिए उपयोग किए जाने वाले के साथ संगत है।

    झुकाव संबंधी जानकारी रिपोर्ट करना वैकल्पिक है लेकिन स्टाइलस उपकरणों के लिए अनुशंसित है।

  • यदि टूल प्रकार ABS_MT_TOOL_TYPE द्वारा रिपोर्ट किया गया है, तो यह BTN_TOOL_* द्वारा रिपोर्ट की गई किसी भी टूल प्रकार की जानकारी को प्रतिस्थापित कर देता है। यदि कोई टूल प्रकार की जानकारी बिल्कुल भी उपलब्ध नहीं है, तो टूल प्रकार डिफ़ॉल्ट रूप से MotionEvent.TOOL_TYPE_FINGER हो जाता है।

  • किसी उपकरण का सक्रिय होना निम्नलिखित स्थितियों के आधार पर निर्धारित किया जाता है:

    • सिंगल-टच प्रोटोकॉल का उपयोग करते समय, यदि BTN_TOUCH , या BTN_TOOL_* 1 है तो टूल सक्रिय है।

      इस शर्त का तात्पर्य है कि InputReader टूल की प्रकृति के बारे में कम से कम कुछ जानकारी होनी चाहिए, चाहे वह स्पर्श कर रहा हो, या कम से कम उसके टूल प्रकार के बारे में। यदि कोई जानकारी उपलब्ध नहीं है, तो उपकरण को निष्क्रिय (सीमा से बाहर) माना जाता है।

    • मल्टी-टच प्रोटोकॉल 'ए' का उपयोग करते समय, टूल जब भी नवीनतम सिंक रिपोर्ट में दिखाई देता है तब सक्रिय होता है। जब टूल सिंक रिपोर्ट में दिखना बंद हो जाता है, तो इसका अस्तित्व समाप्त हो जाता है।
    • मल्टी-टच प्रोटोकॉल 'बी' का उपयोग करते समय, टूल तब तक सक्रिय रहता है जब तक उसमें एक सक्रिय स्लॉट है। जब स्लॉट साफ़ हो जाता है, तो उपकरण का अस्तित्व समाप्त हो जाता है।
  • निम्नलिखित स्थितियों के आधार पर एक उपकरण का होवरिंग निर्धारित किया जाता है:
    • यदि उपकरण BTN_TOOL_MOUSE या BTN_TOOL_LENS है, तो उपकरण मँडरा नहीं रहा है, भले ही निम्न में से कोई भी स्थिति सत्य हो।
    • यदि उपकरण सक्रिय है और ड्राइवर दबाव की जानकारी देता है, और रिपोर्ट किया गया दबाव शून्य है, तो उपकरण मँडरा रहा है।
    • यदि उपकरण सक्रिय है और ड्राइवर BTN_TOUCH कुंजी कोड का समर्थन करता है और BTN_TOUCH का मान शून्य है, तो उपकरण मँडरा रहा है।
  • InputReader मल्टी-टच प्रोटोकॉल 'ए' और 'बी' दोनों का समर्थन करता है। नए ड्राइवरों को 'बी' प्रोटोकॉल का उपयोग करना चाहिए लेकिन कोई भी काम करता है।
  • एंड्रॉइड 4.0 के अनुसार, लिनक्स इनपुट प्रोटोकॉल विनिर्देश के अनुपालन के लिए टच स्क्रीन ड्राइवरों को बदलने की आवश्यकता हो सकती है।

    निम्नलिखित परिवर्तनों की आवश्यकता हो सकती है:

    • जब कोई उपकरण निष्क्रिय हो जाता है (उंगली "ऊपर" हो जाती है), तो इसे बाद की मल्टी-टच सिंक रिपोर्ट में दिखना बंद हो जाना चाहिए। जब सभी उपकरण निष्क्रिय हो जाते हैं (सभी उंगलियां "ऊपर" हो जाती हैं), तो ड्राइवर को एक खाली सिंक रिपोर्ट पैकेट भेजना चाहिए, जैसे SYN_MT_REPORT और उसके बाद SYN_REPORT

      एंड्रॉइड के पिछले संस्करणों में 0 का दबाव मान भेजकर "अप" घटनाओं की सूचना दी जाने की उम्मीद थी। पुराना व्यवहार लिनक्स इनपुट प्रोटोकॉल विनिर्देश के साथ असंगत था और अब समर्थित नहीं है।

    • भौतिक दबाव या सिग्नल शक्ति की जानकारी ABS_MT_PRESSURE उपयोग करके रिपोर्ट की जानी चाहिए।

      एंड्रॉइड के पिछले संस्करणों ने ABS_MT_TOUCH_MAJOR से दबाव की जानकारी प्राप्त की। पुराना व्यवहार लिनक्स इनपुट प्रोटोकॉल विनिर्देश के साथ असंगत था और अब समर्थित नहीं है।

    • स्पर्श आकार की जानकारी ABS_MT_TOUCH_MAJOR उपयोग करके रिपोर्ट की जानी चाहिए।

      Android के पिछले संस्करणों ने ABS_MT_TOOL_MAJOR से आकार की जानकारी प्राप्त की। पुराना व्यवहार लिनक्स इनपुट प्रोटोकॉल विनिर्देश के साथ असंगत था और अब समर्थित नहीं है।

    टच डिवाइस ड्राइवरों को अब एंड्रॉइड-विशिष्ट अनुकूलन की आवश्यकता नहीं है। मानक लिनक्स इनपुट प्रोटोकॉल पर भरोसा करके, एंड्रॉइड अनमॉडिफाइड ड्राइवरों का उपयोग करके विभिन्न प्रकार के टच पेरिफेरल्स, जैसे बाहरी एचआईडी मल्टी-टच टच स्क्रीन का समर्थन कर सकता है।

टच डिवाइस ऑपरेशन

एंड्रॉइड पर टच डिवाइस ऑपरेशन का संक्षिप्त सारांश निम्नलिखित है।

  1. EventHub evdev ड्राइवर से कच्चे इवेंट पढ़ता है।
  2. InputReader कच्ची घटनाओं का उपभोग करता है और प्रत्येक उपकरण की स्थिति और अन्य विशेषताओं के बारे में आंतरिक स्थिति को अद्यतन करता है। यह बटन स्थिति को भी ट्रैक करता है।
  3. यदि BACK या FORWARD दबाया या छोड़ा गया था, तो InputReader मुख्य घटना के बारे में InputDispatcher सूचित करता है।
  4. InputReader यह निर्धारित करता है कि वर्चुअल कुंजी दबाई गई है या नहीं। यदि ऐसा है, तो यह InputDispatcher मुख्य घटना के बारे में सूचित करता है।
  5. InputReader यह निर्धारित करता है कि स्पर्श डिस्प्ले की सीमा के भीतर शुरू किया गया था या नहीं। यदि ऐसा है, तो यह InputDispatcher टच इवेंट के बारे में सूचित करता है।
  6. यदि कोई छूने वाला उपकरण नहीं है लेकिन कम से कम एक होवरिंग टूल है, तो InputReader होवर इवेंट के बारे में InputDispatcher सूचित करता है।
  7. यदि टच डिवाइस प्रकार पॉइंटर है, InputReader पॉइंटर जेस्चर का पता लगाता है, पॉइंटर को स्थानांतरित करता है और तदनुसार स्पॉट करता है और पॉइंटर इवेंट के बारे में InputDispatcher सूचित करता है।
  8. InputDispatcher यह निर्धारित करने के लिए WindowManagerPolicy का उपयोग करता है कि क्या ईवेंट भेजे जाने चाहिए और क्या उन्हें डिवाइस को जगाना चाहिए। फिर, InputDispatcher ईवेंट को उपयुक्त ऐप्स तक पहुंचाता है।

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

टच डिवाइस का व्यवहार डिवाइस के अक्षों, बटनों, इनपुट गुणों, इनपुट डिवाइस कॉन्फ़िगरेशन, वर्चुअल कुंजी मानचित्र और कुंजी लेआउट द्वारा निर्धारित होता है।

कीबोर्ड कॉन्फ़िगरेशन में भाग लेने वाली फ़ाइलों के बारे में अधिक जानकारी के लिए निम्नलिखित अनुभाग देखें:

गुण

सिस्टम स्पर्श डिवाइस व्यवहार को कॉन्फ़िगर और कैलिब्रेट करने के लिए कई इनपुट डिवाइस कॉन्फ़िगरेशन गुणों पर निर्भर करता है।

इसका एक कारण यह है कि स्पर्श उपकरणों के लिए डिवाइस ड्राइवर अक्सर डिवाइस-विशिष्ट इकाइयों का उपयोग करके स्पर्श की विशेषताओं की रिपोर्ट करते हैं।

उदाहरण के लिए, कई स्पर्श उपकरण आंतरिक उपकरण-विशिष्ट पैमाने का उपयोग करके स्पर्श संपर्क क्षेत्र को मापते हैं, जैसे स्पर्श द्वारा ट्रिगर किए गए सेंसर नोड्स की कुल संख्या। यह कच्चा आकार मान ऐप्स के लिए सार्थक नहीं होगा क्योंकि उन्हें टच डिवाइस सेंसर नोड्स के भौतिक आकार और अन्य विशेषताओं के बारे में जानने की आवश्यकता होगी।

सिस्टम टच डिवाइस द्वारा रिपोर्ट किए गए मानों को एक सरल मानक प्रतिनिधित्व में डिकोड, ट्रांसफॉर्म और सामान्य करने के लिए इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों में एन्कोड किए गए अंशांकन पैरामीटर का उपयोग करता है जिसे ऐप्स समझ सकते हैं।

दस्तावेज़ीकरण सम्मेलन

दस्तावेज़ीकरण उद्देश्यों के लिए, हम अंशांकन प्रक्रिया के दौरान सिस्टम द्वारा उपयोग किए गए मानों का वर्णन करने के लिए निम्नलिखित सम्मेलनों का उपयोग करते हैं।

कच्चे अक्ष मान

निम्नलिखित अभिव्यक्तियाँ टच डिवाइस ड्राइवर द्वारा EV_ABS घटनाओं के रूप में रिपोर्ट किए गए कच्चे मानों को दर्शाती हैं।

raw.x
ABS_X या ABS_MT_POSITION_X अक्ष का मान.
raw.y
ABS_Y या ABS_MT_POSITION_Y अक्ष का मान.
raw.pressure
ABS_PRESSURE या ABS_MT_PRESSURE अक्ष का मान, या उपलब्ध न होने पर 0।
raw.touchMajor
ABS_MT_TOUCH_MAJOR अक्ष का मान, या यदि उपलब्ध नहीं है तो 0।
raw.touchMinor
ABS_MT_TOUCH_MINOR अक्ष का मान, या यदि उपलब्ध नहीं है तो raw.touchMajor
raw.toolMajor
ABS_TOOL_WIDTH या ABS_MT_WIDTH_MAJOR अक्ष का मान, या यदि उपलब्ध नहीं है तो 0।
raw.toolMinor
ABS_MT_WIDTH_MINOR अक्ष का मान, या यदि उपलब्ध नहीं है तो raw.toolMajor
raw.orientation
ABS_MT_ORIENTATION अक्ष का मान, या यदि उपलब्ध न हो तो 0।
raw.distance
ABS_DISTANCE या ABS_MT_DISTANCE अक्ष का मान, या यदि उपलब्ध नहीं है तो 0।
raw.tiltX
ABS_TILT_X अक्ष का मान, या यदि उपलब्ध न हो तो 0।
raw.tiltY
ABS_TILT_Y अक्ष का मान, या यदि उपलब्ध न हो तो 0।

कच्ची अक्ष श्रेणियाँ

निम्नलिखित अभिव्यक्तियाँ कच्चे मूल्यों की सीमा को दर्शाती हैं। वे प्रत्येक अक्ष के लिए EVIOCGABS ioctl को कॉल करके प्राप्त किए जाते हैं।

raw.*.min
कच्ची धुरी का समावेशी न्यूनतम मान.
raw.*.max
कच्ची धुरी का समावेशी अधिकतम मान.
raw.*.range
raw.*.max - raw.*.min .
raw.*.fuzz
कच्ची धुरी की सटीकता. जैसे. फ़ज़ = 1 का तात्पर्य है कि मान +/- 1 इकाई तक सटीक हैं।
raw.width
स्पर्श क्षेत्र की सम्मिलित चौड़ाई, raw.x.range + 1 के बराबर।
raw.height
स्पर्श क्षेत्र की समावेशी ऊंचाई, raw.y.range + 1 के बराबर।

आउटपुट रेंज

निम्नलिखित अभिव्यक्तियाँ आउटपुट समन्वय प्रणाली की विशेषताओं को दर्शाती हैं। सिस्टम टच डिवाइस द्वारा उपयोग की जाने वाली सतह इकाइयों से स्पर्श स्थिति की जानकारी को आउटपुट इकाइयों में अनुवाद करने के लिए रैखिक इंटरपोलेशन का उपयोग करता है जो डिस्प्ले पिक्सल जैसे ऐप्स को रिपोर्ट किया जाता है।

output.width
आउटपुट चौड़ाई. टच स्क्रीन (डिस्प्ले से संबंधित) के लिए, यह पिक्सेल में डिस्प्ले चौड़ाई है। टच पैड (डिस्प्ले से संबद्ध नहीं) के लिए, आउटपुट चौड़ाई raw.width के बराबर होती है, जो दर्शाता है कि कोई इंटरपोलेशन नहीं किया गया है।
output.height
आउटपुट ऊंचाई. टच स्क्रीन (डिस्प्ले से संबंधित) के लिए, यह पिक्सेल में डिस्प्ले ऊंचाई है। टच पैड (डिस्प्ले से संबद्ध नहीं) के लिए, आउटपुट ऊंचाई raw.height के बराबर होती है, जो दर्शाता है कि कोई इंटरपोलेशन नहीं किया गया है।
output.diag
आउटपुट समन्वय प्रणाली की विकर्ण लंबाई, sqrt(output.width ^2 + output.height ^2) के बराबर।

बुनियादी विन्यास

अंशांकन मान निर्दिष्ट करने के लिए टच इनपुट मैपर इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल में कई कॉन्फ़िगरेशन गुणों का उपयोग करता है। निम्न तालिका कुछ सामान्य प्रयोजन कॉन्फ़िगरेशन गुणों का वर्णन करती है। अन्य सभी गुणों का वर्णन निम्नलिखित अनुभागों में उन क्षेत्रों के साथ किया गया है जिनका उपयोग अंशांकन के लिए किया जाता है।

स्पर्श.डिवाइस प्रकार

परिभाषा: touch.deviceType = touchScreen | touchPad | pointer | default

स्पर्श उपकरण प्रकार निर्दिष्ट करता है.

  • यदि मान touchScreen है, तो टच डिवाइस एक डिस्प्ले से जुड़ी टच स्क्रीन है।

  • यदि मान touchPad है, तो टच डिवाइस एक टच पैड है जो डिस्प्ले से संबद्ध नहीं है।

  • यदि मान pointer है, तो टच डिवाइस एक टच पैड है जो डिस्प्ले से जुड़ा नहीं है, और इसकी गतियों का उपयोग अप्रत्यक्ष मल्टी-टच पॉइंटर जेस्चर के लिए किया जाता है।

  • यदि मान default है, तो सिस्टम स्वचालित रूप से वर्गीकरण एल्गोरिदम के अनुसार डिवाइस प्रकार का पता लगाता है।

डिवाइस का प्रकार स्पर्श डिवाइस के व्यवहार को कैसे प्रभावित करता है, इसके बारे में अधिक जानकारी के लिए वर्गीकरण अनुभाग देखें।

एंड्रॉइड 3 और उससे पहले के संस्करण में, सभी टच डिवाइस को टच स्क्रीन माना गया था।

स्पर्श.ओरिएंटेशनअवेयर

परिभाषा: touch.orientationAware = 0 | 1

निर्दिष्ट करता है कि टच डिवाइस को डिस्प्ले ओरिएंटेशन परिवर्तनों पर प्रतिक्रिया करनी चाहिए या नहीं।

  • यदि मान 1 है, तो जब भी डिस्प्ले ओरिएंटेशन बदलता है तो टच डिवाइस द्वारा रिपोर्ट की गई स्पर्श स्थिति को घुमाया जाता है।

  • यदि मान 0 है, तो स्पर्श उपकरण द्वारा रिपोर्ट की गई स्पर्श स्थितियाँ अभिविन्यास परिवर्तन प्रदर्शित करने से प्रतिरक्षित हैं।

यदि डिवाइस टच स्क्रीन है तो डिफ़ॉल्ट मान 1 है, अन्यथा 0

सिस्टम आंतरिक और बाहरी टच स्क्रीन और डिस्प्ले के बीच अंतर करता है। एक ओरिएंटेशन जागरूक आंतरिक टच स्क्रीन को आंतरिक डिस्प्ले के ओरिएंटेशन के आधार पर घुमाया जाता है। एक ओरिएंटेशन जागरूक बाहरी टच स्क्रीन को बाहरी डिस्प्ले के ओरिएंटेशन के आधार पर घुमाया जाता है।

नेक्सस वन जैसे उपकरणों पर टच स्क्रीन के रोटेशन का समर्थन करने के लिए ओरिएंटेशन जागरूकता का उपयोग किया जाता है। उदाहरण के लिए, जब डिवाइस को उसके प्राकृतिक अभिविन्यास से 90 डिग्री तक दक्षिणावर्त घुमाया जाता है, तो स्पर्शों की पूर्ण स्थिति को इस तरह से फिर से मैप किया जाता है कि टच स्क्रीन के पूर्ण समन्वय प्रणाली के ऊपरी-बाएँ कोने में एक स्पर्श को शीर्ष-बाएँ में एक स्पर्श के रूप में रिपोर्ट किया जाता है। डिस्प्ले के घुमाए गए समन्वय प्रणाली का कोना। ऐसा इसलिए किया जाता है ताकि स्पर्शों को उसी समन्वय प्रणाली के साथ रिपोर्ट किया जा सके जिसका उपयोग ऐप्स अपने दृश्य तत्वों को खींचने के लिए करते हैं।

हनीकॉम्ब से पहले, सभी स्पर्श उपकरणों को अभिविन्यास जागरूक माना जाता था।

स्पर्श.जेस्चरमोड

परिभाषा: touch.gestureMode = pointer | spots | default

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

  • यदि मान pointer है, तो टच पैड इशारों को माउस सूचक के समान कर्सर के माध्यम से प्रस्तुत किया जाता है।

  • यदि मान spots है, तो टच पैड जेस्चर को एक एंकर द्वारा प्रस्तुत किया जाता है जो जेस्चर के केन्द्रक का प्रतिनिधित्व करता है और गोलाकार स्पॉट का एक सेट होता है जो व्यक्तिगत उंगलियों की स्थिति का प्रतिनिधित्व करता है।

जब INPUT_PROP_SEMI_MT इनपुट प्रॉपर्टी सेट होती है, या अन्यथा spots , तो डिफ़ॉल्ट मान pointer है।

एक्स और वाई फ़ील्ड

एक्स और वाई फ़ील्ड संपर्क क्षेत्र के केंद्र के लिए स्थिति संबंधी जानकारी प्रदान करते हैं।

गणना

गणना सीधी है: टच ड्राइवर से स्थितिगत जानकारी आउटपुट समन्वय प्रणाली में रैखिक रूप से प्रक्षेपित होती है।

xScale = output.width / raw.width
yScale = output.height / raw.height

If not orientation aware or screen rotation is 0 degrees:
output.x = (raw.x - raw.x.min) * xScale
output.y = (raw.y - raw.y.min) * yScale
Else If rotation is 90 degrees:
    output.x = (raw.y - raw.y.min) * yScale
    output.y = (raw.x.max - raw.x) * xScale
Else If rotation is 180 degrees:
    output.x = (raw.x.max - raw.x) * xScale
    output.y = (raw.y.max - raw.y) * yScale
Else If rotation is 270 degrees:
    output.x = (raw.y.max - raw.y) * yScale
    output.y = (raw.x - raw.x.min) * xScale
End If

टचमेजर, टचमाइनर, टूलमेजर, टूलमाइनर, आकार फ़ील्ड

touchMajor और touchMinor फ़ील्ड आउटपुट इकाइयों (पिक्सेल) में संपर्क क्षेत्र के अनुमानित आयामों का वर्णन करते हैं।

toolMajor और toolMinor फ़ील्ड आउटपुट इकाइयों (पिक्सेल) में टूल के अनुमानित आयामों का वर्णन करते हैं।

size फ़ील्ड सबसे बड़े संभावित स्पर्श के सापेक्ष स्पर्श के सामान्यीकृत आकार का वर्णन करता है जिसे स्पर्श उपकरण समझ सकता है। सबसे छोटा संभव सामान्यीकृत आकार 0.0 है (कोई संपर्क नहीं है, या यह मापने योग्य नहीं है), और सबसे बड़ा संभव सामान्यीकृत आकार 1.0 है (सेंसर क्षेत्र संतृप्त है)।

जब अनुमानित लंबाई और चौड़ाई दोनों को मापा जा सकता है, तो touchMajor फ़ील्ड लंबे आयाम को निर्दिष्ट करता है और touchMinor फ़ील्ड संपर्क क्षेत्र के छोटे आयाम को निर्दिष्ट करता है। जब संपर्क क्षेत्र का केवल अनुमानित व्यास मापा जा सकता है, तो touchMajor और touchMinor फ़ील्ड बराबर होते हैं।

इसी तरह, toolMajor फ़ील्ड लंबे आयाम को निर्दिष्ट करता है और toolMinor फ़ील्ड टूल के क्रॉस-सेक्शनल क्षेत्र के छोटे आयाम को निर्दिष्ट करता है।

यदि स्पर्श आकार अनुपलब्ध है लेकिन उपकरण आकार उपलब्ध है, तो उपकरण आकार स्पर्श आकार के बराबर सेट किया गया है। इसके विपरीत, यदि उपकरण का आकार अनुपलब्ध है लेकिन स्पर्श आकार उपलब्ध है, तो स्पर्श आकार को उपकरण के आकार के बराबर सेट किया जाता है।

स्पर्श उपकरण विभिन्न तरीकों से स्पर्श आकार और उपकरण आकार को मापते हैं या रिपोर्ट करते हैं। वर्तमान कार्यान्वयन तीन अलग-अलग प्रकार के मापों का समर्थन करता है: सतह इकाइयों में व्यास, क्षेत्र और ज्यामितीय बाउंडिंग बॉक्स।

परिभाषा: touch.size.calibration = none | geometric | diameter | area | default

स्पर्श आकार और उपकरण आकार की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप के प्रकार को निर्दिष्ट करता है।

  • यदि मान none है, तो आकार शून्य पर सेट है।

  • यदि मान geometric है, तो आकार को स्थिति के समान सतह इकाइयों में निर्दिष्ट माना जाता है, इसलिए इसे उसी तरीके से स्केल किया जाता है।

  • यदि मान diameter है, तो आकार को स्पर्श या उपकरण के व्यास (चौड़ाई) के समानुपाती माना जाता है।

  • यदि मान area है, तो आकार स्पर्श या उपकरण के क्षेत्र के समानुपाती माना जाता है।

  • यदि मान default है, तो raw.touchMajor या raw.toolMajor अक्ष उपलब्ध होने पर सिस्टम geometric अंशांकन का उपयोग करता है, अन्यथा यह none अंशांकन का उपयोग नहीं करता है।

स्पर्श.आकार.पैमाने

परिभाषा: touch.size.scale = <एक गैर-नकारात्मक फ़्लोटिंग पॉइंट संख्या>

अंशांकन में उपयोग किए जाने वाले निरंतर पैमाने के कारक को निर्दिष्ट करता है।

डिफ़ॉल्ट मान 1.0 है.

स्पर्श.आकार.पूर्वाग्रह

परिभाषा: touch.size.bias = <एक गैर-नकारात्मक फ़्लोटिंग पॉइंट संख्या>

अंशांकन में प्रयुक्त निरंतर पूर्वाग्रह मान निर्दिष्ट करता है।

डिफ़ॉल्ट मान 0.0 है.

स्पर्श.आकार.सारांशित है

परिभाषा: touch.size.isSummed = 0 | 1

निर्दिष्ट करता है कि क्या आकार सभी सक्रिय संपर्कों के आकारों के योग के रूप में रिपोर्ट किया गया है, या प्रत्येक संपर्क के लिए अलग-अलग रिपोर्ट किया गया है।

  • यदि मान 1 है, तो रिपोर्ट किए गए आकार को उपयोग से पहले संपर्कों की संख्या से विभाजित किया जाता है।

  • यदि मान 0 है, तो रिपोर्ट किया गया आकार वैसे ही उपयोग किया जाता है।

डिफॉल्यू मूल्य 0 है ।

कुछ स्पर्श उपकरण, विशेष रूप से "सेमी-एमटी" उपकरण कई संपर्कों के अलग-अलग आयामों को अलग नहीं कर सकते हैं, इसलिए वे एक आकार माप की रिपोर्ट करते हैं जो उनके कुल क्षेत्र या चौड़ाई का प्रतिनिधित्व करता है। ऐसे उपकरणों के लिए यह संपत्ति केवल 1 पर सेट की जानी चाहिए। यदि संदेह हो, तो इस मान को 0 पर सेट करें।

गणना

touchMajor , touchMinor , toolMajor , toolMinor और size फ़ील्ड की गणना निर्दिष्ट अंशांकन पैरामीटर पर निर्भर करती है।

If raw.touchMajor and raw.toolMajor are available:
    touchMajor = raw.touchMajor
    touchMinor = raw.touchMinor
    toolMajor = raw.toolMajor
    toolMinor = raw.toolMinor
Else If raw.touchMajor is available:
    toolMajor = touchMajor = raw.touchMajor
    toolMinor = touchMinor = raw.touchMinor
Else If raw.toolMajor is available:
    touchMajor = toolMajor = raw.toolMajor
    touchMinor = toolMinor = raw.toolMinor
Else
    touchMajor = toolMajor = 0
    touchMinor = toolMinor = 0
    size = 0
End If

size = avg(touchMajor, touchMinor)

If touch.size.isSummed == 1:
    touchMajor = touchMajor / numberOfActiveContacts
    touchMinor = touchMinor / numberOfActiveContacts
    toolMajor = toolMajor / numberOfActiveContacts
    toolMinor = toolMinor / numberOfActiveContacts
    size = size / numberOfActiveContacts
End If

If touch.size.calibration == "none":
    touchMajor = toolMajor = 0
    touchMinor = toolMinor = 0
    size = 0
Else If touch.size.calibration == "geometric":
    outputScale = average(output.width / raw.width, output.height / raw.height)
    touchMajor = touchMajor * outputScale
    touchMinor = touchMinor * outputScale
    toolMajor = toolMajor * outputScale
    toolMinor = toolMinor * outputScale
Else If touch.size.calibration == "area":
    touchMajor = sqrt(touchMajor)
    touchMinor = touchMajor
    toolMajor = sqrt(toolMajor)
    toolMinor = toolMajor
Else If touch.size.calibration == "diameter":
    touchMinor = touchMajor
    toolMinor = toolMajor
End If

If touchMajor != 0:
    output.touchMajor = touchMajor * touch.size.scale + touch.size.bias
Else
    output.touchMajor = 0
End If

If touchMinor != 0:
    output.touchMinor = touchMinor * touch.size.scale + touch.size.bias
Else
    output.touchMinor = 0
End If

If toolMajor != 0:
    output.toolMajor = toolMajor * touch.size.scale + touch.size.bias
Else
    output.toolMajor = 0
End If

If toolMinor != 0:
    output.toolMinor = toolMinor * touch.size.scale + touch.size.bias
Else
    output.toolMinor = 0
End If

output.size = size

दबाव क्षेत्र

pressure क्षेत्र स्पर्श उपकरण पर लागू अनुमानित भौतिक दबाव को 0.0 (कोई स्पर्श नहीं) और 1.0 (पूर्ण बल) के बीच सामान्यीकृत मान के रूप में वर्णित करता है।

शून्य दबाव इंगित करता है कि उपकरण मँडरा रहा है।

स्पर्श.दबाव.अंशांकन

परिभाषा: touch.pressure.calibration = none | physical | amplitude | default

दबाव की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप के प्रकार को निर्दिष्ट करता है।

  • यदि मान none है, तो दबाव अज्ञात है इसलिए इसे छूने पर 1.0 और मँडराने पर 0.0 पर सेट किया जाता है।

  • यदि मान physical है, तो दबाव अक्ष को टच पैड पर लागू दबाव की वास्तविक भौतिक तीव्रता को मापने के लिए माना जाता है।

  • यदि मान amplitude है, तो दबाव अक्ष को सिग्नल आयाम मापने के लिए माना जाता है, जो संपर्क के आकार और लागू दबाव से संबंधित है।

  • यदि मान default है, तो दबाव अक्ष उपलब्ध होने पर सिस्टम physical अंशांकन का उपयोग करता है, अन्यथा none का उपयोग करता है।

स्पर्श.दबाव.पैमाना

परिभाषा: touch.pressure.scale = <एक गैर-नकारात्मक फ़्लोटिंग पॉइंट संख्या>

अंशांकन में उपयोग किए जाने वाले निरंतर पैमाने के कारक को निर्दिष्ट करता है।

डिफ़ॉल्ट मान 1.0 / raw.pressure.max है।

गणना

pressure क्षेत्र की गणना निर्दिष्ट अंशांकन मापदंडों पर निर्भर करती है।

If touch.pressure.calibration == "physical" or "amplitude":
    output.pressure = raw.pressure * touch.pressure.scale
Else
    If hovering:
        output.pressure = 0
    Else
        output.pressure = 1
    End If
End If

अभिविन्यास और झुकाव क्षेत्र

orientation फ़ील्ड एक कोणीय माप के रूप में स्पर्श और उपकरण के अभिविन्यास का वर्णन करता है। 0 का एक अभिविन्यास इंगित करता है कि प्रमुख अक्ष लंबवत रूप से उन्मुख है, -PI/2 इंगित करता है कि प्रमुख अक्ष बाईं ओर उन्मुख है, PI/2 इंगित करता है कि प्रमुख अक्ष दाईं ओर उन्मुख है। जब एक स्टाइलस टूल मौजूद होता है, तो ओरिएंटेशन रेंज को -PI या PI से एक पूर्ण सर्कल रेंज में वर्णित किया जा सकता है।

tilt फ़ील्ड एक कोणीय माप के रूप में उपकरण के झुकाव का वर्णन करता है। 0 का एक झुकाव इंगित करता है कि उपकरण सतह के लंबवत है। PI/2 का एक झुकाव इंगित करता है कि उपकरण सतह पर सपाट है।

touch.orientation.calibration

परिभाषा: touch.orientation.calibration = none | interpolated | vector | default

अभिविन्यास की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप को निर्दिष्ट करता है।

  • यदि मान none है, तो अभिविन्यास अज्ञात है इसलिए यह 0 पर सेट है।
  • यदि मान को interpolated है, तो अभिविन्यास को रैखिक रूप से प्रक्षेपित किया जाता है कि raw.orientation.min का एक कच्चा मान -PI/2 तक मैप करता है और raw.orientation.max का एक कच्चा मान PI/2 तक मैप करता है। केंद्र मान (raw.orientation.min + raw.orientation.max) / 2 मानचित्र 0 से।
  • यदि मान vector है, तो अभिविन्यास को दो हस्ताक्षरित 4-बिट फ़ील्ड के पैक वेक्टर सहमति के रूप में व्याख्या की जाती है। इस प्रतिनिधित्व का उपयोग Atmel ऑब्जेक्ट आधारित प्रोटोकॉल भागों पर किया जाता है। जब डिकोड किया जाता है, तो वेक्टर एक अभिविन्यास कोण और आत्मविश्वास परिमाण प्राप्त करता है। आत्मविश्वास परिमाण का उपयोग आकार की जानकारी को स्केल करने के लिए किया जाता है, जब तक कि यह ज्यामितीय न हो।
  • यदि मान default है, तो सिस्टम interpolated अंशांकन का उपयोग करता है यदि अभिविन्यास अक्ष उपलब्ध है, तो अन्यथा none उपयोग नहीं करता है।

गणना

orientation और tilt फ़ील्ड की गणना निर्दिष्ट अंशांकन मापदंडों और उपलब्ध इनपुट पर निर्भर करती है।

If touch.tiltX and touch.tiltY are available:
    tiltXCenter = average(raw.tiltX.min, raw.tiltX.max)
    tiltYCenter = average(raw.tiltY.min, raw.tiltY.max)
    tiltXAngle = (raw.tiltX - tiltXCenter) * PI / 180
    tiltYAngle = (raw.tiltY - tiltYCenter) * PI / 180
    output.orientation = atan2(-sin(tiltXAngle), sinf(tiltYAngle))
    output.tilt = acos(cos(tiltXAngle) * cos(tiltYAngle))
Else If touch.orientation.calibration == "interpolated":
    center = average(raw.orientation.min, raw.orientation.max)
    output.orientation = PI / (raw.orientation.max - raw.orientation.min)
    output.tilt = 0
Else If touch.orientation.calibration == "vector":
    c1 = (raw.orientation & 0xF0) >> 4
    c2 = raw.orientation & 0x0F

    If c1 != 0 or c2 != 0:
        If c1 >= 8 Then c1 = c1 - 16
        If c2 >= 8 Then c2 = c2 - 16
        angle = atan2(c1, c2) / 2
        confidence = sqrt(c1*c1 + c2*c2)

        output.orientation = angle

        If touch.size.calibration == "diameter" or "area":
            scale = 1.0 + confidence / 16
            output.touchMajor *= scale
            output.touchMinor /= scale
            output.toolMajor *= scale
            output.toolMinor /= scale
        End If
    Else
        output.orientation = 0
    End If
    output.tilt = 0
Else
    output.orientation = 0
    output.tilt = 0
End If

If orientation aware:
    If screen rotation is 90 degrees:
        output.orientation = output.orientation - PI / 2
    Else If screen rotation is 270 degrees:
        output.orientation = output.orientation + PI / 2
    End If
End If

दूरस्थ क्षेत्र

distance क्षेत्र उपकरण और टच डिवाइस की सतह के बीच की दूरी का वर्णन करता है। 0.0 का मान प्रत्यक्ष संपर्क को इंगित करता है और बड़े मान सतह से बढ़ती दूरी का संकेत देते हैं।

touch.distance.calibration

परिभाषा: touch.distance.calibration = none | scaled | default

दूरी की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप को निर्दिष्ट करता है।

  • यदि मान none है, तो दूरी अज्ञात है इसलिए यह 0 पर सेट है।

  • यदि मान को scaled है, तो रिपोर्ट की गई दूरी एक निरंतर पैमाने के कारक से गुणा की जाती है।

  • यदि मान default है, तो सिस्टम scaled अंशांकन का उपयोग करता है यदि दूरी अक्ष उपलब्ध है, तो अन्यथा none उपयोग नहीं करता है।

touch.distance.scale

परिभाषा: touch.distance.scale = <a गैर-नकारात्मक फ़्लोटिंग पॉइंट नंबर>

अंशांकन में उपयोग किए जाने वाले एक निरंतर पैमाने का कारक निर्दिष्ट करता है।

डिफ़ॉल्ट मान 1.0 है.

गणना

distance क्षेत्र की गणना निर्दिष्ट अंशांकन मापदंडों पर निर्भर करती है।

If touch.distance.calibration == "scaled":
    output.distance = raw.distance * touch.distance.scale
Else
    output.distance = 0
End If

उदाहरण

# Input device configuration file for a touch screen that supports pressure,
# size and orientation. The pressure and size scale factors were obtained
# by measuring the characteristics of the device itself and deriving
# useful approximations based on the resolution of the touch sensor and the
# display.
#
# Note that these parameters are specific to a particular device model.
# Different parameters need to be used for other devices.

# Basic Parameters
touch.deviceType = touchScreen
touch.orientationAware = 1

# Size
# Based on empirical measurements, we estimate the size of the contact
# using size = sqrt(area) * 28 + 0.
touch.size.calibration = area
touch.size.scale = 28
touch.size.bias = 0
touch.size.isSummed = 0

# Pressure
# Driver reports signal strength as pressure.
#
# A normal index finger touch typically registers about 80 signal strength
# units although we don't expect these values to be accurate.
touch.pressure.calibration = amplitude
touch.pressure.scale = 0.0125

# Orientation
touch.orientation.calibration = vector

अनुकूलता नोट्स

टच उपकरणों के लिए कॉन्फ़िगरेशन गुण एंड्रॉइड आइसक्रीम सैंडविच 4.0 में काफी बदल गए। टच डिवाइस के लिए सभी इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों को नए कॉन्फ़िगरेशन गुणों का उपयोग करने के लिए अपडेट किया जाना चाहिए।

पुराने टच डिवाइस ड्राइवरों को भी अपडेट करने की आवश्यकता हो सकती है।

वर्चुअल कुंजी मैप फाइलें

स्पर्श उपकरणों का उपयोग अक्सर वर्चुअल कुंजियों को लागू करने के लिए किया जाता है।

टच कंट्रोलर की क्षमताओं के आधार पर ऐसा करने के कई तरीके हैं। कुछ टच कंट्रोलर्स को फर्मवेयर रजिस्टर सेट करके सॉफ्ट कीज़ को लागू करने के लिए सीधे कॉन्फ़िगर किया जा सकता है। अन्य बार सॉफ्टवेयर में प्रमुख कोड तक टच निर्देशांक से मैपिंग करना वांछनीय है।

जब सॉफ़्टवेयर में वर्चुअल कुंजियाँ लागू की जाती हैं, तो कर्नेल को वर्चुअल की मैप फ़ाइल को virtualkeys.<devicename> नामक एक वर्चुअल की मैप फ़ाइल निर्यात करनी चाहिए। उदाहरण के लिए, यदि टच स्क्रीन डिवाइस ड्राइवर "टचफेली" के रूप में इसके नाम की रिपोर्ट करते हैं, तो वर्चुअल की मैप फ़ाइल में पथ /sys/board_properties/virtualkeys.touchyfeely board_properties/virtualkeys.touchyfeely होना चाहिए।

एक वर्चुअल कुंजी मैप फ़ाइल टच स्क्रीन पर वर्चुअल कुंजियों के निर्देशांक और लिनक्स कुंजी कोड का वर्णन करती है।

वर्चुअल कुंजी मैप फ़ाइल के अलावा, एंड्रॉइड कुंजी कोड के लिए लिनक्स कुंजी कोड को मैप करने और कीबोर्ड डिवाइस के प्रकार (आमतौर पर SPECIAL_FUNCTION ) को निर्दिष्ट करने के लिए एक संबंधित कुंजी लेआउट फ़ाइल और कुंजी वर्ण मैप फ़ाइल होनी चाहिए।

वाक्य - विन्यास

एक वर्चुअल कुंजी मैप फ़ाइल एक सादा पाठ फ़ाइल है जिसमें वर्चुअल कुंजी लेआउट विवरणों का अनुक्रम होता है, या तो न्यूलाइन या कॉलन द्वारा अलग किया जाता है।

टिप्पणी लाइनें '#' से शुरू होती हैं और लाइन के अंत तक जारी रहती हैं।

प्रत्येक वर्चुअल कुंजी को 6 बृहदान्त्र-विमोचन घटकों द्वारा वर्णित किया गया है:

  • 0x01 : एक संस्करण कोड। हमेशा 0x01 होना चाहिए।
  • <लिनक्स कुंजी कोड>: वर्चुअल कुंजी का लिनक्स कुंजी कोड।
  • <सेंटरएक्स>: एक्स पिक्सेल वर्चुअल कुंजी के केंद्र का समन्वय करता है।
  • <सेंटर>: वाई पिक्सेल वर्चुअल कुंजी के केंद्र का समन्वय करता है।
  • <चौड़ाई>: पिक्सेल में वर्चुअल कुंजी की चौड़ाई।
  • <ऊंचाई>: पिक्सेल में वर्चुअल कुंजी की ऊंचाई।

सभी निर्देशांक और आकार प्रदर्शन समन्वय प्रणाली के संदर्भ में निर्दिष्ट किए गए हैं।

यहाँ एक वर्चुअल की मैप फ़ाइल है जो एक पंक्ति पर लिखी गई है।

# All on one line
0x01:158:55:835:90:55:0x01:139:172:835:125:55:0x01:102:298:835:115:55:0x01:217:412:835:95:55

एक ही वर्चुअल कुंजी मैप फ़ाइल को कई लाइनों पर भी लिखा जा सकता है।

# One key per line
0x01:158:55:835:90:55
0x01:139:172:835:125:55
0x01:102:298:835:115:55
0x01:217:412:835:95:55

उपरोक्त उदाहरण में, टच स्क्रीन में 480x800 का रिज़ॉल्यूशन है। तदनुसार, सभी वर्चुअल कुंजियों में 835 का एक <सेंटर> समन्वय होता है, जो टच स्क्रीन के दृश्यमान क्षेत्र से थोड़ा नीचे है।

पहली कुंजी में 158 का लिनक्स स्कैन कोड ( KEY_BACK ), 55 का केंद्र, 835 का केंद्र, 90 की चौड़ाई और 55 की ऊंचाई है।

उदाहरण

वर्चुअल कुंजी मैप फ़ाइल: /sys/board_properties/virtualkeys.touchyfeely

0x01:158:55:835:90:55
0x01:139:172:835:125:55
0x01:102:298:835:115:55
0x01:217:412:835:95:55

कुंजी लेआउट फ़ाइल: /system/usr/keylayout/touchyfeely.kl /keylayout/touchyfeely.kl।

key 158 BACK
key 139 MENU
key 172 HOME
key 217 SEARCH

मुख्य चरित्र मानचित्र फ़ाइल: /system/usr/keychars/touchyfeely.kcm keychars/touchyfeely.kcm।

type SPECIAL_FUNCTION

अप्रत्यक्ष बहु-टच पॉइंटर इशारों

पॉइंटर मोड में, सिस्टम निम्नलिखित इशारों की व्याख्या करता है:

  • सिंगल फिंगर टैप: क्लिक करें।
  • सिंगल फिंगर मोशन: पॉइंटर को स्थानांतरित करें।
  • सिंगल फिंगर मोशन प्लस बटन प्रेस: ​​पॉइंटर को खींचें।
  • दो उंगली गति दोनों उंगलियां एक ही दिशा में चलती हैं: उस दिशा में सूचक के नीचे क्षेत्र को खींचें। सूचक अपने आप नहीं चलता है।
  • दो उंगली गति दोनों उंगलियां एक दूसरे की ओर बढ़ रही हैं या अलग -अलग दिशाओं में अलग हैं: पैन/स्केल/पॉइंटर के आसपास के क्षेत्र को घुमाएं। सूचक अपने आप नहीं चलता है।
  • मल्टीपल फिंगर मोशन: फ्रीफॉर्म जेस्चर।

हथेली अस्वीकृति

एंड्रॉइड 13 के रूप में, सिस्टम स्वचालित रूप से हथेलियों से इनपुट को अस्वीकार कर सकता है जब अंतर्निहित फ्रेमवर्क सक्षम होता है। इन-हाउस, कस्टम-निर्मित समाधान अभी भी समर्थित हैं, हालांकि हथेली का पता चलने पर उन्हें TOOL_TYPE_PALM ध्वज को वापस करने के लिए संशोधित करने की आवश्यकता हो सकती है। अंतर्निहित फ्रेमवर्क भी कस्टम समाधानों के साथ मिलकर काम करता है।

वास्तविक मॉडल जेस्चर डेटा के पहले 90 एमएस को वर्तमान पॉइंटर पर, और आसपास के पॉइंटर्स पर देखता है, फिर मानता है कि डिस्प्ले एज से कितनी दूर टच हैं। यह तब निर्धारित करता है, प्रति-पॉइंटर आधार पर, कौन से संकेत हथेलियों हैं। यह प्रत्येक संपर्क के आकार को भी ध्यान में रखता है, जैसा कि touchMajor और touchMinor द्वारा रिपोर्ट किया गया है। एंड्रॉइड फ्रेमवर्क तब उन बिंदुओं को हटा देता है जो टच स्ट्रीम से हथेलियों के रूप में चिह्नित होते हैं।

यदि कोई पॉइंटर पहले से ही ऐप्स में भेजा गया था, तो सिस्टम या तो:

  • (यदि अन्य सक्रिय पॉइंटर्स हैं) ACTION_POINTER_UP और FLAG_CANCELED सेट के साथ पॉइंटर को रद्द कर देता है।
  • (यदि यह एकमात्र सूचक है) ACTION_CANCEL के साथ सूचक को रद्द कर देता है।

एक सार्वजनिक एपीआई, MotionEvent.FLAG_CANCELED , इंगित करता है कि वर्तमान घटना को उपयोगकर्ता कार्रवाई को ट्रिगर नहीं करना चाहिए। यह ध्वज ACTION_CANCEL और ACTION_POINTER_UP दोनों के लिए सेट किया गया है।

यदि पाम पॉइंटर को ऐप्स में नहीं भेजा गया था, तो सिस्टम बस पॉइंटर को छोड़ देता है।

हथेली अस्वीकृति सक्षम करें

  1. अपने टच ड्राइवर में, निम्नलिखित फ़ील्ड के लिए रिज़ॉल्यूशन सेट करने के लिए input_abs_set_res मैक्रो का उपयोग करें (इकाइयां प्रति मिमी पिक्सेल हैं):
    • ABS_MT_POSITION_X
    • ABS_MT_POSITION_Y
    • ABS_MT_TOUCH_MAJOR
    • ABS_MT_TOUCH_MINOR

    ABS_MT_TOUCH_MINOR के लिए समर्थन वैकल्पिक है। हालाँकि, यदि आपका डिवाइस इसका समर्थन करता है, तो सुनिश्चित करें कि रिज़ॉल्यूशन सही तरीके से सेट है।

  2. फ़ील्ड को सही तरीके से सेट करने की पुष्टि करने के लिए, चलाएं:
        $ adb shell getevent -li
    
  3. रनटाइम के दौरान फीचर को सक्षम करने के लिए, रन:
        $ adb shell device_config put input_native_boot palm_rejection_enabled 1
    
  4. system_server प्रक्रिया को पुनरारंभ करें।
         $ adb shell stop && adb shell start
        
  5. पुष्टि करें कि adb shell dumpsys input पता चलता है कि अवांछित UnwantedInteractionBlocker अस्वीकरण हैं। यदि ऐसा नहीं होता है, तो क्या गलत हो सकता है, इस पर सुराग खोजने के लिए इनपुट-संबंधित लॉग की जांच करें।

    संदर्भ के लिए निम्नलिखित उदाहरण देखें:

    UnwantedInteractionBlocker:
      mEnablePalmRejection: true
      isPalmRejectionEnabled (flag value): true
      mPalmRejectors:
        deviceId = 3:
          mDeviceInfo:
            max_x = 
            max_y = 
            x_res = 11.00
            y_res = 11.00
            major_radius_res = 1.00
            minor_radius_res = 1.00
            minor_radius_supported = true
            touch_major_res = 1
            touch_minor_res = 1
          mSlotState:
            mSlotsByPointerId:
    
            mPointerIdsBySlot:
    
          mSuppressedPointerIds: {}
    
  6. सुविधा को स्थायी रूप से सक्षम करने के लिए, अपने init**rc फ़ाइल में संबंधित Sysprop कमांड जोड़ें:

    setprop persist.device_config.input_native_boot.palm_rejection_enabled 1
    

अग्रिम पठन