* [Qemu-devel] [PATCH 0/3 RFC v2] Support for LED state extension to Qemu VNC server @ 2013-04-19 18:11 Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 1/3] vnc: Add SCROLL lock key to kbd_leds Lei Li ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Lei Li @ 2013-04-19 18:11 UTC (permalink / raw) To: qemu-devel; +Cc: lagarcia, aliguori, Lei Li Hi guys, This patch series tries to add support for LED state extension to Qemu VNC server. The proposal has been sent few days ago as link below: http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg01421.html Hi Anthony, This series has not been completely tested, it takes longer than expected for that I found that it needs to add hack on gtk-vnc not just gvncfb, so still mark it as RFC. Send it out first to make sure I understood your previous suggestions correctly. Please let me know if this seems like the direction we should be headed. Your suggestions and comments are very appreciated! Thanks Changes since v1: - Address the comments from Anthony includes: - Use Pseudo-encoding for led state; - Get rid of send_ext_leds_state_ack; - Add document for the led state Pseudo-encoding. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 1/3] vnc: Add SCROLL lock key to kbd_leds 2013-04-19 18:11 [Qemu-devel] [PATCH 0/3 RFC v2] Support for LED state extension to Qemu VNC server Lei Li @ 2013-04-19 18:11 ` Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 3/3] doc: document the Pseudo-encoding of LED state Lei Li 2 siblings, 0 replies; 9+ messages in thread From: Lei Li @ 2013-04-19 18:11 UTC (permalink / raw) To: qemu-devel; +Cc: lagarcia, aliguori, Lei Li Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> --- ui/vnc.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index 8ee66b7..f574962 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -1525,10 +1525,11 @@ static void press_key(VncState *vs, int keysym) static void kbd_leds(void *opaque, int ledstate) { VncState *vs = opaque; - int caps, num; + int caps, num, scr; caps = ledstate & QEMU_CAPS_LOCK_LED ? 1 : 0; num = ledstate & QEMU_NUM_LOCK_LED ? 1 : 0; + scr = ledstate & QEMU_SCROLL_LOCK_LED ? 1 : 0; if (vs->modifiers_state[0x3a] != caps) { vs->modifiers_state[0x3a] = caps; @@ -1536,6 +1537,9 @@ static void kbd_leds(void *opaque, int ledstate) if (vs->modifiers_state[0x45] != num) { vs->modifiers_state[0x45] = num; } + if (vs->modifiers_state[0x46] != scr) { + vs->modifiers_state[0x46] = scr; + } } static void do_key_event(VncState *vs, int down, int keycode, int sym) -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension 2013-04-19 18:11 [Qemu-devel] [PATCH 0/3 RFC v2] Support for LED state extension to Qemu VNC server Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 1/3] vnc: Add SCROLL lock key to kbd_leds Lei Li @ 2013-04-19 18:11 ` Lei Li 2013-04-22 19:34 ` Anthony Liguori 2013-04-19 18:11 ` [Qemu-devel] [PATCH 3/3] doc: document the Pseudo-encoding of LED state Lei Li 2 siblings, 1 reply; 9+ messages in thread From: Lei Li @ 2013-04-19 18:11 UTC (permalink / raw) To: qemu-devel; +Cc: lagarcia, aliguori, Lei Li Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> --- ui/vnc.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ ui/vnc.h | 4 +++- 2 files changed, 51 insertions(+), 1 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index f574962..e22cca1 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -1522,6 +1522,45 @@ static void press_key(VncState *vs, int keysym) kbd_put_keycode(keycode | SCANCODE_UP); } +static int current_led_state(VncState *vs) +{ + int ledstate = 0; + + if (vs->modifiers_state[0x46]) { + ledstate |= QEMU_SCROLL_LOCK_LED; + } + if (vs->modifiers_state[0x45]) { + ledstate |= QEMU_NUM_LOCK_LED; + } + if (vs->modifiers_state[0x3a]) { + ledstate |= QEMU_CAPS_LOCK_LED; + } + + return ledstate; +} + +static void vnc_led_state_change(VncState *vs) +{ + int ledstate = 0; + + if (!vnc_has_feature(vs, VNC_FEATURE_LED_STATE)) { + return; + } + + ledstate = current_led_state(vs); + vnc_lock_output(vs); + vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE); + vnc_write_u8(vs, 0); + vnc_write_u16(vs, 1); + vnc_framebuffer_update(vs, 0, 0, + surface_width(vs->vd->ds), + surface_height(vs->vd->ds), + VNC_ENCODING_LED_STATE); + vnc_write_u8(vs, ledstate); + vnc_unlock_output(vs); + vnc_flush(vs); +} + static void kbd_leds(void *opaque, int ledstate) { VncState *vs = opaque; @@ -1540,6 +1579,11 @@ static void kbd_leds(void *opaque, int ledstate) if (vs->modifiers_state[0x46] != scr) { vs->modifiers_state[0x46] = scr; } + + /* Sending the current led state message to the client */ + if (ledstate != current_led_state(vs)) { + vnc_led_state_change(vs); + } } static void do_key_event(VncState *vs, int down, int keycode, int sym) @@ -1893,6 +1937,9 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) case VNC_ENCODING_WMVi: vs->features |= VNC_FEATURE_WMVI_MASK; break; + case VNC_ENCODING_LED_STATE: + vs->features |= VNC_FEATURE_LED_STATE_MASK; + break; case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 + 9: vs->tight.compression = (enc & 0x0F); break; @@ -1908,6 +1955,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) } vnc_desktop_resize(vs); check_pointer_type_change(&vs->mouse_mode_notifier, NULL); + vnc_led_state_change(vs); } static void set_pixel_conversion(VncState *vs) diff --git a/ui/vnc.h b/ui/vnc.h index ad1dec2..e873377 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -384,6 +384,7 @@ enum { #define VNC_ENCODING_EXT_KEY_EVENT 0XFFFFFEFE /* -258 */ #define VNC_ENCODING_AUDIO 0XFFFFFEFD /* -259 */ #define VNC_ENCODING_TIGHT_PNG 0xFFFFFEFC /* -260 */ +#define VNC_ENCODING_LED_STATE 0XFFFFFEFB /* -261 */ #define VNC_ENCODING_WMVi 0x574D5669 /***************************************************************************** @@ -422,6 +423,7 @@ enum { #define VNC_FEATURE_TIGHT_PNG 8 #define VNC_FEATURE_ZRLE 9 #define VNC_FEATURE_ZYWRLE 10 +#define VNC_FEATURE_LED_STATE 11 #define VNC_FEATURE_RESIZE_MASK (1 << VNC_FEATURE_RESIZE) #define VNC_FEATURE_HEXTILE_MASK (1 << VNC_FEATURE_HEXTILE) @@ -434,7 +436,7 @@ enum { #define VNC_FEATURE_TIGHT_PNG_MASK (1 << VNC_FEATURE_TIGHT_PNG) #define VNC_FEATURE_ZRLE_MASK (1 << VNC_FEATURE_ZRLE) #define VNC_FEATURE_ZYWRLE_MASK (1 << VNC_FEATURE_ZYWRLE) - +#define VNC_FEATURE_LED_STATE_MASK (1 << VNC_FEATURE_LED_STATE) /* Client -> Server message IDs */ #define VNC_MSG_CLIENT_SET_PIXEL_FORMAT 0 -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension 2013-04-19 18:11 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li @ 2013-04-22 19:34 ` Anthony Liguori 0 siblings, 0 replies; 9+ messages in thread From: Anthony Liguori @ 2013-04-22 19:34 UTC (permalink / raw) To: Lei Li, qemu-devel; +Cc: lagarcia Lei Li <lilei@linux.vnet.ibm.com> writes: > Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> > --- > ui/vnc.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > ui/vnc.h | 4 +++- > 2 files changed, 51 insertions(+), 1 deletions(-) > > diff --git a/ui/vnc.c b/ui/vnc.c > index f574962..e22cca1 100644 > --- a/ui/vnc.c > +++ b/ui/vnc.c > @@ -1522,6 +1522,45 @@ static void press_key(VncState *vs, int keysym) > kbd_put_keycode(keycode | SCANCODE_UP); > } > > +static int current_led_state(VncState *vs) > +{ > + int ledstate = 0; > + > + if (vs->modifiers_state[0x46]) { > + ledstate |= QEMU_SCROLL_LOCK_LED; > + } > + if (vs->modifiers_state[0x45]) { > + ledstate |= QEMU_NUM_LOCK_LED; > + } > + if (vs->modifiers_state[0x3a]) { > + ledstate |= QEMU_CAPS_LOCK_LED; > + } > + > + return ledstate; > +} > + > +static void vnc_led_state_change(VncState *vs) > +{ > + int ledstate = 0; > + > + if (!vnc_has_feature(vs, VNC_FEATURE_LED_STATE)) { > + return; > + } > + > + ledstate = current_led_state(vs); > + vnc_lock_output(vs); > + vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE); > + vnc_write_u8(vs, 0); > + vnc_write_u16(vs, 1); > + vnc_framebuffer_update(vs, 0, 0, > + surface_width(vs->vd->ds), > + surface_height(vs->vd->ds), This can just be 1, 1. You don't have to send the actual width/height. Otherwise, looks pretty good. Regards, Anthony Liguori > + VNC_ENCODING_LED_STATE); > + vnc_write_u8(vs, ledstate); > + vnc_unlock_output(vs); > + vnc_flush(vs); > +} > + > static void kbd_leds(void *opaque, int ledstate) > { > VncState *vs = opaque; > @@ -1540,6 +1579,11 @@ static void kbd_leds(void *opaque, int ledstate) > if (vs->modifiers_state[0x46] != scr) { > vs->modifiers_state[0x46] = scr; > } > + > + /* Sending the current led state message to the client */ > + if (ledstate != current_led_state(vs)) { > + vnc_led_state_change(vs); > + } > } > > static void do_key_event(VncState *vs, int down, int keycode, int sym) > @@ -1893,6 +1937,9 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) > case VNC_ENCODING_WMVi: > vs->features |= VNC_FEATURE_WMVI_MASK; > break; > + case VNC_ENCODING_LED_STATE: > + vs->features |= VNC_FEATURE_LED_STATE_MASK; > + break; > case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 + 9: > vs->tight.compression = (enc & 0x0F); > break; > @@ -1908,6 +1955,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) > } > vnc_desktop_resize(vs); > check_pointer_type_change(&vs->mouse_mode_notifier, NULL); > + vnc_led_state_change(vs); > } > > static void set_pixel_conversion(VncState *vs) > diff --git a/ui/vnc.h b/ui/vnc.h > index ad1dec2..e873377 100644 > --- a/ui/vnc.h > +++ b/ui/vnc.h > @@ -384,6 +384,7 @@ enum { > #define VNC_ENCODING_EXT_KEY_EVENT 0XFFFFFEFE /* -258 */ > #define VNC_ENCODING_AUDIO 0XFFFFFEFD /* -259 */ > #define VNC_ENCODING_TIGHT_PNG 0xFFFFFEFC /* -260 */ > +#define VNC_ENCODING_LED_STATE 0XFFFFFEFB /* -261 */ > #define VNC_ENCODING_WMVi 0x574D5669 > > /***************************************************************************** > @@ -422,6 +423,7 @@ enum { > #define VNC_FEATURE_TIGHT_PNG 8 > #define VNC_FEATURE_ZRLE 9 > #define VNC_FEATURE_ZYWRLE 10 > +#define VNC_FEATURE_LED_STATE 11 > > #define VNC_FEATURE_RESIZE_MASK (1 << VNC_FEATURE_RESIZE) > #define VNC_FEATURE_HEXTILE_MASK (1 << VNC_FEATURE_HEXTILE) > @@ -434,7 +436,7 @@ enum { > #define VNC_FEATURE_TIGHT_PNG_MASK (1 << VNC_FEATURE_TIGHT_PNG) > #define VNC_FEATURE_ZRLE_MASK (1 << VNC_FEATURE_ZRLE) > #define VNC_FEATURE_ZYWRLE_MASK (1 << VNC_FEATURE_ZYWRLE) > - > +#define VNC_FEATURE_LED_STATE_MASK (1 << VNC_FEATURE_LED_STATE) > > /* Client -> Server message IDs */ > #define VNC_MSG_CLIENT_SET_PIXEL_FORMAT 0 > -- > 1.7.7.6 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 3/3] doc: document the Pseudo-encoding of LED state 2013-04-19 18:11 [Qemu-devel] [PATCH 0/3 RFC v2] Support for LED state extension to Qemu VNC server Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 1/3] vnc: Add SCROLL lock key to kbd_leds Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li @ 2013-04-19 18:11 ` Lei Li 2013-04-22 19:36 ` Anthony Liguori 2 siblings, 1 reply; 9+ messages in thread From: Lei Li @ 2013-04-19 18:11 UTC (permalink / raw) To: qemu-devel; +Cc: lagarcia, aliguori, Lei Li Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> --- docs/vnc-ledstate-Pseudo-encoding.txt | 33 +++++++++++++++++++++++++++++++++ 1 files changed, 33 insertions(+), 0 deletions(-) create mode 100644 docs/vnc-ledstate-Pseudo-encoding.txt diff --git a/docs/vnc-ledstate-Pseudo-encoding.txt b/docs/vnc-ledstate-Pseudo-encoding.txt new file mode 100644 index 0000000..3f3fd15 --- /dev/null +++ b/docs/vnc-ledstate-Pseudo-encoding.txt @@ -0,0 +1,33 @@ +VNC LED state Pseudo-encoding +============================= + +Introduction +------------ + +This document describes the Pseudo-encoding of LED state for RFB which +is the protocol used in VNC as reference link below: + +http://tigervnc.svn.sourceforge.net/viewvc/tigervnc/rfbproto/rfbproto.rst?content-type=text/plain + +When accessing a guest by console through VNC, there might be mismatch +between the lock keys notification LED on the computer running the VNC +client session and the current status of the lock keys on the guest +machine. + +To solve this problem it attempts to add LED state Pseudo-encoding +extension to VNC protocol to deal with setting LED state. + +Example +------- + +The example psuedo-encodings for LED state defined as following: + +======= =============================================================== +Code Description +======= =============================================================== +100 CapsLock is set +010 NumLock is set +001 ScrollLock is set +110 CapsLock and NumLock are set +111 CapsLock, NumLock and ScrollLock are set +======= =============================================================== -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH 3/3] doc: document the Pseudo-encoding of LED state 2013-04-19 18:11 ` [Qemu-devel] [PATCH 3/3] doc: document the Pseudo-encoding of LED state Lei Li @ 2013-04-22 19:36 ` Anthony Liguori 0 siblings, 0 replies; 9+ messages in thread From: Anthony Liguori @ 2013-04-22 19:36 UTC (permalink / raw) To: Lei Li, qemu-devel; +Cc: lagarcia Lei Li <lilei@linux.vnet.ibm.com> writes: > Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> > --- > docs/vnc-ledstate-Pseudo-encoding.txt | 33 +++++++++++++++++++++++++++++++++ > 1 files changed, 33 insertions(+), 0 deletions(-) > create mode 100644 docs/vnc-ledstate-Pseudo-encoding.txt > > diff --git a/docs/vnc-ledstate-Pseudo-encoding.txt b/docs/vnc-ledstate-Pseudo-encoding.txt > new file mode 100644 > index 0000000..3f3fd15 > --- /dev/null > +++ b/docs/vnc-ledstate-Pseudo-encoding.txt > @@ -0,0 +1,33 @@ > +VNC LED state Pseudo-encoding > +============================= > + > +Introduction > +------------ > + > +This document describes the Pseudo-encoding of LED state for RFB which > +is the protocol used in VNC as reference link below: > + > +http://tigervnc.svn.sourceforge.net/viewvc/tigervnc/rfbproto/rfbproto.rst?content-type=text/plain > + > +When accessing a guest by console through VNC, there might be mismatch > +between the lock keys notification LED on the computer running the VNC > +client session and the current status of the lock keys on the guest > +machine. > + > +To solve this problem it attempts to add LED state Pseudo-encoding > +extension to VNC protocol to deal with setting LED state. > + > +Example > +------- > + > +The example psuedo-encodings for LED state defined as following: > + > +======= =============================================================== > +Code Description > +======= =============================================================== > +100 CapsLock is set > +010 NumLock is set > +001 ScrollLock is set > +110 CapsLock and NumLock are set > +111 CapsLock, NumLock and ScrollLock are set > +======= > =============================================================== You can just describe that each bit represents the Caps, Num, and Scroll lock key respectively and that '1' indicates that the LED should be on and '0' should be off. You should also list the psuedo-encoding number somewhere in this document. Regards, Anthony Liguori > -- > 1.7.7.6 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 0/3 v3] Support for LED state extension to Qemu VNC server @ 2013-04-24 10:12 Lei Li 2013-04-24 10:12 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li 0 siblings, 1 reply; 9+ messages in thread From: Lei Li @ 2013-04-24 10:12 UTC (permalink / raw) To: qemu-devel; +Cc: lagarcia, aliguori, Lei Li Hi guys, This patch series tries to add support for LED state extension to Qemu VNC server. The proposal has been sent few days ago as link below: http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg01421.html The previous version as link: http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg03988.html Pleae let me know if there is anything else need be improved. Thanks! Changes since v2: - Address the comments from Anthony includes: - Just send 1 instead of the actual width and height. - Improve the document by adding the Pseudo-encoding number and simplify the description of the LED state encoding. Changes since v1: - Address the comments from Anthony includes: - Use Pseudo-encoding for led state; - Get rid of send_ext_leds_state_ack; - Add document for the led state Pseudo-encoding. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension 2013-04-24 10:12 [Qemu-devel] [PATCH 0/3 v3] Support for LED state extension to Qemu VNC server Lei Li @ 2013-04-24 10:12 ` Lei Li 2013-04-24 11:44 ` Gerd Hoffmann 0 siblings, 1 reply; 9+ messages in thread From: Lei Li @ 2013-04-24 10:12 UTC (permalink / raw) To: qemu-devel; +Cc: lagarcia, aliguori, Lei Li Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> --- ui/vnc.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ ui/vnc.h | 4 +++- 2 files changed, 48 insertions(+), 1 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index f574962..44189d7 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -1522,6 +1522,42 @@ static void press_key(VncState *vs, int keysym) kbd_put_keycode(keycode | SCANCODE_UP); } +static int current_led_state(VncState *vs) +{ + int ledstate = 0; + + if (vs->modifiers_state[0x46]) { + ledstate |= QEMU_SCROLL_LOCK_LED; + } + if (vs->modifiers_state[0x45]) { + ledstate |= QEMU_NUM_LOCK_LED; + } + if (vs->modifiers_state[0x3a]) { + ledstate |= QEMU_CAPS_LOCK_LED; + } + + return ledstate; +} + +static void vnc_led_state_change(VncState *vs) +{ + int ledstate = 0; + + if (!vnc_has_feature(vs, VNC_FEATURE_LED_STATE)) { + return; + } + + ledstate = current_led_state(vs); + vnc_lock_output(vs); + vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE); + vnc_write_u8(vs, 0); + vnc_write_u16(vs, 1); + vnc_framebuffer_update(vs, 0, 0, 1, 1, VNC_ENCODING_LED_STATE); + vnc_write_u8(vs, ledstate); + vnc_unlock_output(vs); + vnc_flush(vs); +} + static void kbd_leds(void *opaque, int ledstate) { VncState *vs = opaque; @@ -1540,6 +1576,11 @@ static void kbd_leds(void *opaque, int ledstate) if (vs->modifiers_state[0x46] != scr) { vs->modifiers_state[0x46] = scr; } + + /* Sending the current led state message to the client */ + if (ledstate != current_led_state(vs)) { + vnc_led_state_change(vs); + } } static void do_key_event(VncState *vs, int down, int keycode, int sym) @@ -1893,6 +1934,9 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) case VNC_ENCODING_WMVi: vs->features |= VNC_FEATURE_WMVI_MASK; break; + case VNC_ENCODING_LED_STATE: + vs->features |= VNC_FEATURE_LED_STATE_MASK; + break; case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 + 9: vs->tight.compression = (enc & 0x0F); break; @@ -1908,6 +1952,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) } vnc_desktop_resize(vs); check_pointer_type_change(&vs->mouse_mode_notifier, NULL); + vnc_led_state_change(vs); } static void set_pixel_conversion(VncState *vs) diff --git a/ui/vnc.h b/ui/vnc.h index ad1dec2..e873377 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -384,6 +384,7 @@ enum { #define VNC_ENCODING_EXT_KEY_EVENT 0XFFFFFEFE /* -258 */ #define VNC_ENCODING_AUDIO 0XFFFFFEFD /* -259 */ #define VNC_ENCODING_TIGHT_PNG 0xFFFFFEFC /* -260 */ +#define VNC_ENCODING_LED_STATE 0XFFFFFEFB /* -261 */ #define VNC_ENCODING_WMVi 0x574D5669 /***************************************************************************** @@ -422,6 +423,7 @@ enum { #define VNC_FEATURE_TIGHT_PNG 8 #define VNC_FEATURE_ZRLE 9 #define VNC_FEATURE_ZYWRLE 10 +#define VNC_FEATURE_LED_STATE 11 #define VNC_FEATURE_RESIZE_MASK (1 << VNC_FEATURE_RESIZE) #define VNC_FEATURE_HEXTILE_MASK (1 << VNC_FEATURE_HEXTILE) @@ -434,7 +436,7 @@ enum { #define VNC_FEATURE_TIGHT_PNG_MASK (1 << VNC_FEATURE_TIGHT_PNG) #define VNC_FEATURE_ZRLE_MASK (1 << VNC_FEATURE_ZRLE) #define VNC_FEATURE_ZYWRLE_MASK (1 << VNC_FEATURE_ZYWRLE) - +#define VNC_FEATURE_LED_STATE_MASK (1 << VNC_FEATURE_LED_STATE) /* Client -> Server message IDs */ #define VNC_MSG_CLIENT_SET_PIXEL_FORMAT 0 -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension 2013-04-24 10:12 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li @ 2013-04-24 11:44 ` Gerd Hoffmann 2013-04-25 3:53 ` Lei Li 0 siblings, 1 reply; 9+ messages in thread From: Gerd Hoffmann @ 2013-04-24 11:44 UTC (permalink / raw) To: Lei Li; +Cc: lagarcia, aliguori, qemu-devel Hi, > + case VNC_ENCODING_LED_STATE: > + vs->features |= VNC_FEATURE_LED_STATE_MASK; > + break; I think it with the client supporting the led state extension it is probably a good idea to turn off the lock state sync logic in qemu's vnc server, i.e. add a "!(vs->features & VNC_FEATURE_LED_STATE_MASK)" check next to the lock_key_sync checks in do_key_event(). cheers, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension 2013-04-24 11:44 ` Gerd Hoffmann @ 2013-04-25 3:53 ` Lei Li 0 siblings, 0 replies; 9+ messages in thread From: Lei Li @ 2013-04-25 3:53 UTC (permalink / raw) To: Gerd Hoffmann; +Cc: lagarcia, aliguori, qemu-devel On 04/24/2013 07:44 PM, Gerd Hoffmann wrote: > Hi, > >> + case VNC_ENCODING_LED_STATE: >> + vs->features |= VNC_FEATURE_LED_STATE_MASK; >> + break; > I think it with the client supporting the led state extension it is > probably a good idea to turn off the lock state sync logic in qemu's vnc > server, i.e. add a "!(vs->features & VNC_FEATURE_LED_STATE_MASK)" check > next to the lock_key_sync checks in do_key_event(). > > cheers, > Gerd Hi Gerd, Yes, I think it's a good idea. Thanks! > -- Lei ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-04-25 3:54 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-04-19 18:11 [Qemu-devel] [PATCH 0/3 RFC v2] Support for LED state extension to Qemu VNC server Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 1/3] vnc: Add SCROLL lock key to kbd_leds Lei Li 2013-04-19 18:11 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li 2013-04-22 19:34 ` Anthony Liguori 2013-04-19 18:11 ` [Qemu-devel] [PATCH 3/3] doc: document the Pseudo-encoding of LED state Lei Li 2013-04-22 19:36 ` Anthony Liguori -- strict thread matches above, loose matches on Subject: below -- 2013-04-24 10:12 [Qemu-devel] [PATCH 0/3 v3] Support for LED state extension to Qemu VNC server Lei Li 2013-04-24 10:12 ` [Qemu-devel] [PATCH 2/3] vnc: Support for LED state extension Lei Li 2013-04-24 11:44 ` Gerd Hoffmann 2013-04-25 3:53 ` Lei Li
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).