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

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

การตรวจสอบ

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

,

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

การตรวจสอบ

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