commit
823d344084
@ -0,0 +1 @@ |
||||
.vscode |
@ -0,0 +1,2 @@ |
||||
--add-opens=java.base/java.util=ALL-UNNAMED |
||||
--add-opens=java.base/java.lang=ALL-UNNAMED |
@ -0,0 +1,229 @@ |
||||
import java.io.BufferedInputStream; |
||||
import java.io.DataInputStream; |
||||
import java.io.DataOutputStream; |
||||
import java.io.IOException; |
||||
import java.net.ServerSocket; |
||||
import java.net.Socket; |
||||
import java.util.Map.Entry; |
||||
import java.awt.AWTException; |
||||
import java.awt.Robot; |
||||
import java.awt.event.KeyEvent; |
||||
|
||||
import lc.kra.system.keyboard.GlobalKeyboardHook; |
||||
import lc.kra.system.keyboard.event.GlobalKeyAdapter; |
||||
import lc.kra.system.keyboard.event.GlobalKeyEvent; |
||||
|
||||
class Client { |
||||
// initialize socket and input output streams
|
||||
private Socket socket = null; |
||||
private DataInputStream input = null; |
||||
private DataOutputStream out = null; |
||||
|
||||
private static boolean run = true; |
||||
// constructor to put ip address and port
|
||||
public Client(String address, int port) |
||||
{ |
||||
GlobalKeyboardHook keyboardHook = new GlobalKeyboardHook(true); // Use false here to switch to hook instead of raw input
|
||||
|
||||
System.out.println("Global keyboard hook successfully started, press [escape] key to shutdown. Connected keyboards:"); |
||||
for (Entry<Long, String> keyboard : GlobalKeyboardHook.listKeyboards().entrySet()) { |
||||
System.out.format("%d: %s\n", keyboard.getKey(), keyboard.getValue()); |
||||
} |
||||
|
||||
keyboardHook.addKeyListener(new GlobalKeyAdapter() { |
||||
|
||||
@Override |
||||
public void keyPressed(GlobalKeyEvent event) { |
||||
try { |
||||
switch (event.getVirtualKeyCode()){ |
||||
case GlobalKeyEvent.VK_RETURN:{ |
||||
out.writeUTF("FOLLOW"); |
||||
}break; |
||||
case GlobalKeyEvent.VK_NUMPAD8: |
||||
case GlobalKeyEvent.VK_UP:{ |
||||
out.writeUTF("FORWARD"); |
||||
}break; |
||||
case GlobalKeyEvent.VK_NUMPAD5: |
||||
case GlobalKeyEvent.VK_DOWN:{ |
||||
out.writeUTF("BACKWARD"); |
||||
}break; |
||||
case GlobalKeyEvent.VK_NUMPAD4: |
||||
case GlobalKeyEvent.VK_LEFT:{ |
||||
out.writeUTF("LEFT"); |
||||
}break; |
||||
case GlobalKeyEvent.VK_NUMPAD6: |
||||
case GlobalKeyEvent.VK_RIGHT:{ |
||||
out.writeUTF("RIGHT"); |
||||
}break; |
||||
case GlobalKeyEvent.VK_NUMPAD0: |
||||
case GlobalKeyEvent.VK_NUMPAD1: |
||||
case GlobalKeyEvent.VK_1: |
||||
case GlobalKeyEvent.VK_2: |
||||
case GlobalKeyEvent.VK_3: |
||||
case GlobalKeyEvent.VK_Z:{ |
||||
out.writeUTF("FIGHT"); |
||||
}break; |
||||
case GlobalKeyEvent.VK_NUMPAD3: |
||||
case 110: |
||||
case GlobalKeyEvent.VK_DELETE:{ |
||||
out.writeUTF("CHILL"); |
||||
}break; |
||||
} |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
if (event.getVirtualKeyCode() == GlobalKeyEvent.VK_ESCAPE) { |
||||
run = false; |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void keyReleased(GlobalKeyEvent event) { |
||||
System.out.println(event); |
||||
} |
||||
}); |
||||
// establish a connection
|
||||
try { |
||||
socket = new Socket(address, port); |
||||
System.out.println("Connected"); |
||||
|
||||
// takes input from terminal
|
||||
input = new DataInputStream(System.in); |
||||
|
||||
// sends output to the socket
|
||||
out = new DataOutputStream( |
||||
socket.getOutputStream()); |
||||
} |
||||
catch (IOException u) { |
||||
System.out.println(u); |
||||
return; |
||||
} |
||||
|
||||
// string to read message from input
|
||||
String line = ""; |
||||
|
||||
// keep reading until "Over" is input
|
||||
while (!line.equals("Over")) { |
||||
try { |
||||
line = input.readLine(); |
||||
out.writeUTF(line); |
||||
} |
||||
catch (IOException i) { |
||||
System.out.println(i); |
||||
} |
||||
} |
||||
|
||||
// close the connection
|
||||
try { |
||||
input.close(); |
||||
out.close(); |
||||
socket.close(); |
||||
keyboardHook.shutdownHook(); |
||||
} |
||||
catch (IOException i) { |
||||
System.out.println(i); |
||||
} |
||||
} |
||||
|
||||
public static void main(String args[]) |
||||
{ |
||||
Client client = new Client("127.0.0.1", 5000); |
||||
} |
||||
} |
||||
|
||||
class Server |
||||
{ |
||||
//initialize socket and input stream
|
||||
private Socket socket = null; |
||||
private ServerSocket server = null; |
||||
private DataInputStream in = null; |
||||
Robot r; |
||||
|
||||
private void PressKeyWithModifier(int modifier,int keycode) { |
||||
r.keyPress(modifier); |
||||
r.keyPress(keycode); |
||||
r.keyRelease(keycode);r.delay(100); |
||||
r.keyRelease(modifier); |
||||
} |
||||
|
||||
// constructor with port
|
||||
public Server(int port) |
||||
{ |
||||
try { |
||||
r = new Robot(); |
||||
} catch (AWTException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
// starts server and waits for a connection
|
||||
try |
||||
{ |
||||
server = new ServerSocket(port); |
||||
System.out.println("Server started"); |
||||
|
||||
System.out.println("Waiting for a client ..."); |
||||
|
||||
socket = server.accept(); |
||||
System.out.println("Client accepted"); |
||||
|
||||
// takes input from the client socket
|
||||
in = new DataInputStream( |
||||
new BufferedInputStream(socket.getInputStream())); |
||||
|
||||
String line = ""; |
||||
|
||||
// reads message from client until "Over" is sent
|
||||
while (!line.equals("Over")) |
||||
{ |
||||
try |
||||
{ |
||||
line = in.readUTF(); |
||||
switch (line){ |
||||
case "FOLLOW":{ |
||||
PressKeyWithModifier(KeyEvent.VK_CONTROL,KeyEvent.VK_7); |
||||
}break; |
||||
case "FORWARD":{ |
||||
|
||||
}break; |
||||
case "BACKWARD":{ |
||||
|
||||
}break; |
||||
case "LEFT":{ |
||||
|
||||
}break; |
||||
case "RIGHT":{ |
||||
|
||||
}break; |
||||
case "FIGHT":{ |
||||
|
||||
}break; |
||||
case "CHILL":{ |
||||
|
||||
}break; |
||||
default:{ |
||||
System.out.println("Unknown command: "+line); |
||||
} |
||||
} |
||||
} |
||||
catch(IOException i) |
||||
{ |
||||
System.out.println(i); |
||||
break; |
||||
} |
||||
} |
||||
System.out.println("Closing connection"); |
||||
|
||||
// close connection
|
||||
socket.close(); |
||||
in.close(); |
||||
} |
||||
catch(IOException i) |
||||
{ |
||||
System.out.println(i); |
||||
} |
||||
} |
||||
|
||||
public static void main(String args[]) |
||||
{ |
||||
Server server = new Server(5000); |
||||
} |
||||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue