Re: [PATCH] acer-wireless: send an EV_SYN/SYN_REPORT between state changes

From: Hans de Goede
Date: Mon Dec 07 2020 - 09:07:52 EST


Hi,

On 12/7/20 7:43 AM, Chris Chiu wrote:
> From: Daniel Drake <drake@xxxxxxxxxxxxx>
>
> Sending the switch state change twice within the same frame is invalid
> evdev protocol and only works if the client handles keys immediately as
> well. Processing events immediately is incorrect, it forces a fake
> order of events that does not exist on the device.
>
> Recent versions of libinput changed to only process the device state and
> SYN_REPORT time, so now the key event is lost.
>
> Same fix as 'commit <bff5bf9db1c94> ("platform/x86: asus-wireless: send
> an EV_SYN/SYN_REPORT between state changes")'
>
> Signed-off-by: Daniel Drake <drake@xxxxxxxxxxxxx>
> Signed-off-by: Chris Chiu <chiu@xxxxxxxxxxxxx>

Thank you for your patch, I've applied this patch to my review-hans
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans



> ---
> drivers/platform/x86/acer-wireless.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/platform/x86/acer-wireless.c b/drivers/platform/x86/acer-wireless.c
> index e0976180532a..1b5d935d085a 100644
> --- a/drivers/platform/x86/acer-wireless.c
> +++ b/drivers/platform/x86/acer-wireless.c
> @@ -28,6 +28,7 @@ static void acer_wireless_notify(struct acpi_device *adev, u32 event)
> return;
> }
> input_report_key(idev, KEY_RFKILL, 1);
> + input_sync(idev);
> input_report_key(idev, KEY_RFKILL, 0);
> input_sync(idev);
> }
>