فایلهای پیکربندی دستگاه ورودی (.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
هنگام ساختن مسیر فایل که حاوی نام دستگاه است، همه نویسههای موجود در نام دستگاه بهغیراز «۰» تا «۹»، «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باشد، دستگاه داخلی است. -
اگر مقدار مشخص نشده باشد، مقدار پیشفرض
0برای همه دستگاههای گذرگاه USB (BUS_USB) یا بلوتوث (BUS_BLUETOOTH) و1برای بقیه موارد است.
این دارایی تصمیمات خطمشی پیشفرض را درباره رویدادهای بیداری تعیین میکند.
دستگاههای ورودی داخلی معمولاً نمایشگر را از حالت خواب بیدار نمیکنند، مگراینکه صریحاً در فایل چیدمان کلید یا در قانون خطمشی کدگذاریشده برای انجام این کار پیکربندی شده باشند. این تمایز مانع میشود که فشار دادن کلیدها و لمسها بهطور ناخواسته تلفن را وقتی در جیبتان است بیدار کند. معمولاً فقط تعداد کمی کلید فعالسازی تعریف شده است.
برعکس، دستگاههای ورودی خارجی معمولاً دستگاه را با شدت بیشتری بیدار میکنند زیرا فرض بر این است که درطول حملونقل خاموش هستند یا به برق وصل نیستند. برای مثال، فشار دادن هر کلیدی در صفحهکلید خارجی نشانگر خوبی است که کاربر میخواهد دستگاه بیدار شود و پاسخ دهد.
مهم است که مطمئن شوید مقدار دارایی device.internal برای همه دستگاههای ورودی داخلی بهدرستی تنظیم شده باشد.
اعتبارسنجی
حتماً فایلهای پیکربندی دستگاه ورودیتان را بااستفاده از ابزار اعتبارسنجی نگاشتهای کلید اعتبارسنجی کنید.