স্পর্শ ডিভাইস

অ্যান্ড্রয়েড স্টাইলাস-ভিত্তিক ডিজিটাইজার ট্যাবলেট সহ বিভিন্ন টাচ স্ক্রিন এবং টাচ প্যাড সমর্থন করে।

টাচ স্ক্রিন হল টাচ ডিভাইস যা একটি ডিসপ্লের সাথে যুক্ত থাকে যাতে ব্যবহারকারীর স্ক্রিনে আইটেমগুলিকে সরাসরি ম্যানিপুলেট করার ছাপ থাকে।

টাচ প্যাড হল এমন টাচ ডিভাইস যা ডিসপ্লের সাথে যুক্ত নয়, যেমন ডিজিটাইজার ট্যাবলেট। টাচ প্যাডগুলি সাধারণত নির্দেশ করার জন্য বা পরোক্ষ পজিশনিং বা একটি ব্যবহারকারী ইন্টারফেসের অঙ্গভঙ্গি-ভিত্তিক নিয়ন্ত্রণের জন্য ব্যবহৃত হয়।

টাচ ডিভাইসে এমন বোতাম থাকতে পারে যার কার্যকারিতা মাউস বোতামের মতো।

স্পর্শ ডিভাইসগুলি মাঝে মাঝে অন্তর্নিহিত স্পর্শ সেন্সর প্রযুক্তির উপর নির্ভর করে আঙুল বা স্টাইলাসের মতো বিভিন্ন সরঞ্জাম ব্যবহার করে ম্যানিপুলেট করা যেতে পারে।

টাচ ডিভাইসগুলি কখনও কখনও ভার্চুয়াল কীগুলি প্রয়োগ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, কিছু অ্যান্ড্রয়েড ডিভাইসে, টাচ স্ক্রিন সেন্সর এলাকাটি ডিসপ্লের প্রান্তের বাইরে প্রসারিত হয় এবং একটি স্পর্শ সংবেদনশীল কী প্যাডের অংশ হিসাবে দ্বৈত উদ্দেশ্য পরিবেশন করে।

টাচ ডিভাইসের বিশাল বৈচিত্র্যের কারণে, অ্যান্ড্রয়েড প্রতিটি ডিভাইসের বৈশিষ্ট্য এবং পছন্দসই আচরণ বর্ণনা করতে প্রচুর সংখ্যক কনফিগারেশন বৈশিষ্ট্যের উপর নির্ভর করে।

স্পর্শ ডিভাইস শ্রেণীবিভাগ

একটি ইনপুট ডিভাইস একটি মাল্টি-টাচ ডিভাইস হিসাবে শ্রেণীবদ্ধ করা হয় যদি নিম্নলিখিত দুটি শর্ত থাকে:

  • ইনপুট ডিভাইস ABS_MT_POSITION_X এবং ABS_MT_POSITION_Y পরম অক্ষের উপস্থিতি রিপোর্ট করে।
  • ইনপুট ডিভাইসে কোনো গেমপ্যাড বোতাম নেই। এই শর্তটি নির্দিষ্ট গেমপ্যাডগুলির সাথে একটি অস্পষ্টতার সমাধান করে যা MT অক্ষগুলিকে ওভারল্যাপ করে এমন কোডগুলির সাথে অক্ষগুলি রিপোর্ট করে৷

একটি ইনপুট ডিভাইস একটি একক-স্পর্শ ডিভাইস হিসাবে শ্রেণীবদ্ধ করা হয় যদি নিম্নলিখিত দুটি শর্ত থাকে:

  • ইনপুট ডিভাইস একটি মাল্টি-টাচ ডিভাইস হিসাবে শ্রেণীবদ্ধ করা হয় না. একটি ইনপুট ডিভাইস হয় একক-টাচ ডিভাইস বা মাল্টি-টাচ ডিভাইস হিসাবে শ্রেণীবদ্ধ করা হয়, উভয়ই নয়।
  • ইনপুট ডিভাইসটি ABS_X এবং ABS_Y পরম অক্ষের উপস্থিতি এবং BTN_TOUCH কী কোডের উপস্থিতি রিপোর্ট করে।

