ইনপুট ডিভাইস কনফিগারেশন ফাইল (.idc ফাইল)-এ ডিভাইস-নির্দিষ্ট
কনফিগারেশন প্রপার্টি থাকে যা ইনপুট ডিভাইসের আচরণকে প্রভাবিত করে।
ইনপুট ডিভাইস কনফিগারেশন ফাইল সাধারণত HID কীবোর্ড ও মাউসের মতো স্ট্যান্ডার্ড পেরিফেরালের জন্য প্রয়োজন হয় না, কারণ ডিফল্ট সিস্টেম আচরণ সাধারণত নিশ্চিত করে যে সেগুলি বক্সের বাইরে কাজ করবে। অন্যদিকে, বিল্ট-ইন এম্বেডেড ডিভাইস, বিশেষ করে টাচ স্ক্রিন, প্রায় সবসময়ই তাদের আচরণ নির্দিষ্ট করার জন্য ইনপুট ডিভাইস কনফিগারেশন ফাইল প্রয়োজন হয়।
যুক্তিসহ ব্যাখ্যা
Android অটোমেটিক বেশিরভাগ ইনপুট ডিভাইসের ক্ষমতা শনাক্ত ও কনফিগার করে যা সংশ্লিষ্ট Linux কার্নেল ইনপুট ডিভাইস ড্রাইভারের রিপোর্ট করা ইভেন্টের ধরন ও প্রপার্টির উপর ভিত্তি করে করা হয়।
যেমন, কোনও ইনপুট ডিভাইস যদি EV_REL ইভেন্টের ধরন ও কোড
REL_X এবং REL_Y-এর পাশাপাশি EV_KEY ইভেন্টের ধরন ও BTN_MOUSE-কে সাপোর্ট করে,
তাহলে Android সেই ইনপুট ডিভাইসকে মাউস হিসেবে শ্রেণীবদ্ধ করবে। মাউসের ডিফল্ট আচরণ হল
স্ক্রিনে একটি কার্সর দেখানো যা মাউসের মুভমেন্ট ট্র্যাক করে
এবং মাউসে ক্লিক করা হলে টাচ সিমুলেট করে। যদিও মাউসকে
আলাদাভাবে কনফিগার করা যেতে পারে, তবে ডিফল্ট আচরণ সাধারণত
স্ট্যান্ডার্ড মাউস পেরিফেরালের জন্য যথেষ্ট।
ইনপুট ডিভাইসের নির্দিষ্ট কিছু ক্লাস আরও বেশি অস্পষ্ট। যেমন, মাল্টি-টাচ
টাচস্ক্রিন এবং টাচপ্যাড উভয়ই কমপক্ষে EV_ABS ইভেন্টের ধরন এবং কোড
ABS_MT_POSITION_X এবং ABS_MT_POSITION_Y-এ কাজ করে। তবে, এইসব ডিভাইসের উদ্দেশ্যপূর্ণ
ব্যবহারগুলি বেশ আলাদা এবং সবসময় অটোমেটিক
নির্ধারণ করা যায় না। এছাড়াও, টাচ ডিভাইস থেকে পাওয়া
প্রেশার ও সাইজ সংক্রান্ত তথ্য বুঝতে অতিরিক্ত তথ্য প্রয়োজন। তাই টাচ ডিভাইস,
বিশেষ করে বিল্ট-ইন টাচ স্ক্রিনের জন্য সাধারণত IDC ফাইলের প্রয়োজন হয়।
লোকেশন
ইনপুট ডিভাইস কনফিগারেশন ফাইলগুলি USB ভেন্ডর, প্রোডাক্ট (এবং ঐচ্ছিকভাবে সংস্করণ) আইডি বা ইনপুট ডিভাইসের নাম দ্বারা অবস্থিত।
নিম্নলিখিত পাথগুলি ক্রমানুসারে পরামর্শ করা হয়।
/product/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc/system_ext/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc/odm/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc/vendor/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc/system/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc/data/system/devices/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc/product/usr/idc/Vendor_XXXX_Product_XXXX.idc/system_ext/usr/idc/Vendor_XXXX_Product_XXXX.idc/odm/usr/idc/Vendor_XXXX_Product_XXXX.idc/vendor/usr/idc/Vendor_XXXX_Product_XXXX.idc/system/usr/idc/Vendor_XXXX_Product_XXXX.idc/data/system/devices/idc/Vendor_XXXX_Product_XXXX.idc/product/usr/idc/device-name.idc/system_ext/usr/idc/device-name.idc/odm/usr/idc/device-name.idc/vendor/usr/idc/device-name.idc/system/usr/idc/device-name.idc/data/system/devices/idc/device-name.idc
ডিভাইসের নাম থাকা ফাইল পাথ তৈরি করার সময়, ডিভাইসের নামের মধ্যে '0'-'9', 'a'-'z', 'A'-'Z', '-' বা '_' ছাড়া অন্য সব অক্ষর '_' দিয়ে পাল্টে দেওয়া হয়।
সিনট্যাক্স
ইনপুট ডিভাইস কনফিগারেশন ফাইল হল একটি সাধারণ টেক্সট ফাইল যাতে প্রপার্টি অ্যাসাইনমেন্ট ও কমেন্ট থাকে।
প্রপার্টি
প্রতিটি প্রপার্টি অ্যাসাইনমেন্টে একটি প্রপার্টির নাম, একটি =, একটি প্রপার্টির ভ্যালু
এবং একটি নতুন লাইন থাকে। যেমন:
property = value
প্রপার্টির নাম হল খালি নয় এমন আক্ষরিক টেক্সট শনাক্তকারী। সেগুলিতে কোনও হোয়াইটস্পেস থাকা চলবে না। ইনপুট সিস্টেমের প্রতিটি কম্পোনেন্ট প্রপার্টির একটি সেট নির্ধারণ করে যা এর ফাংশন কনফিগার করতে ব্যবহার করা হয়।
প্রপার্টির ভ্যালু হল খালি নয় এমন স্ট্রিং লিটারেল, পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট নম্বর।
এগুলিতে হোয়াইটস্পেস বা রিজার্ভ করা অক্ষর \ বা " থাকলে চলবে না।
প্রপার্টির নাম ও ভ্যালুতে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয়।
কমেন্ট
কমেন্ট লাইন '#' দিয়ে শুরু হয় এবং লাইনের শেষ পর্যন্ত চলতে থাকে। যেমন:
# A comment!
ফাঁকা লাইন এড়িয়ে যাওয়া হয়।
উদাহরণ
# This is an example of an input device configuration file. # It might be used to describe the characteristics of a built-in touch screen. # This is an internal device, not an external peripheral attached to the USB # or Bluetooth bus. device.internal = 1 # The device should behave as a touch screen, which uses the same orientation # as the built-in display. touch.deviceType = touchScreen touch.orientationAware = 1 # Additional calibration properties... # etc...
সাধারণ প্রপার্টি
নিম্নলিখিত প্রপার্টি সব ইনপুট ডিভাইস ক্লাসের জন্য সাধারণ।
প্রতিটি ইনপুট ডিভাইস ক্লাসের ডকুমেন্টেশন থেকে প্রতিটি ক্লাসের ব্যবহার করা বিশেষ প্রপার্টি সম্পর্কে তথ্য পান।
device.internal
সংজ্ঞা: device.internal = 0 | 1
ইনপুট ডিভাইসটি কি এক্সটার্নালি অ্যাটাচ করা (বেশিরভাগ ক্ষেত্রে সরিয়ে দেওয়া যায়) পেরিফেরাল নাকি অভ্যন্তরীণ বিল্ট-ইন কম্পোনেন্ট তা উল্লেখ করে।
-
ভ্যালু
0হলে, ডিভাইসটি এক্সটার্নাল। -
ভ্যালু
1হলে, ডিভাইসটি ইন্টার্নাল। -
ভ্যালু উল্লেখ করা না থাকলে, USB (BUS_USB) বা ব্লুটুথ (BUS_BLUETOOTH) বাসের সব ডিভাইসের জন্য ডিফল্ট ভ্যালু হল
0, অন্যথায়1।
ওয়েক ইভেন্ট সংক্রান্ত ডিফল্ট নীতিগত সিদ্ধান্ত এই প্রপার্টি নির্ধারণ করে।
সাধারণত ইন্টার্নাল ইনপুট ডিভাইস, ডিসপ্লেকে স্লিপ মোড থেকে জাগিয়ে তোলে না, যতক্ষণ না কী লেআউট ফাইলে বা হার্ডকোডেড নীতি নিয়মে তা করার জন্য স্পষ্টভাবে কনফিগার করা হয়। এই পার্থক্যটি আপনার ফোন পকেটে থাকার সময় ভুলবশত কোনও কী প্রেস বা টাচ করার কারণে ফোন চালু হওয়া প্রতিরোধ করে। সাধারণত, খুব কম সংখ্যক ওয়েক কী সংজ্ঞায়িত করা হয়।
অন্যদিকে, এক্সটার্নাল ইনপুট ডিভাইস সাধারণত ডিভাইসকে আরও বেশি করে জাগিয়ে তোলে, কারণ সেগুলি ট্রান্সপোর্টের সময় বন্ধ বা প্লাগ-ইন করা নেই বলে ধরে নেওয়া হয়। যেমন, এক্সটার্নাল কীবোর্ডের কোনও কী প্রেস করা হল একটি ভাল ইঙ্গিত যে ব্যবহারকারী চান ডিভাইসটি জেগে উঠুক এবং উত্তর দিক।
সব ইন্টার্নাল ইনপুট ডিভাইসের জন্য device.internal প্রপার্টির ভ্যালু সঠিকভাবে সেট করা আছে কিনা তা
নিশ্চিত করা গুরুত্বপূর্ণ।
যাচাইকরণ
কীম্যাপ যাচাই করুন টুল ব্যবহার করে আপনার ইনপুট ডিভাইস কনফিগারেশন ফাইল যাচাই করতে ভুলবেন না।