ไฟล์การกำหนดค่าอุปกรณ์อินพุต

ไฟล์การกำหนดค่าอุปกรณ์อินพุต (ไฟล์ .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 ให้ถูกต้องสำหรับอุปกรณ์อินพุตภายในทั้งหมด

การตรวจสอบความถูกต้อง

อย่าลืมตรวจสอบไฟล์การกําหนดค่าอุปกรณ์อินพุตโดยใช้เครื่องมือตรวจสอบแมปแป้นพิมพ์