যখন একটি ইনপুট ডিভাইস একটি স্পর্শ ডিভাইস হিসাবে শ্রেণীবদ্ধ করা হয়, ভার্চুয়াল কীগুলির উপস্থিতি ডিভাইসের জন্য ভার্চুয়াল কী মানচিত্র ফাইল লোড করার চেষ্টা করে নির্ধারিত হয়। যদি একটি ভার্চুয়াল কী মানচিত্র উপলব্ধ থাকে, তাহলে ডিভাইসের জন্য কী বিন্যাস ফাইলটিও লোড করা হয়। এই ফাইলগুলির অবস্থান এবং বিন্যাস সম্পর্কে তথ্যের জন্য [ভার্চুয়াল কী মানচিত্র ফাইল] (#ভার্চুয়াল-কী-ম্যাপ-ফাইলস) দেখুন।

এরপরে, সিস্টেম টাচ ডিভাইসের জন্য ইনপুট ডিভাইস কনফিগারেশন ফাইল লোড করে।

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

ইনপুট ডিভাইস কনফিগারেশন লোড হওয়ার পরে, সিস্টেম ইনপুট ডিভাইসটিকে একটি টাচ স্ক্রিন , টাচ প্যাড বা পয়েন্টার ডিভাইস হিসাবে শ্রেণীবদ্ধ করে।

  • একটি টাচ স্ক্রিন ডিভাইস পর্দায় বস্তুর সরাসরি ম্যানিপুলেশন জন্য ব্যবহার করা হয়. ব্যবহারকারী সরাসরি স্ক্রীন স্পর্শ করে, তাই বস্তুগুলিকে ম্যানিপুলেট করা হচ্ছে তা নির্দেশ করার জন্য সিস্টেমের কোন অতিরিক্ত সুবিধার প্রয়োজন হয় না।
  • একটি টাচ প্যাড ডিভাইস একটি প্রদত্ত সেন্সর এলাকায় স্পর্শ সম্পর্কে একটি অ্যাপে নিখুঁত অবস্থানের তথ্য প্রদান করতে ব্যবহৃত হয়। এটি ডিজিটাইজার ট্যাবলেটের জন্য উপযোগী হতে পারে।
  • একটি পয়েন্টার ডিভাইস একটি কার্সার ব্যবহার করে পর্দায় বস্তুর পরোক্ষ ম্যানিপুলেশন জন্য ব্যবহার করা হয়. আঙ্গুলগুলিকে মাল্টি-টাচ পয়েন্টার অঙ্গভঙ্গি হিসাবে ব্যাখ্যা করা হয়। অন্যান্য সরঞ্জাম, যেমন স্টাইলাস, পরম অবস্থান ব্যবহার করে ব্যাখ্যা করা হয়। আরও তথ্যের জন্য পরোক্ষ মাল্টি-টাচ পয়েন্টার অঙ্গভঙ্গি দেখুন।

নিম্নলিখিত নিয়মগুলি ইনপুট ডিভাইসটিকে একটি টাচ স্ক্রিন, টাচ প্যাড বা পয়েন্টার ডিভাইস হিসাবে শ্রেণীবদ্ধ করতে ব্যবহৃত হয়।

  • যদি touch.deviceType প্রপার্টি সেট করা থাকে, তাহলে ডিভাইসের ধরনটি নির্দেশিত হিসাবে সেট করা হয়।
  • যদি ইনপুট ডিভাইসটি INPUT_PROP_DIRECT ইনপুট বৈশিষ্ট্যের উপস্থিতি রিপোর্ট করে ( EVIOCGPROP ioctl এর মাধ্যমে), তাহলে ডিভাইসের ধরনটি স্পর্শ পর্দায় সেট করা হয়। এই শর্তটি অনুমান করে যে সরাসরি ইনপুট টাচ ডিভাইসগুলি একটি ডিসপ্লেতে সংযুক্ত রয়েছে যা সংযুক্ত রয়েছে।
  • যদি ইনপুট ডিভাইসটি INPUT_PROP_POINTER ইনপুট বৈশিষ্ট্যের উপস্থিতি রিপোর্ট করে ( EVIOCGPROP ioctl এর মাধ্যমে), তাহলে ডিভাইসের ধরন পয়েন্টারে সেট করা হয়।
  • যদি ইনপুট ডিভাইসটি REL_X বা REL_Y আপেক্ষিক অক্ষের উপস্থিতি রিপোর্ট করে, তাহলে ডিভাইসের ধরনটি স্পর্শ প্যাডে সেট করা হয়। এই অবস্থাটি ইনপুট ডিভাইসগুলির জন্য একটি অস্পষ্টতার সমাধান করে যাতে একটি মাউস এবং একটি টাচ প্যাড উভয়ই থাকে। এই ক্ষেত্রে, টাচ প্যাড পয়েন্টার নিয়ন্ত্রণ করতে ব্যবহার করা হয় না কারণ মাউস ইতিমধ্যে এটি নিয়ন্ত্রণ করে।
  • অন্যথায়, ডিভাইসের ধরন পয়েন্টারে সেট করা আছে। এই ডিফল্ট নিশ্চিত করে যে টাচ প্যাড যা অন্য কোন বিশেষ উদ্দেশ্যে মনোনীত করা হয়নি পয়েন্টার নিয়ন্ত্রণ করে।

বোতাম

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

নিম্নলিখিত বোতামগুলি সমর্থিত:

  • BTN_LEFT : MotionEvent.BUTTON_PRIMARY এ ম্যাপ করা হয়েছে৷BUTTON_PRIMARY৷
  • BTN_RIGHT : MotionEvent.BUTTON_SECONDARY এ ম্যাপ করা হয়েছে৷BUTTON_SECONDARY৷
  • BTN_MIDDLE : MotionEvent.BUTTON_MIDDLE এ ম্যাপ করা হয়েছে৷BUTTON_MIDDLE৷
  • BTN_BACK এবং BTN_SIDE : MotionEvent.BUTTON_BACK এ ম্যাপ করা হয়েছে৷BUTTON_BACK৷ এই বোতাম টিপলে কী কোড KeyEvent.KEYCODE_BACK এর সাথে একটি কী প্রেসও সংশ্লেষিত হয়।
  • BTN_FORWARD এবং BTN_EXTRA : MotionEvent.BUTTON_FORWARD এ ম্যাপ করা হয়েছে৷BUTTON_FORWARD৷ এই বোতাম টিপলে কী কোড KeyEvent.KEYCODE_FORWARD সহ একটি কী প্রেসও সংশ্লেষিত হয়।
  • BTN_STYLUS : MotionEvent.BUTTON_SECONDARY এ ম্যাপ করা হয়েছে৷BUTTON_SECONDARY৷
  • BTN_STYLUS2 : MotionEvent.BUTTON_TERTIARY এ ম্যাপ করা হয়েছে৷BUTTON_TERTIARY৷

টুল এবং টুলের ধরন

একটি টুল হল একটি আঙুল, লেখনী বা অন্যান্য যন্ত্রপাতি যা স্পর্শ ডিভাইসের সাথে যোগাযোগ করতে ব্যবহৃত হয়। কিছু স্পর্শ ডিভাইস বিভিন্ন ধরনের টুলের মধ্যে পার্থক্য করতে পারে।

Android এর অন্য কোথাও, MotionEvent API-এর মতো, একটি টুলকে প্রায়ই একটি পয়েন্টার হিসাবে উল্লেখ করা হয়।

নিম্নলিখিত সরঞ্জাম প্রকারগুলি সমর্থিত:

  • 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 এ ম্যাপ করা হয়েছে।

হভারিং বনাম স্পর্শ সরঞ্জাম

টুলগুলি হয় স্পর্শ ডিভাইসের সংস্পর্শে বা পরিসরে এবং এটির উপরে ঘোরাফেরা করতে পারে। সমস্ত স্পর্শ ডিভাইস স্পর্শ ডিভাইসের উপরে ঘোরাফেরা করা একটি টুলের উপস্থিতি অনুভব করতে পারে না। যেগুলি করে, যেমন RF-ভিত্তিক স্টাইলাস ডিজিটাইজার, প্রায়শই সনাক্ত করতে পারে যখন টুলটি ডিজিটাইজারের সীমিত পরিসরের মধ্যে থাকে।

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 : (ঐচ্ছিক) লিনাক্স মাল্টি-টাচ প্রোটোকল 'B' ব্যবহার করার সময় টুলের স্লট আইডি রিপোর্ট করে। আরো বিস্তারিত জানার জন্য Linux মাল্টি-টাচ প্রোটোকল ডকুমেন্টেশন পড়ুন।
    • 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 দ্বারা রিপোর্ট করা মানগুলি শূন্য হওয়া উচিত যখন টুলটি ডিভাইসে লম্ব হয়৷ একটি নন-জিরো টিল্ট নির্দেশ করে যে টুলটি একটি ঢোকে রাখা হয়েছে।

    X এবং 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 টুলের প্রকৃতি সম্পর্কে অন্তত কিছু তথ্য থাকতে হবে, হয় এটি স্পর্শ করছে কিনা বা অন্ততপক্ষে এর টুলের ধরন। যদি কোন তথ্য পাওয়া না যায়, তাহলে টুলটি নিষ্ক্রিয় (পরিসীমার বাইরে) বলে ধরে নেওয়া হয়।

    • মাল্টি-টাচ প্রোটোকল 'A' ব্যবহার করার সময়, টুলটি সক্রিয় থাকে যখনই এটি সাম্প্রতিক সিঙ্ক রিপোর্টে প্রদর্শিত হয়। যখন টুলটি সিঙ্ক রিপোর্টে উপস্থিত হওয়া বন্ধ করে, তখন এটির অস্তিত্ব বন্ধ হয়ে যায়।
    • মাল্টি-টাচ প্রোটোকল 'B' ব্যবহার করার সময়, টুলটি সক্রিয় থাকে যতক্ষণ না এটির একটি সক্রিয় স্লট থাকে। স্লটটি সাফ হয়ে গেলে, টুলটির অস্তিত্ব বন্ধ হয়ে যায়।
  • একটি টুল নিম্নোক্ত অবস্থার উপর ভিত্তি করে ঘোরাফেরা করার জন্য নির্ধারিত হয়:
    • যদি টুলটি BTN_TOOL_MOUSE বা BTN_TOOL_LENS হয়, তাহলে টুলটি ঘোরাফেরা করছে না, এমনকি যদি নিম্নলিখিত শর্তগুলির মধ্যে একটি সত্য হয়।
    • যদি টুলটি সক্রিয় থাকে এবং ড্রাইভার চাপের তথ্য জানায় এবং রিপোর্ট করা চাপ শূন্য হয়, তাহলে টুলটি ঘোরাফেরা করছে।
    • যদি টুলটি সক্রিয় থাকে এবং ড্রাইভার BTN_TOUCH কী কোড সমর্থন করে এবং BTN_TOUCH এর মান শূন্য থাকে, তাহলে টুলটি ঘোরাফেরা করছে।
  • InputReader মাল্টি-টাচ প্রোটোকল 'A' এবং 'B' উভয়কেই সমর্থন করে। নতুন ড্রাইভারদের 'বি' প্রোটোকল ব্যবহার করা উচিত কিন্তু হয় কাজ করে।
  • অ্যান্ড্রয়েড 4.0 অনুযায়ী, লিনাক্স ইনপুট প্রোটোকল স্পেসিফিকেশন মেনে চলতে টাচ স্ক্রিন ড্রাইভার পরিবর্তন করতে হতে পারে।

    নিম্নলিখিত পরিবর্তন প্রয়োজন হতে পারে:

    • যখন একটি টুল নিষ্ক্রিয় হয়ে যায় (আঙুল "উপরে" যায়), এটি পরবর্তী মাল্টি-টাচ সিঙ্ক রিপোর্টে উপস্থিত হওয়া বন্ধ করা উচিত। যখন সমস্ত সরঞ্জাম নিষ্ক্রিয় হয়ে যায় (সমস্ত আঙ্গুল "উপরে" যায়), ড্রাইভারকে একটি খালি সিঙ্ক রিপোর্ট প্যাকেট পাঠাতে হবে, যেমন SYN_MT_REPORT এর পরে SYN_REPORT

      অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলি প্রত্যাশিত "আপ" ইভেন্টগুলি 0 এর একটি চাপ মান পাঠিয়ে রিপোর্ট করা হবে৷ পুরানো আচরণটি Linux ইনপুট প্রোটোকল স্পেসিফিকেশনের সাথে বেমানান ছিল এবং এটি আর সমর্থিত নয়৷

    • শারীরিক চাপ বা সংকেত শক্তির তথ্য ABS_MT_PRESSURE ব্যবহার করে রিপোর্ট করা উচিত।

      Android এর পূর্ববর্তী সংস্করণগুলি ABS_MT_TOUCH_MAJOR থেকে চাপের তথ্য পুনরুদ্ধার করেছে। পুরানো আচরণ লিনাক্স ইনপুট প্রোটোকল স্পেসিফিকেশনের সাথে বেমানান ছিল এবং এটি আর সমর্থিত নয়।

    • স্পর্শ আকারের তথ্য ABS_MT_TOUCH_MAJOR ব্যবহার করে রিপোর্ট করা উচিত।

      Android এর পূর্ববর্তী সংস্করণগুলি ABS_MT_TOOL_MAJOR থেকে আকারের তথ্য পুনরুদ্ধার করেছে৷ পুরানো আচরণ লিনাক্স ইনপুট প্রোটোকল স্পেসিফিকেশনের সাথে বেমানান ছিল এবং এটি আর সমর্থিত নয়।

    টাচ ডিভাইস ড্রাইভারদের আর অ্যান্ড্রয়েড-নির্দিষ্ট কাস্টমাইজেশনের প্রয়োজন নেই। স্ট্যান্ডার্ড লিনাক্স ইনপুট প্রোটোকলের উপর নির্ভর করে, অ্যান্ড্রয়েড অপরিবর্তিত ড্রাইভার ব্যবহার করে বাহ্যিক HID মাল্টি-টাচ টাচ স্ক্রিনগুলির মতো বিস্তৃত বিভিন্ন ধরণের টাচ পেরিফেরালকে সমর্থন করতে পারে।

টাচ ডিভাইস অপারেশন

নীচে Android এ টাচ ডিভাইস অপারেশনের একটি সংক্ষিপ্ত সারসংক্ষেপ।

  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
কাঁচা অক্ষের নির্ভুলতা। যেমন 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

সংজ্ঞা: touch.deviceType = touchScreen | touchPad | pointer | default

স্পর্শ ডিভাইসের ধরন নির্দিষ্ট করে।

  • যদি মান touchScreen হয়, টাচ ডিভাইসটি একটি ডিসপ্লের সাথে যুক্ত একটি টাচ স্ক্রিন।

  • মানটি touchPad হলে, টাচ ডিভাইসটি একটি টাচ প্যাড যা ডিসপ্লের সাথে যুক্ত নয়।

  • যদি মানটি pointer হয়, তাহলে টাচ ডিভাইসটি একটি টাচ প্যাড যা একটি প্রদর্শনের সাথে যুক্ত নয় এবং এর গতিগুলি পরোক্ষ মাল্টি-টাচ পয়েন্টার অঙ্গভঙ্গির জন্য ব্যবহৃত হয়।

  • মান default হলে, সিস্টেম স্বয়ংক্রিয়ভাবে শ্রেণীবিভাগ অ্যালগরিদম অনুযায়ী ডিভাইসের ধরন সনাক্ত করে।

ডিভাইসের ধরন কীভাবে স্পর্শ ডিভাইসের আচরণকে প্রভাবিত করে সে সম্পর্কে আরও বিশদ বিবরণের জন্য শ্রেণিবিন্যাস বিভাগটি পড়ুন।

অ্যান্ড্রয়েড 3 এবং তার চেয়ে কম সময়ে, সমস্ত টাচ ডিভাইসকে টাচ স্ক্রিন বলে ধরে নেওয়া হয়েছিল।

touch.orientationAware

সংজ্ঞা: touch.orientationAware = 0 | 1

স্পর্শ ডিভাইসের অভিযোজন পরিবর্তনগুলি প্রদর্শন করা উচিত কিনা তা নির্দিষ্ট করে৷

  • মান 1 হলে, যখনই ডিসপ্লে ওরিয়েন্টেশন পরিবর্তন হয় তখন টাচ ডিভাইস দ্বারা রিপোর্ট করা টাচ পজিশন ঘোরানো হয়।

  • মান 0 হলে, স্পর্শ ডিভাইস দ্বারা রিপোর্ট করা স্পর্শ অবস্থানগুলি অভিযোজন পরিবর্তনগুলি প্রদর্শন করতে অনাক্রম্য।

ডিভাইসটি টাচ স্ক্রিন হলে ডিফল্ট মান 1 , অন্যথায় 0

সিস্টেমটি অভ্যন্তরীণ এবং বাহ্যিক টাচ স্ক্রিন এবং প্রদর্শনের মধ্যে পার্থক্য করে। অভ্যন্তরীণ ডিসপ্লের ওরিয়েন্টেশনের উপর ভিত্তি করে একটি ওরিয়েন্টেশন সচেতন অভ্যন্তরীণ টাচ স্ক্রিন ঘোরানো হয়। বাহ্যিক প্রদর্শনের অভিযোজনের উপর ভিত্তি করে একটি ওরিয়েন্টেশন সচেতন বাহ্যিক টাচ স্ক্রিন ঘোরানো হয়।

ওরিয়েন্টেশন সচেতনতা নেক্সাস ওয়ানের মতো ডিভাইসে টাচ স্ক্রিনের ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, যখন ডিভাইসটিকে ঘড়ির কাঁটার দিকে ঘোরানো হয় তার স্বাভাবিক স্থিতি থেকে 90 ডিগ্রি, স্পর্শের পরম অবস্থানগুলি এমনভাবে পুনরায় তৈরি করা হয় যে টাচ স্ক্রিনের পরম স্থানাঙ্ক সিস্টেমের উপরের-বাম কোণে একটি স্পর্শ উপরের-বাম দিকে একটি স্পর্শ হিসাবে রিপোর্ট করা হয় ডিসপ্লের ঘোরানো স্থানাঙ্ক সিস্টেমের কোণে। এটি করা হয় যাতে স্পর্শগুলি একই স্থানাঙ্ক সিস্টেমের সাথে রিপোর্ট করা হয় যা অ্যাপগুলি তাদের ভিজ্যুয়াল উপাদানগুলি আঁকতে ব্যবহার করে।

মধুচক্রের আগে, সমস্ত স্পর্শ ডিভাইসকে অভিযোজন সচেতন বলে ধরে নেওয়া হয়েছিল।

touch.gestureMode

সংজ্ঞা: touch.gestureMode = pointer | spots | default

পয়েন্টার অঙ্গভঙ্গির জন্য উপস্থাপনা মোড নির্দিষ্ট করে। এই কনফিগারেশন বৈশিষ্ট্যটি তখনই প্রাসঙ্গিক যখন স্পর্শ ডিভাইসটি টাইপ পয়েন্টার

  • যদি মানটি pointer হয়, টাচ প্যাড অঙ্গভঙ্গিগুলি মাউস পয়েন্টারের মতো কার্সারের মাধ্যমে উপস্থাপন করা হয়।

  • যদি মানটি spots হয়, তাহলে স্পর্শ প্যাড অঙ্গভঙ্গিগুলি একটি অ্যাঙ্কর দ্বারা উপস্থাপিত হয় যা অঙ্গভঙ্গির কেন্দ্রিক এবং বৃত্তাকার দাগের একটি সেট যা পৃথক আঙ্গুলের অবস্থানকে প্রতিনিধিত্ব করে।

INPUT_PROP_SEMI_MT ইনপুট বৈশিষ্ট্য সেট করা হলে ডিফল্ট মান pointer হয়, অথবা অন্যথায় spots

X এবং Y ক্ষেত্র

X এবং Y ক্ষেত্র যোগাযোগ এলাকার কেন্দ্রের জন্য অবস্থানগত তথ্য প্রদান করে।

হিসাব

গণনাটি সহজবোধ্য: টাচ ড্রাইভার থেকে অবস্থানগত তথ্য আউটপুট সমন্বয় সিস্টেমে রৈখিকভাবে ইন্টারপোলেট করা হয়।

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, সাইজ ফিল্ড

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 হলে, সিস্টেমটি geometric ক্রমাঙ্কন ব্যবহার করে যদি raw.touchMajor বা raw.toolMajor অক্ষ উপলব্ধ থাকে, অন্যথায় এটি none ক্রমাঙ্কন ব্যবহার করে না।

touch.size.scale

সংজ্ঞা: touch.size.scale = <a non-negative floating point number>

ক্রমাঙ্কনে ব্যবহৃত একটি ধ্রুবক স্কেল ফ্যাক্টর নির্দিষ্ট করে।

ডিফল্ট মান হল 1.0

touch.size.bias

সংজ্ঞা: touch.size.bias = <একটি অ-নেতিবাচক ভাসমান বিন্দু সংখ্যা>

ক্রমাঙ্কনে ব্যবহৃত একটি ধ্রুবক পক্ষপাত মান নির্দিষ্ট করে।

ডিফল্ট মান হল 0.0

touch.size.issummed

সংজ্ঞা: 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

সংজ্ঞা: 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 = none | interpolated | vector | default

ওরিয়েন্টেশনটি প্রতিবেদন করার জন্য টাচ ড্রাইভার দ্বারা ব্যবহৃত ধরণের পরিমাপ নির্দিষ্ট করে।

  • যদি মানটি none হয় তবে ওরিয়েন্টেশন অজানা তাই এটি 0 এ সেট করা আছে।
  • যদি মানটি interpolated হয় তবে ওরিয়েন্টেশনটি রৈখিকভাবে ইন্টারপোল্ট করা হয় যাতে raw.orientation.min মানচিত্র -PI/2 এর একটি কাঁচা মান এবং PI/2 থেকে raw.orientation.max মানচিত্রের একটি কাঁচা মান। (raw.orientation.min + raw.orientation.max) / 2 মানচিত্র 0 এর কেন্দ্রের মান।
  • যদি মানটি vector হয় তবে ওরিয়েন্টেশনটি দুটি স্বাক্ষরিত 4-বিট ক্ষেত্রের সমন্বিত একটি প্যাকড ভেক্টর হিসাবে ব্যাখ্যা করা হয়। এই প্রতিনিধিত্ব আতমেল অবজেক্ট ভিত্তিক প্রোটোকল অংশগুলিতে ব্যবহৃত হয়। যখন ডিকোড করা হয়, ভেক্টর একটি ওরিয়েন্টেশন কোণ এবং আত্মবিশ্বাসের পরিমাণ দেয়। আত্মবিশ্বাসের পরিমাণটি আকারের তথ্য স্কেল করতে ব্যবহৃত হয়, যদি না এটি জ্যামিতিক হয়।
  • যদি মানটি 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 = none | scaled | default

দূরত্বের প্রতিবেদন করার জন্য টাচ ড্রাইভার দ্বারা ব্যবহৃত ধরণের পরিমাপ নির্দিষ্ট করে।

  • যদি মানটি none হয় তবে দূরত্বটি অজানা তাই এটি 0 এ সেট করা আছে।

  • যদি মানটি scaled হয় তবে রিপোর্ট করা দূরত্বটি একটি ধ্রুবক স্কেল ফ্যাক্টর দ্বারা গুণিত হয়।

  • যদি মানটি default হয় তবে দূরত্বের অক্ষ উপলব্ধ থাকলে সিস্টেমটি scaled ক্যালিব্রেশন ব্যবহার করে, অন্যথায় none ব্যবহার করে না।

টাচ.ডিস্ট্যান্স.স্কেল

সংজ্ঞা: touch.distance.scale = <একটি অ-নেতিবাচক ভাসমান পয়েন্ট নম্বর>

ক্রমাঙ্কনটিতে ব্যবহৃত একটি ধ্রুবক স্কেল ফ্যাক্টর নির্দিষ্ট করে।

ডিফল্ট মান 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 থাকতে হবে।

একটি ভার্চুয়াল কী মানচিত্র ফাইল টাচ স্ক্রিনে ভার্চুয়াল কীগুলির স্থানাঙ্ক এবং লিনাক্স কী কোডগুলি বর্ণনা করে।

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

সিনট্যাক্স

ভার্চুয়াল কী মানচিত্রের ফাইলটি একটি সরল পাঠ্য ফাইল যা ভার্চুয়াল কী লেআউট বর্ণনার ক্রম সমন্বয়ে গঠিত হয় যা হয় নিউলাইনস দ্বারা বা কলোন দ্বারা পৃথক করা হয়।

মন্তব্য লাইনগুলি '#' দিয়ে শুরু হয় এবং লাইনের শেষে চালিয়ে যান।

প্রতিটি ভার্চুয়াল কী 6 টি কোলন-অনুমোদিত উপাদান দ্বারা বর্ণিত হয়:

  • 0x01 : একটি সংস্করণ কোড। সর্বদা 0x01 হতে হবে।
  • <লিনাক্স কী কোড>: ভার্চুয়াল কী এর লিনাক্স কী কোড।
  • <সেন্টারএক্স>: ভার্চুয়াল কীটির কেন্দ্রের এক্স পিক্সেল স্থানাঙ্ক।
  • <সেন্টারি>: ভার্চুয়াল কীটির কেন্দ্রের y পিক্সেল সমন্বয়।
  • <প্রস্থ>: পিক্সেলের ভার্চুয়াল কীটির প্রস্থ।
  • <উচ্চতা>: পিক্সেলগুলিতে ভার্চুয়াল কীটির উচ্চতা।

সমস্ত স্থানাঙ্ক এবং আকারগুলি ডিসপ্লে সমন্বয় সিস্টেমের ক্ষেত্রে নির্দিষ্ট করা হয়।

এখানে একটি ভার্চুয়াল কী মানচিত্রের ফাইলটি একটি লাইনে লেখা সমস্ত।

# 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

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

মূল চরিত্রের মানচিত্র ফাইল: /system/usr/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 এর জন্য সমর্থন al চ্ছিক। তবে, যদি আপনার ডিভাইস এটি সমর্থন করে তবে নিশ্চিত করুন যে রেজোলিউশনটি সঠিকভাবে সেট করা আছে।

  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 ফাইলটিতে সংশ্লিষ্ট সিসপ্রপ কমান্ড যুক্ত করুন:

    setprop persist.device_config.input_native_boot.palm_rejection_enabled 1
    

আরও পড়া