[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#555988: linuxvnc: wrong process of control key state



Package: linuxvnc
Version: 0.9.3.dfsg.1-1

Hi,

When I use tightvnc client connect to linuxvnc, I found a bug
of linuxvnc. Please give it a try, you will find you can't input
any words.

I checked the code and found what's wrong.

do_key () in LinuxVNC.c use a variable `static char isControl`
to track control key state.

if (down) {
if(keySym==XK_Control_L || keySym==XK_Control_R)
isControl++;
...
} else if(keySym==XK_Control_L || keySym==XK_Control_R)
isControl--;

Obviously there is something wrong. If control key is not down
currently, but
a control key up event arrives, isControl will be corrupted.

It should be corrected like this

if (down) {
if(keySym==XK_Control_L || keySym==XK_Control_R)
isControl++;
...
} else if(keySym==XK_Control_L || keySym==XK_Control_R)
if (isControl)
isControl--;

unfortunately, tightvnc will send several control key up events to
sync control key state after connected. due to the wrong process
of control key state in linuxvnc, you can't input any words.

Regards
Bin Tian





Reply to: