From: Quentin Smith Date: Mon, 8 Oct 2007 01:44:45 +0000 (-0400) Subject: Added control and alt checkboxes, for ease of typing modifier sequences X-Git-Tag: sipb-xen-vnc-client/1~3 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-vnc-client.git/commitdiff_plain/a824f7ccc88825c5ba5a3f990cfaf3530b9d88a6 Added control and alt checkboxes, for ease of typing modifier sequences svn path=/trunk/vnc/vnc_javasrc/; revision=128 --- diff --git a/ButtonPanel.java b/ButtonPanel.java index 5cae865..73f2446 100644 --- a/ButtonPanel.java +++ b/ButtonPanel.java @@ -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; + } } diff --git a/VncCanvas.java b/VncCanvas.java index df84409..4cb7d63 100644 --- a/VncCanvas.java +++ b/VncCanvas.java @@ -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();