add src files decompiled via jad
[rsa2client.git] / src / mcsClient / McsKeyAdapter.java
diff --git a/src/mcsClient/McsKeyAdapter.java b/src/mcsClient/McsKeyAdapter.java
new file mode 100644 (file)
index 0000000..21890d6
--- /dev/null
@@ -0,0 +1,159 @@
+// 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;
+    }
+
+}