aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Hinz <bphinz@users.sourceforge.net>2012-05-16 03:51:42 +0000
committerBrian Hinz <bphinz@users.sourceforge.net>2012-05-16 03:51:42 +0000
commit605305341143de6c66fdac96e3cda4e7cf4b517d (patch)
tree92623d976651f322b7dc12008a94ea6c783d5435
parent19810efe31bad78889dc001ecd8b62e2ee91bf30 (diff)
downloadtigervnc-605305341143de6c66fdac96e3cda4e7cf4b517d.tar.gz
tigervnc-605305341143de6c66fdac96e3cda4e7cf4b517d.zip
Adds support for setting the menu key via cmd line arg. Adds all menu keys supported by native viewer to the combo box in the OptionsDialog.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4914 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r--java/com/tigervnc/vncviewer/CConn.java10
-rw-r--r--java/com/tigervnc/vncviewer/DesktopWindow.java3
-rw-r--r--java/com/tigervnc/vncviewer/F8Menu.java6
-rw-r--r--java/com/tigervnc/vncviewer/OptionsDialog.java5
-rw-r--r--java/com/tigervnc/vncviewer/VncViewer.java9
-rw-r--r--java/com/tigervnc/vncviewer/menukey.java86
6 files changed, 102 insertions, 17 deletions
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index 92781488..e3ab1763 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -165,7 +165,7 @@ public class CConn extends CConnection
autoSelect = viewer.autoSelect.getValue();
formatChange = false; encodingChange = false;
fullScreen = viewer.fullScreen.getValue();
- menuKey = Keysyms.F8;
+ menuKeyCode = menukey.getMenuKeyCode();
options = new OptionsDialog(this);
options.initDialog();
clipboardDialog = new ClipboardDialog(this);
@@ -876,7 +876,7 @@ public class CConn extends CConnection
options.viewOnly.setSelected(viewer.viewOnly.getValue());
options.acceptClipboard.setSelected(viewer.acceptClipboard.getValue());
options.sendClipboard.setSelected(viewer.sendClipboard.getValue());
- options.menuKey.setSelectedIndex(menuKey-0xFFBE);
+ options.menuKey.setSelectedItem(KeyEvent.getKeyText(menukey.getMenuKeyCode()));
if (state() == RFBSTATE_NORMAL) {
options.shared.setEnabled(false);
@@ -1073,8 +1073,8 @@ public class CConn extends CConnection
}
clipboardDialog.setSendingEnabled(viewer.sendClipboard.getValue());
- menuKey = (options.menuKey.getSelectedIndex()+0xFFBE);
- F8Menu.f8.setText("Send F"+(menuKey-Keysyms.F1+1));
+ viewer.menuKey.setParam(menukey.getMenuKeySymbols()[options.menuKey.getSelectedIndex()].name);
+ F8Menu.f8.setText("Send "+KeyEvent.getKeyText(menukey.getMenuKeyCode()));
setShared(options.shared.isSelected());
viewer.useLocalCursor.setParam(options.useLocalCursor.isSelected());
@@ -1455,7 +1455,7 @@ public class CConn extends CConnection
private boolean supportsSyncFence;
- public int menuKey;
+ public int menuKeyCode;
ViewportFrame viewport;
private boolean fullColour;
private boolean autoSelect;
diff --git a/java/com/tigervnc/vncviewer/DesktopWindow.java b/java/com/tigervnc/vncviewer/DesktopWindow.java
index 178f93d2..3ef25f3a 100644
--- a/java/com/tigervnc/vncviewer/DesktopWindow.java
+++ b/java/com/tigervnc/vncviewer/DesktopWindow.java
@@ -409,8 +409,7 @@ class DesktopWindow extends JPanel implements
public void keyReleased(KeyEvent e) {}
/** Handle the key-pressed event. */
public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() ==
- (KeyEvent.VK_F1+cc.menuKey-Keysyms.F1)) {
+ if (e.getKeyCode() == menukey.getMenuKeyCode()) {
int sx = (scaleWidthRatio == 1.00)
? lastX : (int)Math.floor(lastX*scaleWidthRatio);
int sy = (scaleHeightRatio == 1.00)
diff --git a/java/com/tigervnc/vncviewer/F8Menu.java b/java/com/tigervnc/vncviewer/F8Menu.java
index 6a06786e..ca09ac20 100644
--- a/java/com/tigervnc/vncviewer/F8Menu.java
+++ b/java/com/tigervnc/vncviewer/F8Menu.java
@@ -51,7 +51,7 @@ public class F8Menu extends JPopupMenu implements ActionListener {
addSeparator();
clipboard = addMenuItem("Clipboard...");
addSeparator();
- f8 = addMenuItem("Send F"+(cc.menuKey-Keysyms.F1+1));
+ f8 = addMenuItem("Send "+KeyEvent.getKeyText(menukey.getMenuKeyCode()), menukey.getMenuKeyCode());
ctrlAltDel = addMenuItem("Send Ctrl-Alt-Del");
addSeparator();
refresh = addMenuItem("Refresh Screen", KeyEvent.VK_H);
@@ -100,8 +100,8 @@ public class F8Menu extends JPopupMenu implements ActionListener {
} else if (actionMatch(ev, clipboard)) {
cc.clipboardDialog.showDialog(cc.viewport);
} else if (actionMatch(ev, f8)) {
- cc.writeKeyEvent(cc.menuKey, true);
- cc.writeKeyEvent(cc.menuKey, false);
+ cc.writeKeyEvent(cc.menuKeyCode, true);
+ cc.writeKeyEvent(cc.menuKeyCode, false);
} else if (actionMatch(ev, ctrlAltDel)) {
cc.writeKeyEvent(Keysyms.Control_L, true);
cc.writeKeyEvent(Keysyms.Alt_L, true);
diff --git a/java/com/tigervnc/vncviewer/OptionsDialog.java b/java/com/tigervnc/vncviewer/OptionsDialog.java
index 8cf0b1b1..1be5ece8 100644
--- a/java/com/tigervnc/vncviewer/OptionsDialog.java
+++ b/java/com/tigervnc/vncviewer/OptionsDialog.java
@@ -132,8 +132,9 @@ class OptionsDialog extends Dialog implements
sendClipboard = new JCheckBox("Send clipboard to server");
sendClipboard.addItemListener(this);
JLabel menuKeyLabel = new JLabel("Menu Key");
- String[] menuKeys =
- { "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12" };
+ String[] menuKeys = new String[menukey.getMenuKeySymbolCount()];
+ for (int i = 0; i < menukey.getMenuKeySymbolCount(); i++)
+ menuKeys[i] = KeyEvent.getKeyText(menukey.getMenuKeySymbols()[i].keycode);
menuKey = new JComboBox(menuKeys);
menuKey.addItemListener(this);
addGBComponent(viewOnly,InputsPanel, 0, 0, 2, 1, 2, 2, 1, 0, GridBagConstraints.HORIZONTAL, GridBagConstraints.LINE_START, new Insets(4,5,0,5));
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index e433bf9d..a15ee58e 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -445,11 +445,10 @@ public class VncViewer extends java.applet.Applet implements Runnable
= new BoolParameter("SendClipboard",
"Send clipboard changes to the server",
true);
- // FIXME
- //StringParameter menuKey
- //= new StringParameter("MenuKey",
- // "The key which brings up the popup menu",
- // "F8");
+ StringParameter menuKey
+ = new StringParameter("MenuKey",
+ "The key which brings up the popup menu",
+ "F8");
StringParameter desktopSize
= new StringParameter("DesktopSize",
"Reconfigure desktop size on the server on "+
diff --git a/java/com/tigervnc/vncviewer/menukey.java b/java/com/tigervnc/vncviewer/menukey.java
new file mode 100644
index 00000000..10f1d103
--- /dev/null
+++ b/java/com/tigervnc/vncviewer/menukey.java
@@ -0,0 +1,86 @@
+/* Copyright 2011 Martin Koegler <mkoegler@auto.tuwien.ac.at>
+ * Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ * Copyright 2012 Brian P. Hinz
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+package com.tigervnc.vncviewer;
+
+import java.awt.event.KeyEvent;
+
+import com.tigervnc.rfb.*;
+
+public class menukey
+{
+ static class MenuKeySymbol {
+ public MenuKeySymbol(String name_, int keycode_) {
+ name = name_;
+ keycode = keycode_;
+ }
+ String name;
+ int keycode;
+ }
+
+ private static final MenuKeySymbol[] menuSymbols = {
+ new MenuKeySymbol("F1", KeyEvent.VK_F1),
+ new MenuKeySymbol("F2", KeyEvent.VK_F2),
+ new MenuKeySymbol("F3", KeyEvent.VK_F3),
+ new MenuKeySymbol("F4", KeyEvent.VK_F4),
+ new MenuKeySymbol("F5", KeyEvent.VK_F5),
+ new MenuKeySymbol("F6", KeyEvent.VK_F6),
+ new MenuKeySymbol("F7", KeyEvent.VK_F7),
+ new MenuKeySymbol("F8", KeyEvent.VK_F8),
+ new MenuKeySymbol("F9", KeyEvent.VK_F9),
+ new MenuKeySymbol("F10", KeyEvent.VK_F10),
+ new MenuKeySymbol("F11", KeyEvent.VK_F11),
+ new MenuKeySymbol("F12", KeyEvent.VK_F12),
+ new MenuKeySymbol("Pause", KeyEvent.VK_PAUSE),
+ new MenuKeySymbol("Print", KeyEvent.VK_PRINTSCREEN),
+ new MenuKeySymbol("Scroll_Lock", KeyEvent.VK_SCROLL_LOCK),
+ new MenuKeySymbol("Escape", KeyEvent.VK_ESCAPE),
+ new MenuKeySymbol("Insert", KeyEvent.VK_INSERT),
+ new MenuKeySymbol("Delete", KeyEvent.VK_DELETE),
+ new MenuKeySymbol("Home", KeyEvent.VK_HOME),
+ new MenuKeySymbol("Page_Up", KeyEvent.VK_PAGE_UP),
+ new MenuKeySymbol("Page_Down", KeyEvent.VK_PAGE_DOWN)
+ };
+
+ static int getMenuKeySymbolCount()
+ {
+ return menuSymbols.length;
+ }
+
+ public static MenuKeySymbol[] getMenuKeySymbols()
+ {
+ return menuSymbols;
+ }
+
+ static int getMenuKeyCode()
+ {
+ String menuKeyStr;
+ int menuKeyCode = KeyEvent.VK_F8;
+
+ menuKeyStr =
+ Configuration.global().getParam("menuKey").getValueStr();
+ for(int i = 0; i < getMenuKeySymbolCount(); i++)
+ if (menuSymbols[i].name.equals(menuKeyStr))
+ menuKeyCode = menuSymbols[i].keycode;
+
+ return menuKeyCode;
+ }
+
+}