在TP的driver中,报虚拟按键的方法常见的有两种:
1.直接报键值(kernel的)
2.报一个坐标,上层通过KL的解析来判定是哪个键。
下面说下第二种:
TP的kl被存放在/sys/board_properties/virtualkeys.devicename中,pull出来后可以看看内容:
0x01:139:100:900:40:60:0x01:158:400:900:40:60
可以发现就是在驱动代码中写的范围,分别是中心点X,中心点Y,宽度和高度,其实就是一个矩形区域,以X,Y为中心点,分别延伸 w/2, h/2。
4.0上对此kl的解析是在virtualkeymap.cpp中:
do {
String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER);
if (token != "0x01") {
LOGE("%s: Unknown virtual key type, expected 0x01.",
mTokenizer->getLocation().string());
return BAD_VALUE;
}
VirtualKeyDefinition defn;
bool success = parseNextIntField(&