| From bff5bf9db1c9453ffd0a78abed3e2d040c092fd9 Mon Sep 17 00:00:00 2001 |
| From: Peter Hutterer <peter.hutterer@who-t.net> |
| Date: Mon, 4 Dec 2017 10:26:17 +1000 |
| Subject: platform/x86: asus-wireless: send an EV_SYN/SYN_REPORT between state changes |
| |
| From: Peter Hutterer <peter.hutterer@who-t.net> |
| |
| commit bff5bf9db1c9453ffd0a78abed3e2d040c092fd9 upstream. |
| |
| 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. |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=104041 |
| |
| Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> |
| Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/platform/x86/asus-wireless.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/platform/x86/asus-wireless.c |
| +++ b/drivers/platform/x86/asus-wireless.c |
| @@ -97,6 +97,7 @@ static void asus_wireless_notify(struct |
| return; |
| } |
| input_report_key(data->idev, KEY_RFKILL, 1); |
| + input_sync(data->idev); |
| input_report_key(data->idev, KEY_RFKILL, 0); |
| input_sync(data->idev); |
| } |