diff options
| -rw-r--r-- | drivers/hid/hid-ntrig.c | 41 |
1 files changed, 1 insertions, 40 deletions
diff --git a/drivers/hid/hid-ntrig.c b/drivers/hid/hid-ntrig.c index 38b2364c8867..1bda3a4bd71f 100644 --- a/drivers/hid/hid-ntrig.c +++ b/drivers/hid/hid-ntrig.c | |||
| @@ -27,9 +27,6 @@ | |||
| 27 | struct ntrig_data { | 27 | struct ntrig_data { |
| 28 | __s32 x, y, id, w, h; | 28 | __s32 x, y, id, w, h; |
| 29 | bool reading_a_point, found_contact_id; | 29 | bool reading_a_point, found_contact_id; |
| 30 | bool pen_active; | ||
| 31 | bool finger_active; | ||
| 32 | bool inverted; | ||
| 33 | }; | 30 | }; |
| 34 | 31 | ||
| 35 | /* | 32 | /* |
| @@ -47,7 +44,6 @@ static int ntrig_input_mapping(struct hid_device *hdev, struct hid_input *hi, | |||
| 47 | return 0; | 44 | return 0; |
| 48 | 45 | ||
| 49 | switch (usage->hid & HID_USAGE_PAGE) { | 46 | switch (usage->hid & HID_USAGE_PAGE) { |
| 50 | |||
| 51 | case HID_UP_GENDESK: | 47 | case HID_UP_GENDESK: |
| 52 | switch (usage->hid) { | 48 | switch (usage->hid) { |
| 53 | case HID_GD_X: | 49 | case HID_GD_X: |
| @@ -111,6 +107,7 @@ static int ntrig_input_mapped(struct hid_device *hdev, struct hid_input *hi, | |||
| 111 | /* No special mappings needed for the pen */ | 107 | /* No special mappings needed for the pen */ |
| 112 | if (field->application == HID_DG_PEN) | 108 | if (field->application == HID_DG_PEN) |
| 113 | return 0; | 109 | return 0; |
| 110 | |||
| 114 | if (usage->type == EV_KEY || usage->type == EV_REL | 111 | if (usage->type == EV_KEY || usage->type == EV_REL |
| 115 | || usage->type == EV_ABS) | 112 | || usage->type == EV_ABS) |
| 116 | clear_bit(usage->code, *bit); | 113 | clear_bit(usage->code, *bit); |
| @@ -136,18 +133,6 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, | |||
| 136 | 133 | ||
| 137 | if (hid->claimed & HID_CLAIMED_INPUT) { | 134 | if (hid->claimed & HID_CLAIMED_INPUT) { |
| 138 | switch (usage->hid) { | 135 | switch (usage->hid) { |
| 139 | |||
| 140 | case HID_DG_INRANGE: | ||
| 141 | if (field->application & 0x3) | ||
| 142 | nd->pen_active = (value != 0); | ||
| 143 | else | ||
| 144 | nd->finger_active = (value != 0); | ||
| 145 | return 0; | ||
| 146 | |||
| 147 | case HID_DG_INVERT: | ||
| 148 | nd->inverted = value; | ||
| 149 | return 0; | ||
| 150 | |||
| 151 | case HID_GD_X: | 136 | case HID_GD_X: |
| 152 | nd->x = value; | 137 | nd->x = value; |
| 153 | nd->reading_a_point = 1; | 138 | nd->reading_a_point = 1; |
| @@ -171,32 +156,8 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, | |||
| 171 | * to emit a normal (X, Y) position | 156 | * to emit a normal (X, Y) position |
| 172 | */ | 157 | */ |
| 173 | if (!nd->found_contact_id) { | 158 | if (!nd->found_contact_id) { |
| 174 | if (nd->pen_active && nd->finger_active) { | ||
| 175 | input_report_key(input, BTN_TOOL_DOUBLETAP, 0); | ||
| 176 | input_report_key(input, BTN_TOOL_DOUBLETAP, 1); | ||
| 177 | } | ||
| 178 | input_event(input, EV_ABS, ABS_X, nd->x); | ||
| 179 | input_event(input, EV_ABS, ABS_Y, nd->y); | ||
| 180 | } | ||
| 181 | break; | ||
| 182 | case HID_DG_TIPPRESSURE: | ||
| 183 | /* | ||
| 184 | * when in single touch mode, this is the last | ||
| 185 | * report received in a pen event. We want | ||
| 186 | * to emit a normal (X, Y) position | ||
| 187 | */ | ||
| 188 | if (! nd->found_contact_id) { | ||
| 189 | if (nd->pen_active && nd->finger_active) { | ||
| 190 | input_report_key(input, | ||
| 191 | nd->inverted ? BTN_TOOL_RUBBER : BTN_TOOL_PEN | ||
| 192 | , 0); | ||
| 193 | input_report_key(input, | ||
| 194 | nd->inverted ? BTN_TOOL_RUBBER : BTN_TOOL_PEN | ||
| 195 | , 1); | ||
| 196 | } | ||
| 197 | input_event(input, EV_ABS, ABS_X, nd->x); | 159 | input_event(input, EV_ABS, ABS_X, nd->x); |
| 198 | input_event(input, EV_ABS, ABS_Y, nd->y); | 160 | input_event(input, EV_ABS, ABS_Y, nd->y); |
| 199 | input_event(input, EV_ABS, ABS_PRESSURE, value); | ||
| 200 | } | 161 | } |
| 201 | break; | 162 | break; |
| 202 | case 0xff000002: | 163 | case 0xff000002: |
