summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Yan <lyan@suse.com>2017-08-28 12:41:08 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-08-28 13:31:31 -0400
commit0ca0681002587d56ebadc16a6c6653028c3c5cbf (patch)
tree0d9832bffbf70c963ea84a0638defe136f0f3193
parentb54bf2fd156c6294eaaac2861939f679f8616b55 (diff)
Input: xen-kbdfront - enable auto repeat for xen keyboard frontend driver
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> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r--drivers/input/misc/xen-kbdfront.c5
1 files changed, 4 insertions, 1 deletions
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,
84 struct xenkbd_key *key) 84 struct xenkbd_key *key)
85{ 85{
86 struct input_dev *dev; 86 struct input_dev *dev;
87 int value = key->pressed;
87 88
88 if (test_bit(key->keycode, info->ptr->keybit)) { 89 if (test_bit(key->keycode, info->ptr->keybit)) {
89 dev = info->ptr; 90 dev = info->ptr;
90 } else if (test_bit(key->keycode, info->kbd->keybit)) { 91 } else if (test_bit(key->keycode, info->kbd->keybit)) {
91 dev = info->kbd; 92 dev = info->kbd;
93 if (key->pressed && test_bit(key->keycode, info->kbd->key))
94 value = 2; /* Mark as autorepeat */
92 } else { 95 } else {
93 pr_warn("unhandled keycode 0x%x\n", key->keycode); 96 pr_warn("unhandled keycode 0x%x\n", key->keycode);
94 return; 97 return;
95 } 98 }
96 99
97 input_report_key(dev, key->keycode, key->pressed); 100 input_event(dev, EV_KEY, key->keycode, value);
98 input_sync(dev); 101 input_sync(dev);
99} 102}
100 103