summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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