อินพุตไฟล์การกำหนดค่าอุปกรณ์ (.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
แสดงว่าอุปกรณ์เป็นแบบภายใน -
หากไม่ได้ระบุค่า ค่าเริ่มต้นจะเป็น
0
สำหรับอุปกรณ์ทั้งหมดในบัส USB (BUS_USB) หรือบลูทูธ (BUS_BLUETOOTH) หรือ1
พร็อพเพอร์ตี้นี้จะกำหนดการตัดสินใจด้านนโยบายเริ่มต้นเกี่ยวกับกิจกรรมการปลุกระบบ
โดยทั่วไปแล้ว อุปกรณ์อินพุตภายในจะไม่ปลุกจอแสดงผลจากโหมดสลีป เว้นแต่จะมีการกําหนดค่าให้ทําเช่นนั้นอย่างชัดเจนในไฟล์เลย์เอาต์คีย์หรือในกฎนโยบายแบบฮาร์ดโค้ด การแยกแยะนี้จะช่วยป้องกันไม่ให้การกดแป้นและการสัมผัสทำให้โทรศัพท์ตื่นขึ้นโดยไม่ได้ตั้งใจเมื่ออยู่ในกระเป๋า ปกติแล้วจะมีแป้นปลุกระบบอยู่ไม่กี่แป้นเท่านั้น
ในทางกลับกัน อุปกรณ์อินพุตภายนอกมักจะปลุกอุปกรณ์ในเชิงรุกมากขึ้น เนื่องจากระบบจะถือว่าอุปกรณ์ปิดอยู่หรือไม่ได้เสียบปลั๊กระหว่างการขนส่ง ตัวอย่างเช่น การกดแป้นใดๆ บนแป้นพิมพ์ภายนอกเป็นตัวบ่งชี้ที่ดีว่าผู้ใช้ต้องการ เพื่อปลุกระบบและตอบสนอง
คุณต้องตรวจสอบว่าได้ตั้งค่าของพร็อพเพอร์ตี้ device.internal
ให้ถูกต้องสำหรับอุปกรณ์อินพุตภายในทั้งหมด
การตรวจสอบความถูกต้อง
อย่าลืมตรวจสอบไฟล์การกําหนดค่าอุปกรณ์อินพุตโดยใช้เครื่องมือตรวจสอบแมปแป้นพิมพ์