輸入裝置的設定檔 (.idc
檔案) 含有裝置專屬的設定檔
設定屬性,藉此影響輸入裝置的行為。
輸入裝置的設定檔通常不需要輸入標準 HID 鍵盤和滑鼠等周邊裝置,因為系統是預設的系統行為 通常可確保它們立即可用另一方面 內建裝置,尤其是觸控螢幕 需要輸入裝置的設定檔來指定行為。
原因
Android 會自動偵測並設定大部分的輸入裝置功能 將相關事件回報的事件類型和屬性 Linux kernel 輸入裝置驅動程式。
舉例來說,如果輸入裝置支援 EV_REL
事件類型和代碼
REL_X
和 REL_Y
,以及 EV_KEY
事件類型和 BTN_MOUSE
,
則 Android 會將輸入裝置歸類為滑鼠預設行為
會顯示遊標移動畫面的遊標
並模擬點選滑鼠時的觸控動作。雖然滑鼠
預設行為通常已足以應付
標準滑鼠週邊裝置。
某些輸入裝置類別較為模糊。例如:多點觸控
觸控螢幕和觸控面板都支援 EV_ABS
事件類型和代碼
最低價格為 ABS_MT_POSITION_X
和 ABS_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
屬性的值
正確定義所有內部輸入裝置
驗證
請務必使用以下程式碼驗證輸入裝置的設定檔: 驗證按鍵對應配置工具。