Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit eafb26f

Browse files
authoredNov 20, 2019
input: Make gestures emit EV_MSC instead of EV_KEY for MCE
1 parent 089b57e commit eafb26f

File tree

1 file changed

+75
-52
lines changed

1 file changed

+75
-52
lines changed
 

‎drivers/input/touchscreen/synaptics_driver_s3320.c

+75-52
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,35 @@ struct test_header {
107107

108108
/*********************for gesture*******************/
109109
#ifdef SUPPORT_GESTURE
110-
#define ENABLE_UNICODE 0x40
111-
#define ENABLE_VEE 0x20
112-
#define ENABLE_CIRCLE 0x08
113-
#define ENABLE_SWIPE 0x02
114-
#define ENABLE_DTAP 0x01
110+
// Legacy defines that never get used anywhere
111+
//#define ENABLE_UNICODE 0x40
112+
//#define ENABLE_VEE 0x20
113+
//#define ENABLE_CIRCLE 0x08
114+
//#define ENABLE_SWIPE 0x02
115+
//#define ENABLE_DTAP 0x01
115116

116117
#define UNICODE_DETECT 0x0b
117118
#define VEE_DETECT 0x0a
118119
#define CIRCLE_DETECT 0x08
119120
#define SWIPE_DETECT 0x07
120121
#define DTAP_DETECT 0x03
121122

123+
// Gesture event codes
124+
#define MSC_GESTURE_DOUBLE_TAP 4
125+
#define MSC_GESTURE_DOUBLE_SWIPE 5
126+
#define MSC_GESTURE_ARROW_UP 6
127+
#define MSC_GESTURE_ARROW_DOWN 7
128+
#define MSC_GESTURE_ARROW_LEFT 8
129+
#define MSC_GESTURE_ARROW_RIGHT 9
130+
#define MSC_GESTURE_LETTER_O 10
131+
#define MSC_GESTURE_LETTER_S 11
132+
#define MSC_GESTURE_LETTER_M 12
133+
#define MSC_GESTURE_LETTER_W 13
134+
#define MSC_GESTURE_SWIPE_UP 14
135+
#define MSC_GESTURE_SWIPE_DOWN 15
136+
#define MSC_GESTURE_SWIPE_LEFT 16
137+
#define MSC_GESTURE_SWIPE_RIGHT 17
138+
122139
// Gesture bit mask
123140
#define BIT0 (0x1 << 0)
124141
#define BIT1 (0x1 << 1)
@@ -135,7 +152,7 @@ struct test_header {
135152
#define BITC (0x1 << 12)
136153
#define BITD (0x1 << 13)
137154
#define BITE (0x1 << 14)
138-
#define BITF (0x1 << 15)
155+
//#define BITF (0x1 << 15) // Not used for anything
139156

140157
// Gesture flags
141158
#define GESTURE_NONE BIT0
@@ -155,20 +172,21 @@ struct test_header {
155172
#define GESTURE_S BITE // S
156173

157174
// Gesture key codes
158-
#define KEY_GESTURE_W 246 // W
159-
#define KEY_GESTURE_M 247 // M
160-
#define KEY_GESTURE_S 248 // S
161-
#define KEY_DOUBLE_TAP KEY_WAKEUP // double tap to wake
162-
#define KEY_GESTURE_CIRCLE 250 // draw circle to lunch camera
163-
#define KEY_GESTURE_TWO_SWIPE 251 // swipe two finger vertically to play/pause
164-
#define KEY_GESTURE_UP_ARROW 252 // draw up arrow to toggle flashlight
165-
#define KEY_GESTURE_LEFT_ARROW 253 // draw left arrow for previous track
166-
#define KEY_GESTURE_RIGHT_ARROW 254 // draw right arrow for next track
167-
#define KEY_GESTURE_DOWN_ARROW 255 // draw down arrow to toggle flashlight
168-
#define KEY_GESTURE_SWIPE_RIGHT KEY_F5
169-
#define KEY_GESTURE_SWIPE_LEFT KEY_F6
170-
#define KEY_GESTURE_SWIPE_DOWN KEY_F7
171-
#define KEY_GESTURE_SWIPE_UP KEY_F8
175+
// Not used anywhere after MSC_GESTURE introduction
176+
//#define KEY_GESTURE_W 246 // W
177+
//#define KEY_GESTURE_M 247 // M
178+
//#define KEY_GESTURE_S 248 // S
179+
//#define KEY_DOUBLE_TAP KEY_WAKEUP // double tap to wake
180+
//#define KEY_GESTURE_CIRCLE 250 // draw circle to lunch camera
181+
//#define KEY_GESTURE_TWO_SWIPE 251 // swipe two finger vertically to play/pause
182+
//#define KEY_GESTURE_UP_ARROW 252 // draw up arrow to toggle flashlight
183+
//#define KEY_GESTURE_LEFT_ARROW 253 // draw left arrow for previous track
184+
//#define KEY_GESTURE_RIGHT_ARROW 254 // draw right arrow for next track
185+
//#define KEY_GESTURE_DOWN_ARROW 255 // draw down arrow to toggle flashlight
186+
//#define KEY_GESTURE_SWIPE_RIGHT KEY_F5
187+
//#define KEY_GESTURE_SWIPE_LEFT KEY_F6
188+
//#define KEY_GESTURE_SWIPE_DOWN KEY_F7
189+
//#define KEY_GESTURE_SWIPE_UP KEY_F8
172190
#endif
173191

174192
// Button key mask
@@ -1257,59 +1275,59 @@ static void gesture_judge(struct synaptics_ts_data *ts)
12571275
// Get key code based on registered gesture.
12581276
switch (gesture) {
12591277
case GESTURE_DOUBLE_TAP:
1260-
keyCode = KEY_DOUBLE_TAP;
1278+
keyCode = MSC_GESTURE_DOUBLE_TAP; // KEY_DOUBLE_TAP
12611279
break;
12621280

12631281
case GESTURE_UP_ARROW:
1264-
keyCode = KEY_GESTURE_UP_ARROW;
1282+
keyCode = MSC_GESTURE_ARROW_UP; // KEY_GESTURE_UP_ARROW
12651283
break;
12661284

12671285
case GESTURE_DOWN_ARROW:
1268-
keyCode = KEY_GESTURE_DOWN_ARROW;
1286+
keyCode = MSC_GESTURE_ARROW_DOWN; // KEY_GESTURE_DOWN_ARROW
12691287
break;
12701288

12711289
case GESTURE_LEFT_ARROW:
1272-
keyCode = KEY_GESTURE_LEFT_ARROW;
1290+
keyCode = MSC_GESTURE_ARROW_LEFT; // KEY_GESTURE_LEFT_ARROW
12731291
break;
12741292

12751293
case GESTURE_RIGHT_ARROW:
1276-
keyCode = KEY_GESTURE_RIGHT_ARROW;
1294+
keyCode = MSC_GESTURE_ARROW_RIGHT; // KEY_GESTURE_RIGHT_ARROW
12771295
break;
12781296

12791297
case GESTURE_CIRCLE:
1280-
keyCode = KEY_GESTURE_CIRCLE;
1298+
keyCode = MSC_GESTURE_LETTER_O; // KEY_GESTURE_CIRCLE
12811299
break;
12821300

12831301
case GESTURE_DOUBLE_SWIPE:
1284-
keyCode = KEY_GESTURE_TWO_SWIPE;
1302+
keyCode = MSC_GESTURE_DOUBLE_SWIPE; // KEY_GESTURE_TWO_SWIPE
12851303
break;
12861304

12871305
case GESTURE_LEFT_SWIPE:
1288-
keyCode = KEY_GESTURE_SWIPE_LEFT;
1306+
keyCode = MSC_GESTURE_SWIPE_LEFT; // KEY_GESTURE_SWIPE_LEFT
12891307
break;
12901308

12911309
case GESTURE_RIGHT_SWIPE:
1292-
keyCode = KEY_GESTURE_SWIPE_RIGHT;
1310+
keyCode = MSC_GESTURE_SWIPE_RIGHT; // KEY_GESTURE_SWIPE_RIGHT
12931311
break;
12941312

12951313
case GESTURE_UP_SWIPE:
1296-
keyCode = KEY_GESTURE_SWIPE_UP;
1314+
keyCode = MSC_GESTURE_SWIPE_UP; // KEY_GESTURE_SWIPE_UP
12971315
break;
12981316

12991317
case GESTURE_DOWN_SWIPE:
1300-
keyCode = KEY_GESTURE_SWIPE_DOWN;
1318+
keyCode = MSC_GESTURE_SWIPE_DOWN; // KEY_GESTURE_SWIPE_DOWN
13011319
break;
13021320

13031321
case GESTURE_W:
1304-
keyCode = KEY_GESTURE_W;
1322+
keyCode = MSC_GESTURE_LETTER_W; // KEY_GESTURE_W
13051323
break;
13061324

13071325
case GESTURE_M:
1308-
keyCode = KEY_GESTURE_M;
1326+
keyCode = MSC_GESTURE_LETTER_M; // KEY_GESTURE_M
13091327
break;
13101328

13111329
case GESTURE_S:
1312-
keyCode = KEY_GESTURE_S;
1330+
keyCode = MSC_GESTURE_LETTER_S; // KEY_GESTURE_S
13131331
break;
13141332

13151333
default:
@@ -1320,9 +1338,11 @@ static void gesture_judge(struct synaptics_ts_data *ts)
13201338

13211339
if ((gesture & ts->gestures_enable) != 0) {
13221340
gesture_upload = gesture;
1323-
input_report_key(ts->input_dev, keyCode, 1);
1324-
input_sync(ts->input_dev);
1325-
input_report_key(ts->input_dev, keyCode, 0);
1341+
// No need to report key statuses when we're dealing with EV_MSC gestures ;)
1342+
//input_report_key(ts->input_dev, keyCode, 1);
1343+
//input_sync(ts->input_dev);
1344+
//input_report_key(ts->input_dev, keyCode, 0);
1345+
input_event(ts->input_dev, EV_MSC, MSC_GESTURE, keyCode);
13261346
input_sync(ts->input_dev);
13271347
} else {
13281348
ret = i2c_smbus_read_i2c_block_data(ts->client, F12_2D_CTRL20, 3, &(reportbuf[0x0]));
@@ -2860,7 +2880,7 @@ static ssize_t synaptics_rmi4_vendor_id_show(struct device *dev,
28602880
}
28612881

28622882

2863-
static int synaptics_input_init(struct synaptics_ts_data *ts)
2883+
static int synaptics_input_init(struct synaptics_ts_data *ts)
28642884
{
28652885
int attr_count = 0;
28662886
int ret = 0;
@@ -2877,6 +2897,8 @@ static int synaptics_input_init(struct synaptics_ts_data *ts)
28772897
set_bit(EV_SYN, ts->input_dev->evbit);
28782898
set_bit(EV_ABS, ts->input_dev->evbit);
28792899
set_bit(EV_KEY, ts->input_dev->evbit);
2900+
set_bit(EV_MSC, ts->input_dev->evbit);
2901+
ts->input_dev->mscbit[0] = BIT_MASK(MSC_GESTURE);
28802902
set_bit(ABS_MT_TOUCH_MAJOR, ts->input_dev->absbit);
28812903
set_bit(ABS_MT_WIDTH_MAJOR, ts->input_dev->absbit);
28822904
set_bit(ABS_MT_POSITION_X, ts->input_dev->absbit);
@@ -2885,20 +2907,21 @@ static int synaptics_input_init(struct synaptics_ts_data *ts)
28852907
set_bit(BTN_TOOL_FINGER, ts->input_dev->keybit);
28862908
#ifdef SUPPORT_GESTURE
28872909
set_bit(KEY_F4, ts->input_dev->keybit); //doulbe-tap resume
2888-
set_bit(KEY_DOUBLE_TAP, ts->input_dev->keybit);
2889-
set_bit(KEY_GESTURE_W, ts->input_dev->keybit);
2890-
set_bit(KEY_GESTURE_M, ts->input_dev->keybit);
2891-
set_bit(KEY_GESTURE_S, ts->input_dev->keybit);
2892-
set_bit(KEY_GESTURE_CIRCLE, ts->input_dev->keybit);
2893-
set_bit(KEY_GESTURE_TWO_SWIPE, ts->input_dev->keybit);
2894-
set_bit(KEY_GESTURE_UP_ARROW, ts->input_dev->keybit);
2895-
set_bit(KEY_GESTURE_LEFT_ARROW, ts->input_dev->keybit);
2896-
set_bit(KEY_GESTURE_RIGHT_ARROW, ts->input_dev->keybit);
2897-
set_bit(KEY_GESTURE_DOWN_ARROW, ts->input_dev->keybit);
2898-
set_bit(KEY_GESTURE_SWIPE_UP, ts->input_dev->keybit);
2899-
set_bit(KEY_GESTURE_SWIPE_LEFT, ts->input_dev->keybit);
2900-
set_bit(KEY_GESTURE_SWIPE_RIGHT, ts->input_dev->keybit);
2901-
set_bit(KEY_GESTURE_SWIPE_DOWN, ts->input_dev->keybit);
2910+
// Gestures are now handled by EV_MSC events and MSC_GESTURE bitmask
2911+
//set_bit(KEY_DOUBLE_TAP, ts->input_dev->keybit);
2912+
//set_bit(KEY_GESTURE_W, ts->input_dev->keybit);
2913+
//set_bit(KEY_GESTURE_M, ts->input_dev->keybit);
2914+
//set_bit(KEY_GESTURE_S, ts->input_dev->keybit);
2915+
//set_bit(KEY_GESTURE_CIRCLE, ts->input_dev->keybit);
2916+
//set_bit(KEY_GESTURE_TWO_SWIPE, ts->input_dev->keybit);
2917+
//set_bit(KEY_GESTURE_UP_ARROW, ts->input_dev->keybit);
2918+
//set_bit(KEY_GESTURE_LEFT_ARROW, ts->input_dev->keybit);
2919+
//set_bit(KEY_GESTURE_RIGHT_ARROW, ts->input_dev->keybit);
2920+
//set_bit(KEY_GESTURE_DOWN_ARROW, ts->input_dev->keybit);
2921+
//set_bit(KEY_GESTURE_SWIPE_UP, ts->input_dev->keybit);
2922+
//set_bit(KEY_GESTURE_SWIPE_LEFT, ts->input_dev->keybit);
2923+
//set_bit(KEY_GESTURE_SWIPE_RIGHT, ts->input_dev->keybit);
2924+
//set_bit(KEY_GESTURE_SWIPE_DOWN, ts->input_dev->keybit);
29022925
#endif
29032926
set_bit(KEY_BUTTON_LEFT, ts->input_dev->keybit);
29042927
set_bit(KEY_BUTTON_RIGHT, ts->input_dev->keybit);

0 commit comments

Comments
 (0)
Please sign in to comment.