@@ -107,18 +107,35 @@ struct test_header {
107
107
108
108
/*********************for gesture*******************/
109
109
#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
115
116
116
117
#define UNICODE_DETECT 0x0b
117
118
#define VEE_DETECT 0x0a
118
119
#define CIRCLE_DETECT 0x08
119
120
#define SWIPE_DETECT 0x07
120
121
#define DTAP_DETECT 0x03
121
122
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
+
122
139
// Gesture bit mask
123
140
#define BIT0 (0x1 << 0)
124
141
#define BIT1 (0x1 << 1)
@@ -135,7 +152,7 @@ struct test_header {
135
152
#define BITC (0x1 << 12)
136
153
#define BITD (0x1 << 13)
137
154
#define BITE (0x1 << 14)
138
- #define BITF (0x1 << 15)
155
+ // #define BITF (0x1 << 15) // Not used for anything
139
156
140
157
// Gesture flags
141
158
#define GESTURE_NONE BIT0
@@ -155,20 +172,21 @@ struct test_header {
155
172
#define GESTURE_S BITE // S
156
173
157
174
// 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
172
190
#endif
173
191
174
192
// Button key mask
@@ -1257,59 +1275,59 @@ static void gesture_judge(struct synaptics_ts_data *ts)
1257
1275
// Get key code based on registered gesture.
1258
1276
switch (gesture ) {
1259
1277
case GESTURE_DOUBLE_TAP :
1260
- keyCode = KEY_DOUBLE_TAP ;
1278
+ keyCode = MSC_GESTURE_DOUBLE_TAP ; // KEY_DOUBLE_TAP
1261
1279
break ;
1262
1280
1263
1281
case GESTURE_UP_ARROW :
1264
- keyCode = KEY_GESTURE_UP_ARROW ;
1282
+ keyCode = MSC_GESTURE_ARROW_UP ; // KEY_GESTURE_UP_ARROW
1265
1283
break ;
1266
1284
1267
1285
case GESTURE_DOWN_ARROW :
1268
- keyCode = KEY_GESTURE_DOWN_ARROW ;
1286
+ keyCode = MSC_GESTURE_ARROW_DOWN ; // KEY_GESTURE_DOWN_ARROW
1269
1287
break ;
1270
1288
1271
1289
case GESTURE_LEFT_ARROW :
1272
- keyCode = KEY_GESTURE_LEFT_ARROW ;
1290
+ keyCode = MSC_GESTURE_ARROW_LEFT ; // KEY_GESTURE_LEFT_ARROW
1273
1291
break ;
1274
1292
1275
1293
case GESTURE_RIGHT_ARROW :
1276
- keyCode = KEY_GESTURE_RIGHT_ARROW ;
1294
+ keyCode = MSC_GESTURE_ARROW_RIGHT ; // KEY_GESTURE_RIGHT_ARROW
1277
1295
break ;
1278
1296
1279
1297
case GESTURE_CIRCLE :
1280
- keyCode = KEY_GESTURE_CIRCLE ;
1298
+ keyCode = MSC_GESTURE_LETTER_O ; // KEY_GESTURE_CIRCLE
1281
1299
break ;
1282
1300
1283
1301
case GESTURE_DOUBLE_SWIPE :
1284
- keyCode = KEY_GESTURE_TWO_SWIPE ;
1302
+ keyCode = MSC_GESTURE_DOUBLE_SWIPE ; // KEY_GESTURE_TWO_SWIPE
1285
1303
break ;
1286
1304
1287
1305
case GESTURE_LEFT_SWIPE :
1288
- keyCode = KEY_GESTURE_SWIPE_LEFT ;
1306
+ keyCode = MSC_GESTURE_SWIPE_LEFT ; // KEY_GESTURE_SWIPE_LEFT
1289
1307
break ;
1290
1308
1291
1309
case GESTURE_RIGHT_SWIPE :
1292
- keyCode = KEY_GESTURE_SWIPE_RIGHT ;
1310
+ keyCode = MSC_GESTURE_SWIPE_RIGHT ; // KEY_GESTURE_SWIPE_RIGHT
1293
1311
break ;
1294
1312
1295
1313
case GESTURE_UP_SWIPE :
1296
- keyCode = KEY_GESTURE_SWIPE_UP ;
1314
+ keyCode = MSC_GESTURE_SWIPE_UP ; // KEY_GESTURE_SWIPE_UP
1297
1315
break ;
1298
1316
1299
1317
case GESTURE_DOWN_SWIPE :
1300
- keyCode = KEY_GESTURE_SWIPE_DOWN ;
1318
+ keyCode = MSC_GESTURE_SWIPE_DOWN ; // KEY_GESTURE_SWIPE_DOWN
1301
1319
break ;
1302
1320
1303
1321
case GESTURE_W :
1304
- keyCode = KEY_GESTURE_W ;
1322
+ keyCode = MSC_GESTURE_LETTER_W ; // KEY_GESTURE_W
1305
1323
break ;
1306
1324
1307
1325
case GESTURE_M :
1308
- keyCode = KEY_GESTURE_M ;
1326
+ keyCode = MSC_GESTURE_LETTER_M ; // KEY_GESTURE_M
1309
1327
break ;
1310
1328
1311
1329
case GESTURE_S :
1312
- keyCode = KEY_GESTURE_S ;
1330
+ keyCode = MSC_GESTURE_LETTER_S ; // KEY_GESTURE_S
1313
1331
break ;
1314
1332
1315
1333
default :
@@ -1320,9 +1338,11 @@ static void gesture_judge(struct synaptics_ts_data *ts)
1320
1338
1321
1339
if ((gesture & ts -> gestures_enable ) != 0 ) {
1322
1340
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 );
1326
1346
input_sync (ts -> input_dev );
1327
1347
} else {
1328
1348
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,
2860
2880
}
2861
2881
2862
2882
2863
- static int synaptics_input_init (struct synaptics_ts_data * ts )
2883
+ static int synaptics_input_init (struct synaptics_ts_data * ts )
2864
2884
{
2865
2885
int attr_count = 0 ;
2866
2886
int ret = 0 ;
@@ -2877,6 +2897,8 @@ static int synaptics_input_init(struct synaptics_ts_data *ts)
2877
2897
set_bit (EV_SYN , ts -> input_dev -> evbit );
2878
2898
set_bit (EV_ABS , ts -> input_dev -> evbit );
2879
2899
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 );
2880
2902
set_bit (ABS_MT_TOUCH_MAJOR , ts -> input_dev -> absbit );
2881
2903
set_bit (ABS_MT_WIDTH_MAJOR , ts -> input_dev -> absbit );
2882
2904
set_bit (ABS_MT_POSITION_X , ts -> input_dev -> absbit );
@@ -2885,20 +2907,21 @@ static int synaptics_input_init(struct synaptics_ts_data *ts)
2885
2907
set_bit (BTN_TOOL_FINGER , ts -> input_dev -> keybit );
2886
2908
#ifdef SUPPORT_GESTURE
2887
2909
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);
2902
2925
#endif
2903
2926
set_bit (KEY_BUTTON_LEFT , ts -> input_dev -> keybit );
2904
2927
set_bit (KEY_BUTTON_RIGHT , ts -> input_dev -> keybit );
0 commit comments