On Wed, Jan 31, 2024 at 11:57:43AM -0800, Dmitry Torokhov wrote: > On Wed, Jan 31, 2024 at 06:14:41PM +0100, Kamel Bouhara wrote: > > On Thu, Dec 28, 2023 at 09:44:31PM -0600, Jeff LaBundy wrote: > > [...] > > > > > + case AXIOM_TARGET_STATE_HOVER: > > > > + case AXIOM_TARGET_STATE_TOUCHING: > > > > + target_prev_state->insert = true; > > > > + update = true; > > > > + input_mt_slot(input_dev, slot); > > > > + input_report_abs(input_dev, ABS_MT_TRACKING_ID, slot); > > > > + input_report_abs(input_dev, ABS_MT_POSITION_X, target->x); > > > > + input_report_abs(input_dev, ABS_X, target->x); > > > > > > You do not need to explicitly report ABS_X and ABS_Y values, as calling > > > input_mt_sync_frame() effectively takes care of this by way of pointer > > > emulation. > > > > > > > After double checking/testing this, it doesn't seems to > > report ABS_X/Y values anymore, are you sure about this ? Maybe I missed > > some extra flag in input_mt_init_slots() for that ? > > You are missing call to input_report_slot_state() before you start > sending position data. You also should not conflate tracking ID and > slot number. I.e. if you touch and release and touch again, you > likely report through the same slot 0, but the tracking ID of the > contact should be different. > Hi Dmitry, Ok thanks for the clarification, I will check again but I think you are right and target->index should be used as the tracking ID as it should be different between reports. This should be fixed in v8. Thanks ! -- Kamel Bouhara, Bootlin Embedded Linux and kernel engineering https://bootlin.com