File konfigurasi perangkat input (file .idc
) berisi file khusus perangkat
dan properti konfigurasi yang memengaruhi perilaku perangkat input.
File konfigurasi perangkat input biasanya tidak diperlukan untuk seperti {i>keyboard<i} dan {i>mouse<i} HID karena perilaku sistem default biasanya dapat memastikan bahwa mereka akan bisa langsung digunakan. Di sisi lain, perangkat tersemat bawaan, khususnya layar sentuh, hampir selalu memerlukan file konfigurasi perangkat input untuk menentukan perilakunya.
Argumentasi
Android otomatis mendeteksi dan mengonfigurasi sebagian besar kemampuan perangkat input berdasarkan jenis dan properti peristiwa yang dilaporkan oleh properti Driver perangkat input kernel Linux.
Misalnya, jika perangkat input mendukung jenis dan kode peristiwa EV_REL
REL_X
dan REL_Y
serta jenis peristiwa EV_KEY
dan BTN_MOUSE
,
maka Android akan mengklasifikasikan perangkat
input sebagai {i>mouse<i}. Perilaku default
untuk {i>mouse<i} adalah untuk menampilkan kursor pada layar yang melacak gerakan {i>mouse<i}
dan menyimulasikan sentuhan saat mouse diklik. Meskipun {i>mouse<i} dapat
dikonfigurasi secara berbeda, perilaku {i>default<i} biasanya sudah cukup untuk
periferal mouse standar.
Class perangkat input tertentu lebih ambigu. Misalnya, multi-sentuh
layar sentuh dan touchpad mendukung kode dan jenis peristiwa EV_ABS
Minimum ABS_MT_POSITION_X
dan ABS_MT_POSITION_Y
. Namun, tujuan utama
penggunaan kedua perangkat tersebut sangat berbeda
dan tidak selalu dapat ditentukan
secara otomatis. Selain itu, informasi tambahan diperlukan untuk memahami
informasi tekanan dan ukuran yang dilaporkan oleh perangkat sentuh. Oleh karena itu, perangkat sentuh
terutama layar sentuh bawaan, biasanya membutuhkan file IDC.
Lokasi
File konfigurasi perangkat input ditemukan berdasarkan vendor USB, produk (dan (opsional versi)) atau dengan nama perangkat input.
Jalur berikut digunakan secara berurutan.
/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
Ketika membuat jalur file yang berisi nama perangkat, semua karakter pada nama perangkat selain '0'-'9', 'a'-'z', 'A'-'Z', '-' atau '_' akan diganti dengan '_'.
Sintaksis
File konfigurasi perangkat input adalah file teks biasa yang terdiri dari properti tugas dan komentar.
Properti
Penetapan properti masing-masing terdiri dari nama properti, =
, nilai properti,
dan sebuah baris baru. Seperti ini:
property = value
Nama properti adalah ID teks literal yang tidak kosong. Tidak boleh berisi spasi kosong. Setiap komponen sistem input menentukan kumpulan properti yang digunakan untuk mengonfigurasi fungsinya.
Nilai properti adalah literal string, bilangan bulat, atau angka floating point yang tidak kosong.
Kunci utama tidak boleh berisi spasi kosong atau karakter khusus \
atau "
.
Nama dan nilai properti peka huruf besar/kecil.
Komentar
Baris komentar dimulai dengan '#' dan terus sampai ke akhir baris. Seperti ini:
# A comment!
Baris kosong akan diabaikan.
Contoh
# 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...
Properti umum
Properti berikut umum untuk semua class perangkat input.
Lihat dokumentasi setiap class perangkat input untuk mengetahui informasi tentang properti khusus yang digunakan oleh setiap class.
device.internal
Definisi: device.internal
= 0
| 1
Menentukan apakah perangkat input merupakan komponen bawaan internal, bukan komponen periferal yang terpasang secara eksternal (kemungkinan besar dapat dilepas).
-
Jika nilainya
0
, berarti perangkat bersifat eksternal. -
Jika nilainya
1
, berarti perangkat merupakan internal. -
Jika nilai tidak ditentukan, nilai defaultnya adalah
0
untuk semua perangkat di USB (BUS_USB) atau Bluetooth (BUS_BLUETOOTH),1
jika tidak.
Properti ini menentukan keputusan kebijakan default terkait peristiwa bangun.
Perangkat input internal umumnya tidak membangunkan layar dari mode tidur kecuali secara eksplisit dikonfigurasi untuk melakukannya di file tata letak kunci atau dalam aturan kebijakan hardcode. Ini mencegah penekanan tombol dan sentuhan membangunkan ponsel secara tidak sah saat berada di saku Anda. Biasanya hanya ada beberapa kecil tombol bangun yang ditentukan.
Sebaliknya, perangkat input eksternal biasanya membangunkan perangkat lebih agresif karena dianggap dimatikan atau tidak dicolokkan selama pengiriman. Misalnya, menekan tombol apa pun pada {i>keyboard<i} eksternal adalah indikator yang baik bahwa pengguna menginginkan perangkat untuk bangun dan merespons.
Penting untuk memastikan bahwa nilai properti device.internal
ditetapkan
dengan benar untuk semua perangkat input internal.
Validasi
Pastikan untuk memvalidasi file konfigurasi perangkat input menggunakan Alat Validasi Keymap.