之前我们知道如何在driver里定义好virtual key然后就可以了,那么framework里到底做了什么来获取virtualkey的信息的。慢慢来看
我们创建的节点是
root@ASUS_Z00L_63:/sys/board_properties # ls
virtualkeys.ft5x06_ts
这个东东哪里用了
./native/services/inputflinger/EventHub.cpp: path.append("/sys/board_properties/virtualkeys.");
看看这个
status_t EventHub::loadVirtualKeyMapLocked(Device* device) {
// The virtual key map is supplied by the kernel as a system board property file.
String8 path;
path.append("/sys/board_properties/virtualkeys.");
path.append(device->identifier.name);
if (access(path.string(), R_OK)) {
return NAME_NOT_FOUND;
}
return VirtualKeyMap::load(path, &device->virtualKeyMap);
}
这个函数在
status_t EventHub::openDeviceLocked(const char *devicePath) {
if ((device->classes & INPUT_DEVICE_CLASS_TOUCH)) {
// Load the virtual keys for the touch screen, if any.
// We do this now so that we can make sure to load the keymap if necessary.
status_t status = loadVirtualKeyMapLocked(device);
if (!status) {
device->classes |= INPUT_DEVICE_CLASS_KEYBOARD;
}
}
所以就是在一开始加载设备的时候就导入了