diff --git a/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c b/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c index 97f3dfa243..bb688d46b6 100644 --- a/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c +++ b/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c @@ -843,9 +843,9 @@ static void syna_dev_report_input_events(struct syna_tcm *tcm) input_report_key(input_dev, KEY_WAKEUP, 0); input_sync(input_dev); } else { - input_report_key(input_dev, KEY_F4, 1); + input_report_key(input_dev, KEY_GESTURE_START + touch_data->gesture_type, 1); input_sync(input_dev); - input_report_key(input_dev, KEY_F4, 0); + input_report_key(input_dev, KEY_GESTURE_START + touch_data->gesture_type, 0); input_sync(input_dev); } } @@ -971,7 +971,7 @@ exit: */ static int syna_dev_create_input_device(struct syna_tcm *tcm) { - int retval = 0; + int retval = 0, i = 0; struct tcm_dev *tcm_dev = tcm->tcm_dev; struct input_dev *input_dev = NULL; @@ -1024,8 +1024,9 @@ static int syna_dev_create_input_device(struct syna_tcm *tcm) #ifdef ENABLE_WAKEUP_GESTURE set_bit(KEY_WAKEUP, input_dev->keybit); input_set_capability(input_dev, EV_KEY, KEY_WAKEUP); - set_bit(KEY_F4, input_dev->keybit); - input_set_capability(input_dev, EV_KEY, KEY_F4); + for (i = UP_VEE; i <= S_GESTURE; i++) { + set_bit(KEY_GESTURE_START + i, input_dev->keybit); + } set_bit(KEY_UNDER_WATER, input_dev->keybit); input_set_capability(input_dev, EV_KEY, KEY_UNDER_WATER); set_bit(KEY_ON_WATER, input_dev->keybit); diff --git a/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_core_dev.h b/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_core_dev.h index c408d2fd56..0465c91028 100644 --- a/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_core_dev.h +++ b/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_core_dev.h @@ -596,6 +596,7 @@ struct tcm_touch_data_blob { /* for gesture */ unsigned int gesture_id; + unsigned int gesture_type; struct tcm_gesture_data_blob gesture_data; unsigned char data_point[24]; /*6 points*/ unsigned char extra_gesture_info[6]; diff --git a/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_func_touch.h b/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_func_touch.h index 8d66844a4f..78f8e366e8 100644 --- a/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_func_touch.h +++ b/oplus/kernel/touchpanel/synaptics_hbp/tcm/synaptics_touchcom_func_touch.h @@ -88,6 +88,7 @@ enum gesture_classification { #define UNDER_WATER 0x85 #define ON_WATER 0x86 +#define KEY_GESTURE_START 246 #define UNKOWN_GESTURE 0 #define DOU_TAP 1 /* double tap*/