mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-03 14:36:09 +00:00
added javadoc to input classes
This commit is contained in:
@@ -7,16 +7,30 @@ import com.limelight.gui.StreamFrame;
|
||||
import com.limelight.nvstream.NvConnection;
|
||||
import com.limelight.nvstream.input.KeyboardPacket;
|
||||
|
||||
/**
|
||||
* Class that handles keyboard input
|
||||
* @author Diego Waxemberg
|
||||
*/
|
||||
public class KeyboardHandler implements KeyListener {
|
||||
|
||||
private static KeyboardTranslator translator;
|
||||
private StreamFrame parent;
|
||||
|
||||
/**
|
||||
* Constructs a new keyboard listener that will send key events to the specified connection
|
||||
* and belongs to the specified frame
|
||||
* @param conn the connection to send key events to
|
||||
* @param parent the frame that owns this handler
|
||||
*/
|
||||
public KeyboardHandler(NvConnection conn, StreamFrame parent) {
|
||||
translator = new KeyboardTranslator(conn);
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when a key is pressed and will send that key-down event to the host
|
||||
* @param event the key-down event
|
||||
*/
|
||||
@Override
|
||||
public void keyPressed(KeyEvent event) {
|
||||
short keyMap = translator.translate(event.getKeyCode());
|
||||
@@ -53,6 +67,10 @@ public class KeyboardHandler implements KeyListener {
|
||||
translator.sendKeyDown(keyMap, modifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when a key is released and will send that key-up event to the host
|
||||
* @param event the key-up event
|
||||
*/
|
||||
@Override
|
||||
public void keyReleased(KeyEvent event) {
|
||||
int modifiers = event.getModifiersEx();
|
||||
@@ -80,6 +98,10 @@ public class KeyboardHandler implements KeyListener {
|
||||
translator.sendKeyUp(keyMap, modifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unimplemented
|
||||
* @param event unused
|
||||
*/
|
||||
@Override
|
||||
public void keyTyped(KeyEvent event) {
|
||||
}
|
||||
|
||||
@@ -5,14 +5,30 @@ import java.awt.event.KeyEvent;
|
||||
import com.limelight.nvstream.NvConnection;
|
||||
import com.limelight.nvstream.input.KeycodeTranslator;
|
||||
|
||||
/**
|
||||
* Class to translate a java key code into the codes GFE is expecting
|
||||
* @author Diego Waxemberg
|
||||
*/
|
||||
public class KeyboardTranslator extends KeycodeTranslator {
|
||||
|
||||
|
||||
/**
|
||||
* GFE's prefix for every key code
|
||||
*/
|
||||
public static final short KEY_PREFIX = (short) 0x80;
|
||||
|
||||
/**
|
||||
* Constructs a new translator for the specified connection
|
||||
* @param conn the connection to which the translated codes are sent
|
||||
*/
|
||||
public KeyboardTranslator(NvConnection conn) {
|
||||
super(conn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Translates the given keycode and returns the GFE keycode
|
||||
* @param keycode the code to be translated
|
||||
* @returns a GFE keycode for the given keycode
|
||||
*/
|
||||
@Override
|
||||
public short translate(int keycode) {
|
||||
// change newline to carriage return
|
||||
|
||||
@@ -14,6 +14,10 @@ import com.limelight.gui.StreamFrame;
|
||||
import com.limelight.nvstream.NvConnection;
|
||||
import com.limelight.nvstream.input.MouseButtonPacket;
|
||||
|
||||
/**
|
||||
* Handles mouse input and sends them via the connection to the host
|
||||
* @author Diego Waxemberg
|
||||
*/
|
||||
public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
private NvConnection conn;
|
||||
private Robot robot;
|
||||
@@ -25,6 +29,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
|
||||
private final double mouseThresh = 0.45;
|
||||
|
||||
/**
|
||||
* Constructs a new handler for the specified connection and belonging to the specified frame
|
||||
* @param conn the connection to which mouse events will be sent
|
||||
* @param parent the frame that owns this handler
|
||||
*/
|
||||
public MouseHandler(NvConnection conn, StreamFrame parent) {
|
||||
this.conn = conn;
|
||||
this.parent = parent;
|
||||
@@ -36,16 +45,27 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
size = new Dimension();
|
||||
}
|
||||
|
||||
/**
|
||||
* Frees the mouse, that is stops capturing events and allows it to move freely
|
||||
*/
|
||||
public void free() {
|
||||
captureMouse = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts capturing mouse events and limits its motion
|
||||
*/
|
||||
public void capture() {
|
||||
moveMouse((int)parent.getLocationOnScreen().getX() + (size.width/2),
|
||||
(int)parent.getLocationOnScreen().getY() + (size.height/2));
|
||||
captureMouse = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only used to hide the cursor when the user clicks back into the frame.
|
||||
* <br>The event is not sent to the host
|
||||
* @param e click event used to know that the cursor should now be hidden
|
||||
*/
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if (captureMouse) {
|
||||
@@ -53,10 +73,19 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unimplemented
|
||||
* @param e Unused
|
||||
*/
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when the mouse leaves the frame.
|
||||
* <br>If this happens when we are capturing the mouse, the mouse is moved back to the center of the frame.
|
||||
* @param e the event created by the mouse leaving the frame
|
||||
*/
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
if (captureMouse) {
|
||||
@@ -64,6 +93,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when a mouse button is pressed.
|
||||
* <br>The button pressed is sent to the host if we are capturing the mouse.
|
||||
* @param e event containing the mouse button that was pressed
|
||||
*/
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
if (captureMouse) {
|
||||
@@ -87,6 +121,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when a mouse button is released.
|
||||
* <br>The button released is sent to the host if we are capturing the mouse.
|
||||
* @param e event containing the mouse button that was released
|
||||
*/
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
if (captureMouse) {
|
||||
@@ -110,6 +149,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when the mouse is dragged, that is moved while a button is held down.
|
||||
* <br>This method simply calls the <code>mouseMoved()</code> method because GFE handles movements all the same
|
||||
* when a button is held down or not.
|
||||
*/
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent e) {
|
||||
if (captureMouse) {
|
||||
@@ -117,6 +161,13 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when the mouse is moved.
|
||||
* <br>The change in position is calculated and sent to the host.
|
||||
* <br>If the mouse moves outside a certain boundary, the mouse is moved back to the center- this gives the user
|
||||
* the illusion that they are controlling the mouse they see rather than their own.
|
||||
* @param e the mouse move event containing the new location of the mouse
|
||||
*/
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
if (captureMouse) {
|
||||
@@ -131,6 +182,10 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if the mouse has moved outside the boundaries.
|
||||
* If so, the mouse is moved back to the center.
|
||||
*/
|
||||
private void checkBoundaries(MouseEvent e) {
|
||||
parent.getSize(size);
|
||||
|
||||
@@ -162,6 +217,9 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Moves the mouse to the specified coordinates on-screen
|
||||
*/
|
||||
private void moveMouse(int x, int y) {
|
||||
robot.mouseMove(x, y);
|
||||
lastX = x;
|
||||
|
||||
Reference in New Issue
Block a user