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);
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);
}
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());
private boolean supportsSyncFence;
- public int menuKey;
+ public int menuKeyCode;
ViewportFrame viewport;
private boolean fullColour;
private boolean autoSelect;
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)
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);
} 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);
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));
= 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 "+
--- /dev/null
+/* 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;
+ }
+
+}