Re: [gtk-vnc-devel] PATCH: sticky modifier keys
- From: "Daniel P. Berrange" <berrange redhat com>
- To: Anthony Liguori <anthony codemonkey ws>
- Cc: gtk-vnc-devel <gtk-vnc-devel lists sourceforge net>
- Subject: Re: [gtk-vnc-devel] PATCH: sticky modifier keys
- Date: Tue, 10 Jul 2007 19:55:14 +0100
On Mon, Jul 09, 2007 at 09:11:12AM -0500, Anthony Liguori wrote:
> Daniel P. Berrange wrote:
> >Even with the use of a keyboard grab, there are certain key combinations
> >that are completely ungrabbable using regular GTK / X libraries. The prime
> >examples are Ctrl-Alt-Backspace, and Ctrl+Alt+Fn. This isn't a problem
> >for traditional VNC servers, but when talking to a virtualed guest OS, then
> >you do need a way to send these combos to the guest OS.
> >
> >This patch adds the 'sticky modifiers' concept currently used in
> >virt-manager
> >Basically, if a Ctrl or Alt key is pressed 3 times in a row, then it is
> >treated as sticky until the next non-modifier key is released. This allows
> >you to type 'Ctrl Ctrl Ctrl Alt+F1' to send 'Ctrl+Alt+F1' to the guest.
> >This is off by default.
> >
>
> Hrm, I don't like this very much. I'd prefer a sendkey like abstraction
> and then virt-manager could implement "stick modifiers" if it was desired.
How about a method taking
vnc_display_send_key(VncDisplay *vnc, int *keysyms);
Where keysyms is a NULL terminated array of GTK keysym codes. Or could
explicitly have a count
vnc_display_send_key(VncDisplay *vnc, int *keysyms, int nkeysyms);
In either case, if there was > 1 keysym listed, it would send all the
key down events, and then all the key up events. This would let you
send Ctrl+Alt+Del in single call, rather than having have another
up/down parameter to vnc_display_send_key method.
eg
int cad[] = { GDK_Control_L, GDK_Alt_L, GDK_Delete, 0 }
vnc_display_send_key(vnc, cad);
Or
int cad[] = { GDK_Control_L, GDK_Alt_L, GDK_Delete }
vnc_display_send_key(vnc, cad, sizeof(cad)/sizeof(cad[0]));
> I think a much more common way of addressing this problem will be to
> have a menu entry allowing certain combinations to be sent. The big
> usability problem with sticky modifiers is that if a user mistypes,
> something really bad could happen (like restarting X).
I think ultimately, both a menu full of special keys & sticky keys
are both ugly hacks. The ultimate is to be able to grab the keyboard
and be able to enter all possible key strokes.
One of the desktop / X guys at Red Hat suggested I might want to also
try out using XKB apis which would let us block the special Ctrl-Alt+Fn
and Ctrl-Alt-Backspace/Del sequences from the local host too, while in
a keygrab scenario. In the mean time, the send_key thing should be
sufficient.
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules: http://search.cpan.org/~danberr/ -=|
|=- Projects: http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]