Tệp cấu hình thiết bị đầu vào

Tệp cấu hình thiết bị đầu vào (tệp .idc) chứa các thuộc tính cấu hình dành riêng cho thiết bị ảnh hưởng đến hành vi của thiết bị đầu vào.

Tệp cấu hình thiết bị đầu vào thường không cần thiết đối với quy trình chuẩn các thiết bị ngoại vi như bàn phím HID và chuột do hoạt động mặc định của hệ thống thường đảm bảo rằng chúng sẽ hoạt động tốt. Mặt khác, các thiết bị nhúng tích hợp, đặc biệt là màn hình cảm ứng, hầu như luôn yêu cầu tệp cấu hình thiết bị đầu vào để chỉ định hành vi của chúng.

Lý do

Android tự động phát hiện và định cấu hình hầu hết các chức năng của thiết bị đầu vào dựa trên các loại sự kiện và thuộc tính được báo cáo theo Trình điều khiển thiết bị đầu vào nhân hệ điều hành Linux.

Ví dụ: nếu một thiết bị đầu vào hỗ trợ loại sự kiện EV_REL và mã REL_XREL_Y cũng như loại sự kiện EV_KEYBTN_MOUSE, thì Android sẽ phân loại thiết bị đầu vào đó là chuột. Hành vi mặc định đối với chuột là để hiển thị một con trỏ trên màn hình theo dõi chuyển động của chuột và mô phỏng các thao tác chạm khi nhấp chuột. Mặc dù bạn có thể định cấu hình chuột theo cách khác, nhưng hành vi mặc định thường là đủ cho các thiết bị ngoại vi chuột tiêu chuẩn.

Một số lớp thiết bị đầu vào nhất định lại mơ hồ hơn. Ví dụ: màn hình cảm ứng đa điểm và bàn di chuột đều hỗ trợ loại sự kiện EV_ABS và các mã ABS_MT_POSITION_XABS_MT_POSITION_Y ở mức tối thiểu. Tuy nhiên, mục đích sử dụng của các thiết bị này khá khác nhau và không phải lúc nào cũng có thể xác định được tự động. Ngoài ra, bạn cần có thêm thông tin để hiểu rõ thông tin về áp lực và kích thước do thiết bị cảm ứng báo cáo. Do đó, các thiết bị cảm ứng, đặc biệt là màn hình cảm ứng tích hợp, thường cần tệp IDC.

Vị trí

Tệp cấu hình của thiết bị đầu vào được định vị theo nhà cung cấp USB, sản phẩm (và phiên bản (không bắt buộc) hoặc theo tên thiết bị đầu vào.

Các đường dẫn sau được tham khảo theo thứ tự.

  • /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

Khi tạo đường dẫn tệp chứa tên thiết bị, tất cả ký tự trong tên thiết bị ngoại trừ "0"-"9", "a"-"z", "A"-"Z", "-" hoặc "_" sẽ được thay thế bằng "_".

Cú pháp

Tệp cấu hình thiết bị đầu vào là một tệp văn bản thuần tuý bao gồm các chỉ định thuộc tính và nhận xét.

Thuộc tính

Mỗi lượt gán thuộc tính bao gồm một tên thuộc tính, một =, một giá trị thuộc tính và một dòng mới. Ví dụ:

property = value

Tên thuộc tính là giá trị nhận dạng văn bản cố định không trống. Tên không được chứa khoảng trắng. Mỗi thành phần của hệ thống đầu vào xác định một tập hợp các thuộc tính dùng để định cấu hình chức năng.

Giá trị thuộc tính là giá trị cố định dạng chuỗi không trống, số nguyên hoặc số dấu phẩy động. Các giá trị này không được chứa khoảng trắng hoặc các ký tự dành riêng \ hoặc ".

Tên và giá trị thuộc tính phân biệt chữ hoa chữ thường.

Bình luận

Các dòng nhận xét bắt đầu bằng "#" và tiếp tục đến cuối dòng. Ví dụ:

# A comment!

Hệ thống sẽ bỏ qua các dòng trống.

Ví dụ

# 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...

Thuộc tính phổ biến

Thuộc tính sau đây là thuộc tính chung cho tất cả các lớp thiết bị đầu vào.

Hãy tham khảo tài liệu của từng lớp thiết bị đầu vào để biết thông tin về các thuộc tính đặc biệt mà mỗi lớp sử dụng.

device.internal

Định nghĩa: device.internal = 0 | 1

Chỉ định xem thiết bị đầu vào là thành phần tích hợp nội bộ hay thiết bị ngoại vi được gắn bên ngoài (rất có thể là thiết bị có thể tháo rời).

  • Nếu giá trị là 0, thì thiết bị là bên ngoài.

  • Nếu giá trị là 1, thì thiết bị là thiết bị nội bộ.

  • Nếu bạn không chỉ định giá trị này, giá trị mặc định sẽ là 0 đối với mọi thiết bị trên Xe buýt USB (BUS_USB) hoặc Bluetooth (BUS_BLUETOOTH), nếu không thì 1.

Thuộc tính này xác định các quyết định mặc định về chính sách liên quan đến sự kiện đánh thức.

Các thiết bị đầu vào nội bộ thường không đánh thức màn hình khỏi trạng thái ngủ trừ khi được định cấu hình rõ ràng để làm như vậy trong tệp bố cục phím hoặc trong quy tắc chính sách được mã hoá cứng. Chiến dịch này điểm khác biệt ngăn việc nhấn và nhấn phím để đánh thức điện thoại của bạn một cách dễ dàng khi thiết bị ở trong túi bạn. Thường thì chỉ có một số ít khoá đánh thức được xác định.

Ngược lại, các thiết bị đầu vào bên ngoài thường đánh thức thiết bị mạnh mẽ hơn vì các thiết bị này được giả định là đã tắt hoặc không được cắm trong quá trình vận chuyển. Ví dụ: nhấn phím bất kỳ trên bàn phím bên ngoài là một chỉ báo tốt rằng người dùng muốn để đánh thức và phản hồi.

Điều quan trọng là phải đảm bảo rằng giá trị của thuộc tính device.internal được đặt đúng cách cho tất cả các thiết bị đầu vào nội bộ.

Xác nhận kết quả

Hãy nhớ xác thực các tệp cấu hình thiết bị đầu vào bằng công cụ Xác thực bản đồ phím.