[Spice-devel] [patch 0/2] vdagent KEYVAL extension
Dietmar Maurer
dietmar at proxmox.com
Wed Oct 9 14:21:29 CEST 2013
> I still have to answer myself the question "why is the current XT scancode input
> not enough"? Although I think I have guessed, it would be good to explain that,
> to motivate the reason for this change.
Some SPICE applications want to use the keymap from the client side, and
works directly with UTF input characters (for example a terminal emulator - spiceterm).
The current scancode values cannot be used for those applications.
Note: you cannot translate a scancode to utf8 (because you do not know the keymap of the client).
Hope that is clear now?
> > > bypassing all of server, x & qemu & kernel etc...
> > >
> > > Arbitrary utf8 input can only be handled at user space / agent level
> > > (no way to pass a X11/gdk or utf8 through hw level)
> > >
> > > And as of today, all agents messages go through the main channel. So
> > > it is quite normal to recommend to use the main channel.
> > >
> > > Now that I review your patch and look at spiceterm usage, I
> > > understand you are not just passing utf8 input, but you also want
> > > regular key events, thus the synchronization question arise.
> > >
> > > > IMHO, extending the input channel keyboard message format would be
> > > > the right thing to do. Simply send:
> > > >
> > > > - scancode
> > > > - keysym
> > > > - modifier key state
> > > >
> > > > inside a single message.
> > >
> > > That might be a good option too, but that won't be that easy for the
> > > spice server / agent to deal with. And I also think it is useless to
> > > send a single message with all values when clearly only one of the 2
> > > is being used.
> >
> > Ok (although I think such separation only makes thing unnecessarily complex).
>
> For keyboard events generated at human speed, that's not important. I can
> agree to stick gdk/x11 keysyms in existing messages, when the server has
> SPICE_INPUTS_CAP_KEY_KEYVAL. But that's not what you proposed in your last
> patches.
I thought we cannot modify existing message formats - or is that possible?
> > > I am still suggesting adding a utf8 input message (on input
> > > channel), synchronized with other existing XT key events (which
> > > don't have unicode representation).
> >
> > I already sent such patch 2 weeks ago - please can you review?
> >
> > http://lists.freedesktop.org/archives/spice-devel/2013-September/01434
> > 2.html
> > http://lists.freedesktop.org/archives/spice-devel/2013-September/01433
> > 9.html
> > http://lists.freedesktop.org/archives/spice-devel/2013-September/01434
> > 1.html
> > http://lists.freedesktop.org/archives/spice-devel/2013-September/01434
> > 0.html
>
> You didn't explain why you needed to add a new message, and a new DOWN/UP
> flag.
I want to send keysyms. The DOWN/UP flag is required because keysyms does not
include that information.
Note: The Input channel use 3 different message type to indicate UP/DOWN/DOWN_AND_UP for scancodes.
I thought it is easier to use a flag instead.
> How to interpret scancode with the flag? You can't stick 2 3-bytes
> scancodes for DOWN/UP, so is the server supposed to generate the UP
> scancode? (that would be different from existing scancode events)
Not sure what you talk about - My patch does not modify the behavior for scancodes.
It just send an additional message for the keysym (there is no scancode included).
message {
uint32 keyval;
keyboard_keyval_flags flags; # DOWN/UP/DOWN_AND_UP
} @ctype(SpiceMsgcKeyKeyval) key_keyval;
> The spice server can't advertize support for this message by default, it needs to
> be enabled only if the server make use of it. So there need to be an API to
> change server caps (perhaps there is one already).
yes, we need to add that.
> In your server patch, you are not using the scancode.
yes, I only need the keysyms.
>So is the client supposed to send both KeyDown/Up and
> Keyval messages? Then why have scancode sent 2 times?
>
> Perhaps you shouldn't add scancode in your message, and just have gdk/x11
> keysyms then?
You want to suppress normal scancode messages to avoid traffic?
> Shouldn't be all renamed from "keyval" to "gdk_keyval"?
I will name it whatever you like.
It is still not clear to me what patch do you prefer - vdagent protocol extension or the input channel extension?
More information about the Spice-devel
mailing list