cls->name == MT_CLS_WIN_8_DUAL) &&
field->application == HID_DG_TOUCHPAD)
app->quirks |= MT_QUIRK_CONFIDENCE;
+
+ if (app->quirks & MT_QUIRK_CONFIDENCE)
+ input_set_abs_params(hi->input,
+ ABS_MT_TOOL_TYPE,
+ MT_TOOL_FINGER,
+ MT_TOOL_PALM, 0, 0);
+
MT_STORE_FIELD(confidence_state);
return 1;
case HID_DG_TIPSWITCH:
if (quirks & MT_QUIRK_HOVERING)
inrange_state = *slot->inrange_state;
- active = (*slot->tip_state || inrange_state) && confidence_state;
+ active = *slot->tip_state || inrange_state;
if (app->application == HID_GD_SYSTEM_MULTIAXIS)
tool = MT_TOOL_DIAL;
+ else if (unlikely(!confidence_state))
+ tool = MT_TOOL_PALM;
input_mt_slot(input, slotnum);
input_mt_report_slot_state(input, tool, active);
orientation = -azimuth;
}
- /*
- * divided by two to match visual scale of touch
- * for devices with this quirk
- */
if (quirks & MT_QUIRK_TOUCH_SIZE_SCALING) {
+ /*
+ * divided by two to match visual scale of touch
+ * for devices with this quirk
+ */
major = major >> 1;
minor = minor >> 1;
}