1. 开启触摸IC
#define HAVE_TOUCH_KEY
2.按键值
const u16 key_array[]={
KEY_ESC,
KEY_HOME,
KEY_MENU,
//KEY_SEARCH,
};
#define MAX_KEY_NUM (sizeof(key_array)/sizeof(key_array[0]))
struct key_data gsl_key_data[MAX_KEY_NUM] = {
{KEY_ESC, 820, 832, 116, 124},
{KEY_HOME, 820, 832, 68, 76},
{KEY_MENU, 820, 832, 20, 28},
};
按键的值使用include/linux/input.h里面定义的默认值
3.编译之后,无法正常工作,包括原先工作正常的AA区域。
4.gslx680.c驱动文件
#ifdef HAVE_TOUCH_KEY
input_device->evbit[0] = BIT_MASK(EV_KEY);
for (i = 0; i < MAX_KEY_NUM; i++)
set_bit(gsl_key_data[i].key, input_device->keybit);
#endif
#ifdef REPORT_DATA_ANDROID_4_0
__set_bit(EV_ABS, input_device->evbit);
__set_bit(EV_KEY, input_device->evbit);
__set_bit(EV_REP, input_device->evbit);
__set_bit(INPUT_PROP_DIRECT, input_device->propbit);
input_mt_init_slots(input_device, (MAX_CONTACTS+1));
#else
input_set_abs_params(input_device,ABS_MT_TRACKING_ID, 0, (MAX_CONTACTS+1), 0, 0);
set_bit(EV_ABS, input_device->evbit);
set_bit(EV_KEY, input_device->evbit);
#endif
#ifdef FOR_TSLIB_TEST
set_bit(BTN_TOUCH, input_device->keybit);
#endif
将红色代码放在蓝色代码之前,重新编译工作正常。因为EV_KEY那行的初始化必须要在红色之后。