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

Reply via email to