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