android kl(key layout)文件是一個映射文件,是標準linux與anroid的鍵值映射文件,kl文件可以有很多個,但是它有一個使用優先順序: 如果你沒有為設備單獨定義kl文件,那麼就會使用預設的那個Generic.kl文件。 例如: 還有一點需要註意,我們怎麼知道這個vendor號和 ...
android kl(key layout)文件是一個映射文件,是標準linux與anroid的鍵值映射文件,kl文件可以有很多個,但是它有一個使用優先順序:
/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/system/usr/keylayout/DEVICE_NAME.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX.kl
/data/system/devices/keylayout/DEVICE_NAME.kl
/system/usr/keylayout/Generic.kl
/data/system/devices/keylayout/Generic.kl
如果你沒有為設備單獨定義kl文件,那麼就會使用預設的那個Generic.kl文件。
例如:
# This is an example of a key layout file for basic system controls, such as
# volume and power keys which are typically implemented as GPIO pins that
# the device decodes into key presses.
key 114 VOLUME_DOWN WAKE
key 115 VOLUME_UP WAKE
key 116 POWER WAKE
還有一點需要註意,我們怎麼知道這個vendor號和input name呢,可以通過cat /proc/bus/input/devices命令查看,當然getevent -p也可以查看input name。而android這邊的keycode定義在frameworks/native/include/input/InputEventLabels.h文件中,定義在KEYCODES這個數組中的,是通過巨集DEFINE_KEYCODE定義的,例如:
DEFINE_KEYCODE(VOLUME_DOWN),
而真正的鍵值是定義在frameworks/native/include/android/keycodes.h中的。
完。