輸入裝置的設定檔

輸入裝置的設定檔 (.idc 檔案) 含有裝置專屬的設定檔 設定屬性,藉此影響輸入裝置的行為。

輸入裝置的設定檔通常不需要輸入標準 HID 鍵盤和滑鼠等周邊裝置,因為系統是預設的系統行為 通常可確保它們立即可用另一方面 內建裝置,尤其是觸控螢幕 需要輸入裝置的設定檔來指定行為。

原因

Android 會自動偵測並設定大部分的輸入裝置功能 將相關事件回報的事件類型和屬性 Linux kernel 輸入裝置驅動程式。

舉例來說,如果輸入裝置支援 EV_REL 事件類型和代碼 REL_XREL_Y,以及 EV_KEY 事件類型和 BTN_MOUSE, 則 Android 會將輸入裝置歸類為滑鼠預設行為 會顯示遊標移動畫面的遊標 並模擬點選滑鼠時的觸控動作。雖然滑鼠 預設行為通常已足以應付 標準滑鼠週邊裝置。

某些輸入裝置類別較為模糊。例如:多點觸控 觸控螢幕和觸控面板都支援 EV_ABS 事件類型和代碼 最低價格為 ABS_MT_POSITION_XABS_MT_POSITION_Y。不過,預期的動作 這些裝置的使用情形差異很大,不一定每次都能判斷 。此外,您還必須提供額外資訊,以便瞭解 觸控裝置回報的壓力與大小資訊。也就是提供觸控裝置 尤其是內建觸控螢幕,通常需要 IDC 檔案。

位置

輸入裝置的設定檔按 USB 供應商、產品 ( (選用版本) ID 或輸入裝置名稱。

以下將依序查詢下列路徑。

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

屬性名稱是非空白的常值文字 ID。不得包含 空白字元。輸入系統的每個元件會定義一組屬性 用於設定函式

屬性值不是空白字串常值、整數或浮點數。 不得包含空白字元或保留字元 \"

屬性名稱和值須區分大小寫。

留言

註解行以「#」開頭然後繼續跳到線條結尾就像這樣:

# 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 屬性的值 正確定義所有內部輸入裝置

驗證

請務必使用以下程式碼驗證輸入裝置的設定檔: 驗證按鍵對應配置工具。