Added control and alt checkboxes, for ease of typing modifier sequences
authorQuentin Smith <quentin@mit.edu>
Mon, 8 Oct 2007 01:44:45 +0000 (21:44 -0400)
committerQuentin Smith <quentin@mit.edu>
Mon, 8 Oct 2007 01:44:45 +0000 (21:44 -0400)
svn path=/trunk/vnc/vnc_javasrc/; revision=128

ButtonPanel.java
VncCanvas.java

index 5cae865..73f2446 100644 (file)
@@ -27,7 +27,7 @@ import java.awt.*;
 import java.awt.event.*;
 import java.io.*;
 
-class ButtonPanel extends Panel implements ActionListener {
+class ButtonPanel extends Panel implements ActionListener, ItemListener {
 
   VncViewer viewer;
   Button disconnectButton;
@@ -36,6 +36,8 @@ class ButtonPanel extends Panel implements ActionListener {
   Button clipboardButton;
   Button ctrlAltDelButton;
   Button refreshButton;
+  Checkbox altCheckbox;
+  Checkbox ctrlCheckbox;
 
   ButtonPanel(VncViewer v) {
     viewer = v;
@@ -65,6 +67,15 @@ class ButtonPanel extends Panel implements ActionListener {
     refreshButton.setEnabled(false);
     add(refreshButton);
     refreshButton.addActionListener(this);
+    
+    altCheckbox = new Checkbox("Alt");
+    altCheckbox.setEnabled(false);
+    add(altCheckbox);
+    altCheckbox.addItemListener(this);
+    ctrlCheckbox = new Checkbox("Control");
+    ctrlCheckbox.setEnabled(false);
+    add(ctrlCheckbox);
+    ctrlCheckbox.addItemListener(this);
   }
 
   //
@@ -103,6 +114,8 @@ class ButtonPanel extends Panel implements ActionListener {
 
   public void enableRemoteAccessControls(boolean enable) {
     ctrlAltDelButton.setEnabled(enable);
+    ctrlCheckbox.setEnabled(enable);
+    altCheckbox.setEnabled(enable);
   }
 
   //
@@ -150,5 +163,13 @@ class ButtonPanel extends Panel implements ActionListener {
       }
     }
   }
+    public void itemStateChanged(ItemEvent evt) {
+       viewer.moveFocusToDesktop();
+       int state = evt.getStateChange();
+       int extraModifiers = 0;
+       if (altCheckbox.getState()) { extraModifiers |= InputEvent.ALT_MASK; }
+       if (ctrlCheckbox.getState()) { extraModifiers |= InputEvent.CTRL_MASK; }
+       viewer.vc.extraModifiers = extraModifiers;
+    }
 }
 
index df84409..4cb7d63 100644 (file)
@@ -79,6 +79,7 @@ class VncCanvas extends Canvas
 
   // True if we process keyboard and mouse events.
   boolean inputEnabled;
+  int extraModifiers = 0;
 
   //
   // The constructors.
@@ -1510,6 +1511,9 @@ class VncCanvas extends Canvas
        // Input enabled.
        synchronized(rfb) {
          try {
+           if (extraModifiers != 0) {
+             evt.setModifiers(evt.getModifiers() | extraModifiers);
+           }
            rfb.writeKeyEvent(evt);
          } catch (Exception e) {
            e.printStackTrace();