parent
b8905959cc
commit
517441da45
@ -0,0 +1,61 @@
|
||||
From 66138b4e5f308cb0a9e93faa8aebf893a30f35ec Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Fri, 5 Jul 2019 15:06:55 -0700
|
||||
Subject: [PATCH] VNC: reverse key order when sending key up events
|
||||
|
||||
When map_and_send_key maps an input to multiple key presses -
|
||||
e.g. a ':' requires a press of shift and a press of ';', or
|
||||
when dealing with any input like "ctrl-t" - it gets an array,
|
||||
sends a 'down' event for each key in the array, then sends an
|
||||
'up' event for each key in the array. So for our ctrl-t example
|
||||
it does this:
|
||||
|
||||
ctrl down
|
||||
t down
|
||||
ctrl up
|
||||
t up
|
||||
|
||||
This is a bit odd and not how humans normally type. Humans
|
||||
would normally hold the modifier key, press and release any
|
||||
modified keys they want to press, then release the modifier.
|
||||
I've run into one issue previously where this caused a problem,
|
||||
which was ultimately fixed in qemu so that os-autoinst's unusual
|
||||
key event order worked OK. Now I've run into another:
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1727388
|
||||
|
||||
All the details of that bug are still not worked out, but today
|
||||
I *did* work out that changing this key press order avoids that
|
||||
bug. By simply reversing the array for the key up events, so we
|
||||
do this instead:
|
||||
|
||||
ctrl down
|
||||
t down
|
||||
t up
|
||||
ctrl up
|
||||
|
||||
The bug stops happening. Since it's triggered two bugs now, and
|
||||
as I said it does not map to how humans type, I think we should
|
||||
really go ahead and change this.
|
||||
|
||||
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||
---
|
||||
consoles/VNC.pm | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/consoles/VNC.pm b/consoles/VNC.pm
|
||||
index 8eaefe0a..2dfc7a38 100644
|
||||
--- a/consoles/VNC.pm
|
||||
+++ b/consoles/VNC.pm
|
||||
@@ -759,7 +759,7 @@ sub map_and_send_key {
|
||||
}
|
||||
usleep(2_000);
|
||||
if (!defined $down_flag || $down_flag == 0) {
|
||||
- for my $key (@events) {
|
||||
+ for my $key (reverse @events) {
|
||||
$self->send_key_event_up($key);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.22.0
|
||||
|
Loading…
Reference in new issue