1 Index: invirt-vnc-client/ButtonPanel.java
2 ===================================================================
3 --- invirt-vnc-client.orig/ButtonPanel.java 2008-10-31 06:08:45.000000000 -0400
4 +++ invirt-vnc-client/ButtonPanel.java 2008-10-31 06:09:10.000000000 -0400
6 import java.awt.event.*;
9 -class ButtonPanel extends Panel implements ActionListener {
10 +class ButtonPanel extends Panel implements ActionListener, ItemListener {
13 Button disconnectButton;
15 Button clipboardButton;
16 Button ctrlAltDelButton;
18 + Checkbox altCheckbox;
19 + Checkbox ctrlCheckbox;
21 ButtonPanel(VncViewer v) {
24 refreshButton.setEnabled(false);
26 refreshButton.addActionListener(this);
28 + altCheckbox = new Checkbox("Alt");
29 + altCheckbox.setEnabled(false);
31 + altCheckbox.addItemListener(this);
32 + ctrlCheckbox = new Checkbox("Control");
33 + ctrlCheckbox.setEnabled(false);
35 + ctrlCheckbox.addItemListener(this);
41 public void enableRemoteAccessControls(boolean enable) {
42 ctrlAltDelButton.setEnabled(enable);
43 + ctrlCheckbox.setEnabled(enable);
44 + altCheckbox.setEnabled(enable);
52 + public void itemStateChanged(ItemEvent evt) {
53 + viewer.moveFocusToDesktop();
54 + int state = evt.getStateChange();
55 + int extraModifiers = 0;
56 + if (altCheckbox.getState()) { extraModifiers |= InputEvent.ALT_MASK; }
57 + if (ctrlCheckbox.getState()) { extraModifiers |= InputEvent.CTRL_MASK; }
58 + viewer.vc.extraModifiers = extraModifiers;
62 Index: invirt-vnc-client/VncCanvas.java
63 ===================================================================
64 --- invirt-vnc-client.orig/VncCanvas.java 2008-10-31 06:08:45.000000000 -0400
65 +++ invirt-vnc-client/VncCanvas.java 2008-10-31 06:09:10.000000000 -0400
68 // True if we process keyboard and mouse events.
70 + int extraModifiers = 0;
78 + if (extraModifiers != 0) {
79 + evt.setModifiers(evt.getModifiers() | extraModifiers);
81 rfb.writeKeyEvent(evt);
82 } catch (Exception e) {