linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] input/xen-kbdfront: Enable auto repeat for xen keyboard frontend driver
@ 2017-08-24 13:54 Liang Yan
  2017-08-28 16:42 ` Dmitry Torokhov
  0 siblings, 1 reply; 2+ messages in thread
From: Liang Yan @ 2017-08-24 13:54 UTC (permalink / raw)
  To: dmitry.torokhov; +Cc: linux-input, linux-kernel

Long pressed key could not show right in XEN vncviewer after tigervnc
client changed the way how to send repeat keys, from "Down Up Down Up
..." to "Down Down ... Up". This will report autorepeat to input by
checking if same key being pressed, and let handler process it finally.

Signed-off-by: Liang Yan <lyan@suse.com>
---
v2:
- Sending autorepeat event rather than enable EV_REP bit 

drivers/input/misc/xen-kbdfront.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/input/misc/xen-kbdfront.c b/drivers/input/misc/xen-kbdfront.c
index fa130e7b734c..6bf56bb5f8d9 100644
--- a/drivers/input/misc/xen-kbdfront.c
+++ b/drivers/input/misc/xen-kbdfront.c
@@ -84,17 +84,20 @@ static void xenkbd_handle_key_event(struct xenkbd_info *info,
 				    struct xenkbd_key *key)
 {
 	struct input_dev *dev;
+	int value = key->pressed;
 
 	if (test_bit(key->keycode, info->ptr->keybit)) {
 		dev = info->ptr;
 	} else if (test_bit(key->keycode, info->kbd->keybit)) {
 		dev = info->kbd;
+		if (key->pressed && test_bit(key->keycode, info->kbd->key))
+			value = 2; /* Mark as autorepeat */
 	} else {
 		pr_warn("unhandled keycode 0x%x\n", key->keycode);
 		return;
 	}
 
-	input_report_key(dev, key->keycode, key->pressed);
+	input_event(dev, EV_KEY, key->keycode, value);
 	input_sync(dev);
 }
 
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] input/xen-kbdfront: Enable auto repeat for xen keyboard frontend driver
  2017-08-24 13:54 [PATCH v2] input/xen-kbdfront: Enable auto repeat for xen keyboard frontend driver Liang Yan
@ 2017-08-28 16:42 ` Dmitry Torokhov
  0 siblings, 0 replies; 2+ messages in thread
From: Dmitry Torokhov @ 2017-08-28 16:42 UTC (permalink / raw)
  To: Liang Yan; +Cc: linux-input, linux-kernel

On Thu, Aug 24, 2017 at 09:54:14AM -0400, Liang Yan wrote:
> Long pressed key could not show right in XEN vncviewer after tigervnc
> client changed the way how to send repeat keys, from "Down Up Down Up
> ..." to "Down Down ... Up". This will report autorepeat to input by
> checking if same key being pressed, and let handler process it finally.
> 
> Signed-off-by: Liang Yan <lyan@suse.com>
> ---
> v2:
> - Sending autorepeat event rather than enable EV_REP bit 

Applied, thank you.

> 
> drivers/input/misc/xen-kbdfront.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/misc/xen-kbdfront.c b/drivers/input/misc/xen-kbdfront.c
> index fa130e7b734c..6bf56bb5f8d9 100644
> --- a/drivers/input/misc/xen-kbdfront.c
> +++ b/drivers/input/misc/xen-kbdfront.c
> @@ -84,17 +84,20 @@ static void xenkbd_handle_key_event(struct xenkbd_info *info,
>  				    struct xenkbd_key *key)
>  {
>  	struct input_dev *dev;
> +	int value = key->pressed;
>  
>  	if (test_bit(key->keycode, info->ptr->keybit)) {
>  		dev = info->ptr;
>  	} else if (test_bit(key->keycode, info->kbd->keybit)) {
>  		dev = info->kbd;
> +		if (key->pressed && test_bit(key->keycode, info->kbd->key))
> +			value = 2; /* Mark as autorepeat */
>  	} else {
>  		pr_warn("unhandled keycode 0x%x\n", key->keycode);
>  		return;
>  	}
>  
> -	input_report_key(dev, key->keycode, key->pressed);
> +	input_event(dev, EV_KEY, key->keycode, value);
>  	input_sync(dev);
>  }
>  
> -- 
> 2.14.1
> 

-- 
Dmitry

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-08-28 16:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-24 13:54 [PATCH v2] input/xen-kbdfront: Enable auto repeat for xen keyboard frontend driver Liang Yan
2017-08-28 16:42 ` Dmitry Torokhov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).