]> source.dussan.org Git - tigervnc.git/commitdiff
Adds support for setting the menu key via cmd line arg. Adds all menu keys supported...
authorBrian Hinz <bphinz@users.sourceforge.net>
Wed, 16 May 2012 03:51:42 +0000 (03:51 +0000)
committerBrian Hinz <bphinz@users.sourceforge.net>
Wed, 16 May 2012 03:51:42 +0000 (03:51 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4914 3789f03b-4d11-0410-bbf8-ca57d06f2519

java/com/tigervnc/vncviewer/CConn.java
java/com/tigervnc/vncviewer/DesktopWindow.java
java/com/tigervnc/vncviewer/F8Menu.java
java/com/tigervnc/vncviewer/OptionsDialog.java
java/com/tigervnc/vncviewer/VncViewer.java
java/com/tigervnc/vncviewer/menukey.java [new file with mode: 0644]

index 927814882777a55c90ba891610ccc50e344ecb7c..e3ab176347ab022c8de8d8e479b7645b1f39f81d 100644 (file)
@@ -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;
index 178f93d2e7572d99b9dc7269e419cf5d2530eca3..3ef25f3a1342c60b4f58e6dd0ebf7c1dca2bdd73 100644 (file)
@@ -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) 
index 6a06786ef6d04da76940129a09037a569cd4e92e..ca09ac200eee8cc2f465d3c54847f3379691b878 100644 (file)
@@ -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);
index 8cf0b1b19d9433e885654d47796abfcc8a41fa53..1be5ece822d894353e4345ef2500a03df0266ef4 100644 (file)
@@ -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));
index e433bf9d86ba079359e19482d9182ceab3ec24e2..a15ee58ea57118cf6ce0dfe86617b8fd282da64e 100644 (file)
@@ -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 (file)
index 0000000..10f1d10
--- /dev/null
@@ -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;
+  }
+
+}