--- /dev/null
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3) fieldsfirst nonlb space
+
+package mcsClient;
+
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+// Referenced classes of package mcsClient:
+// KeyMap, Options, LockingKeyStateManager, McsTcpConnection,
+// McsToolBar
+
+public class McsKeyAdapter extends KeyAdapter {
+
+ public static final int SYNC_KEY_RELEASED = 1;
+ public static final int SYNC_KEY_DEPRESSED = 2;
+ public static final int USE_RIGHT_MOUSE_BUTTON = 3;
+ private McsTcpConnection mcsTcpConnection;
+ private LockingKeyStateManager lockingKeyStateManager;
+ private McsToolBar toolBar;
+ private boolean leftAltDown;
+ private boolean rightAltDown;
+ private boolean leftCtrlDown;
+ private boolean rightCtrlDown;
+ private boolean keyboardHasAltGr;
+ private KeyMap keyMap;
+ private String mouseSyncKey;
+ private int mouseSyncState;
+ private ArrayList keyboardEvents;
+ private static Logger logger = Logger.getAnonymousLogger();
+
+ public McsKeyAdapter(McsTcpConnection mcstcpconnection, LockingKeyStateManager lockingkeystatemanager) {
+ toolBar = null;
+ leftAltDown = false;
+ rightAltDown = false;
+ leftCtrlDown = false;
+ rightCtrlDown = false;
+ keyboardHasAltGr = false;
+ mouseSyncState = 1;
+ keyboardEvents = new ArrayList();
+ mcsTcpConnection = mcstcpconnection;
+ lockingKeyStateManager = lockingkeystatemanager;
+ logger.setLevel(Level.WARNING);
+ String s = System.getProperty("mcs.debug");
+ if (s != null && s.equalsIgnoreCase("true"))
+ logger.setLevel(Level.ALL);
+ keyMap = new KeyMap();
+ }
+
+ public void keyPressed(KeyEvent keyevent) {
+ logger.info(keyevent.toString());
+ if (!mouseSyncKey.equals(Options.NO_KEY_SET) && mouseSyncKey.equals(keyevent.getKeyText(keyevent.getKeyCode())))
+ mouseSyncState = 2;
+ if (!lockingKeyStateManager.filterKeyPress(keyevent)) {
+ if ((leftAltDown || rightAltDown) && keyevent.getKeyCode() == 115) {
+ sendKeyEvent(11, 226, 2);
+ sendKeyEvent(11, 230, 3);
+ return;
+ }
+ if (keyevent.getKeyCode() == 17 && keyevent.getKeyLocation() == 2) {
+ if (leftCtrlDown)
+ return;
+ leftCtrlDown = true;
+ }
+ if (keyevent.getKeyCode() == 17 && keyevent.getKeyLocation() == 3) {
+ if (rightCtrlDown)
+ return;
+ rightCtrlDown = true;
+ }
+ if (keyevent.getKeyCode() == 18 && keyevent.getKeyLocation() == 2) {
+ if (leftAltDown)
+ return;
+ leftAltDown = true;
+ }
+ if (keyevent.getKeyCode() == 18 && keyevent.getKeyLocation() == 3) {
+ if (rightAltDown)
+ return;
+ rightAltDown = true;
+ }
+ if (keyevent.getKeyCode() == 18 && keyboardHasAltGr && keyevent.getKeyLocation() == 3)
+ sendKeyEvent(11, 224, 2);
+ sendKeyEvent(10, keyMap.getKey(keyevent), keyevent.getKeyLocation());
+ keyevent.consume();
+ }
+ }
+
+ public void keyReleased(KeyEvent keyevent) {
+ logger.info(keyevent.toString());
+ if (mouseSyncKey.equals(keyevent.getKeyText(keyevent.getKeyCode())))
+ mouseSyncState = 1;
+ if (!lockingKeyStateManager.filterKeyRelease(keyevent)) {
+ if (keyevent.getKeyCode() == 17 && keyevent.getKeyLocation() == 2)
+ leftCtrlDown = false;
+ if (keyevent.getKeyCode() == 17 && keyevent.getKeyLocation() == 3)
+ rightCtrlDown = false;
+ if (keyevent.getKeyCode() == 18 && keyevent.getKeyLocation() == 2)
+ leftAltDown = false;
+ if (keyevent.getKeyCode() == 18 && keyevent.getKeyLocation() == 3)
+ rightAltDown = false;
+ sendKeyEvent(11, keyMap.getKey(keyevent), keyevent.getKeyLocation());
+ keyevent.consume();
+ }
+ }
+
+ public void sendKeyEvent(int i, int j, int k) {
+ int ai[] = new int[5];
+ ai[0] = ai.length * 4;
+ ai[1] = 15;
+ ai[2] = i;
+ ai[3] = j;
+ ai[4] = k;
+ boolean flag = j == 226 || j == 230 || j == 224 || j == 228 || j == 225 || j == 229;
+ keyboardEvents.add(ai);
+ int ai1[];
+ for (Iterator iterator = keyboardEvents.iterator(); iterator.hasNext(); logger.info("Sent keyMessage, type: " + ai1[2] + ", key code: " + Integer.toHexString(ai1[3] & 0xffff)))
+ try {
+ ai1 = (int[])iterator.next();
+ mcsTcpConnection.sendMessage(ai1);
+ }
+ catch (IOException ioexception) {
+ System.err.println("Could not send send key event McsKeyAdapter.");
+ return;
+ }
+
+ keyboardEvents.clear();
+ }
+
+ public void setKeyboardType(int i) {
+ keyboardHasAltGr = i != 0 && i != 5;
+ keyMap.setKeyboardType(i);
+ }
+
+ public int getButtonCode(int i) {
+ return keyMap.getButtonCode(i);
+ }
+
+ public int getButtonModifierCode(int i) {
+ return keyMap.getButtonModifierCode(i);
+ }
+
+ public void setMouseSyncKey(String s) {
+ mouseSyncKey = s;
+ }
+
+ public int getMouseSyncKeyState() {
+ if (mouseSyncKey.equals(Options.RIGHT_MOUSE))
+ return 3;
+ else
+ return mouseSyncState;
+ }
+
+}