|
@@ -155,6 +155,7 @@ static void parse_multi_touch(struct w8001 *w8001)
|
|
bool touch = data[0] & (1 << i);
|
|
bool touch = data[0] & (1 << i);
|
|
|
|
|
|
input_mt_slot(dev, i);
|
|
input_mt_slot(dev, i);
|
|
|
|
+ input_mt_report_slot_state(dev, MT_TOOL_FINGER, touch);
|
|
if (touch) {
|
|
if (touch) {
|
|
x = (data[6 * i + 1] << 7) | data[6 * i + 2];
|
|
x = (data[6 * i + 1] << 7) | data[6 * i + 2];
|
|
y = (data[6 * i + 3] << 7) | data[6 * i + 4];
|
|
y = (data[6 * i + 3] << 7) | data[6 * i + 4];
|
|
@@ -522,6 +523,8 @@ static int w8001_setup_touch(struct w8001 *w8001, char *basename,
|
|
0, touch.x, 0, 0);
|
|
0, touch.x, 0, 0);
|
|
input_set_abs_params(dev, ABS_MT_POSITION_Y,
|
|
input_set_abs_params(dev, ABS_MT_POSITION_Y,
|
|
0, touch.y, 0, 0);
|
|
0, touch.y, 0, 0);
|
|
|
|
+ input_set_abs_params(dev, ABS_MT_TOOL_TYPE,
|
|
|
|
+ 0, MT_TOOL_MAX, 0, 0);
|
|
|
|
|
|
strlcat(basename, " 2FG", basename_sz);
|
|
strlcat(basename, " 2FG", basename_sz);
|
|
if (w8001->max_pen_x && w8001->max_pen_y)
|
|
if (w8001->max_pen_x && w8001->max_pen_y)
|