Hi there,
Just found that "Ctrl-Tab" is sent as "Ctrl-I" and "Ctrl-Shift-Tab" as
"Ctrl-Y" in the Java version of vncviewer. The following piece of code
seems to be the culprit:
In CConn.java:
public void writeKeyEvent(KeyEvent ev) {
....
if (ev.getKeyChar() < 32) {
// if the ctrl modifier key is down, send the equivalent ASCII since we
// will send the ctrl modifier anyway
if ((currentModifiers & KeyEvent.CTRL_MASK) != 0) {
if ((currentModifiers & KeyEvent.SHIFT_MASK) != 0) {
keysym = ev.getKeyChar() + 64;
if (keysym == -1)
return;
} else {
keysym = ev.getKeyChar() + 96;
if (keysym == 127) keysym = 95;
}
} else {
switch (keycode) {
case KeyEvent.VK_BACK_SPACE: keysym = Keysyms.BackSpace; break;
case KeyEvent.VK_TAB: keysym = Keysyms.Tab; break;
case KeyEvent.VK_ENTER: keysym = Keysyms.Return; break;
case KeyEvent.VK_ESCAPE: keysym = Keysyms.Escape; break;
default: return;
}
}
}
...
The KeyChar for TAB is 9. Not sure how it eventually becomes I or Y.
Anyway, if rewritten as this the problem is solved:
if (ev.getKeyChar() < 32) {
switch (ev.getKeyCode()) {
case KeyEvent.VK_BACK_SPACE: keysym = Keysyms.BackSpace; break;
case KeyEvent.VK_TAB: keysym = Keysyms.Tab; break;
case KeyEvent.VK_ENTER: keysym = Keysyms.Return; break;
case KeyEvent.VK_ESCAPE: keysym = Keysyms.Escape; break;
default:
// if the ctrl modifier key is down, send the equivalent ASCII
since we
// will send the ctrl modifier anyway
if ((ev.getModifiers() & KeyEvent.CTRL_MASK) != 0) {
if ((ev.getModifiers() & KeyEvent.SHIFT_MASK) != 0) {
keysym = ev.getKeyChar() + 64;
if (keysym == -1)
return;
} else {
keysym = ev.getKeyChar() + 96;
if (keysym == 127) keysym = 95;
}
} else {
return;
}
}
--
Zuxy
Beauty is truth,
While truth is beauty.
PGP KeyID: E8555ED6
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Tigervnc-users mailing list
Tigervnc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-users