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. Thanks. -- Dmitry