File konfigurasi perangkat input

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 secara otomatis mendeteksi dan mengonfigurasi sebagian besar kemampuan perangkat input berdasarkan jenis dan properti peristiwa yang dilaporkan oleh driver perangkat input kernel Linux terkait.

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.

Class perangkat input tertentu lebih ambigu. Misalnya, layar sentuh multi-sentuh dan touchpad mendukung jenis peristiwa EV_ABS dan kode ABS_MT_POSITION_X dan ABS_MT_POSITION_Y minimal. 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

Saat membuat jalur file yang berisi nama perangkat, semua karakter dalam 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 penetapan properti 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 berlanjut 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 bersifat 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 adalah komponen bawaan internal, bukan periferal yang terpasang secara eksternal (kemungkinan besar dapat dilepas).

  • Jika nilainya 0, perangkat bersifat eksternal.

  • Jika nilainya 1, perangkat bersifat internal.

  • Jika nilai tidak ditentukan, nilai defaultnya adalah 0 untuk semua perangkat di bus USB (BUS_USB) atau Bluetooth (BUS_BLUETOOTH), jika tidak, 1.

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. Perbedaan ini mencegah tombol ditekan dan sentuhan secara tidak sengaja mengaktifkan ponsel saat berada di saku Anda. Biasanya hanya ada beberapa tombol wake yang ditentukan.

Sebaliknya, perangkat input eksternal biasanya mengaktifkan perangkat secara lebih agresif karena perangkat tersebut diasumsikan dinonaktifkan atau tidak dicolokkan selama transportasi. Misalnya, menekan tombol apa pun pada keyboard eksternal adalah indikator yang baik bahwa pengguna ingin perangkat aktif 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.