File konfigurasi perangkat input (file .idc
) berisi properti konfigurasi
khusus perangkat yang memengaruhi perilaku perangkat input.
File konfigurasi perangkat input biasanya tidak diperlukan untuk periferal standar seperti keyboard dan mouse HID karena perilaku sistem default biasanya memastikan bahwa perangkat tersebut akan berfungsi secara otomatis. Di sisi lain, perangkat tersemat bawaan, terutama 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 peristiwa EV_REL
dan kode
REL_X
dan REL_Y
serta jenis peristiwa EV_KEY
dan BTN_MOUSE
,
Android akan mengklasifikasikan perangkat input sebagai mouse. Perilaku default
untuk mouse adalah menampilkan kursor di layar yang melacak gerakan mouse
dan menyimulasikan sentuhan saat mouse diklik. Meskipun mouse dapat
dikonfigurasi secara berbeda, perilaku default biasanya sudah memadai untuk
periferal mouse standar.
Kelas 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, penggunaan
perangkat ini yang dimaksudkan 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 memerlukan file IDC.
Lokasi
File konfigurasi perangkat input terletak berdasarkan vendor USB, ID produk (dan versi opsional) atau berdasarkan nama perangkat input.
Jalur berikut akan dikonsultasikan secara berurutan.
/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
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
Setiap penetapan properti terdiri dari nama properti, =
, nilai properti,
dan 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 bilangan floating point yang tidak kosong.
Nama tidak boleh berisi spasi kosong atau karakter yang dicadangkan \
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 mengaktifkan layar dari mode tidur kecuali jika dikonfigurasi secara eksplisit untuk melakukannya dalam 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 Peta Tombol.