mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-23 16:46:48 +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.NvConnection;
|
||||||
import com.limelight.nvstream.input.KeyboardPacket;
|
import com.limelight.nvstream.input.KeyboardPacket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class that handles keyboard input
|
||||||
|
* @author Diego Waxemberg
|
||||||
|
*/
|
||||||
public class KeyboardHandler implements KeyListener {
|
public class KeyboardHandler implements KeyListener {
|
||||||
|
|
||||||
private static KeyboardTranslator translator;
|
private static KeyboardTranslator translator;
|
||||||
private StreamFrame parent;
|
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) {
|
public KeyboardHandler(NvConnection conn, StreamFrame parent) {
|
||||||
translator = new KeyboardTranslator(conn);
|
translator = new KeyboardTranslator(conn);
|
||||||
this.parent = parent;
|
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
|
@Override
|
||||||
public void keyPressed(KeyEvent event) {
|
public void keyPressed(KeyEvent event) {
|
||||||
short keyMap = translator.translate(event.getKeyCode());
|
short keyMap = translator.translate(event.getKeyCode());
|
||||||
@@ -53,6 +67,10 @@ public class KeyboardHandler implements KeyListener {
|
|||||||
translator.sendKeyDown(keyMap, modifier);
|
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
|
@Override
|
||||||
public void keyReleased(KeyEvent event) {
|
public void keyReleased(KeyEvent event) {
|
||||||
int modifiers = event.getModifiersEx();
|
int modifiers = event.getModifiersEx();
|
||||||
@@ -80,6 +98,10 @@ public class KeyboardHandler implements KeyListener {
|
|||||||
translator.sendKeyUp(keyMap, modifier);
|
translator.sendKeyUp(keyMap, modifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unimplemented
|
||||||
|
* @param event unused
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void keyTyped(KeyEvent event) {
|
public void keyTyped(KeyEvent event) {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,30 @@ import java.awt.event.KeyEvent;
|
|||||||
import com.limelight.nvstream.NvConnection;
|
import com.limelight.nvstream.NvConnection;
|
||||||
import com.limelight.nvstream.input.KeycodeTranslator;
|
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 {
|
public class KeyboardTranslator extends KeycodeTranslator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GFE's prefix for every key code
|
||||||
|
*/
|
||||||
public static final short KEY_PREFIX = (short) 0x80;
|
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) {
|
public KeyboardTranslator(NvConnection conn) {
|
||||||
super(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
|
@Override
|
||||||
public short translate(int keycode) {
|
public short translate(int keycode) {
|
||||||
// change newline to carriage return
|
// change newline to carriage return
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ import com.limelight.gui.StreamFrame;
|
|||||||
import com.limelight.nvstream.NvConnection;
|
import com.limelight.nvstream.NvConnection;
|
||||||
import com.limelight.nvstream.input.MouseButtonPacket;
|
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 {
|
public class MouseHandler implements MouseListener, MouseMotionListener {
|
||||||
private NvConnection conn;
|
private NvConnection conn;
|
||||||
private Robot robot;
|
private Robot robot;
|
||||||
@@ -25,6 +29,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
|||||||
|
|
||||||
private final double mouseThresh = 0.45;
|
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) {
|
public MouseHandler(NvConnection conn, StreamFrame parent) {
|
||||||
this.conn = conn;
|
this.conn = conn;
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
@@ -36,16 +45,27 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
|||||||
size = new Dimension();
|
size = new Dimension();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frees the mouse, that is stops capturing events and allows it to move freely
|
||||||
|
*/
|
||||||
public void free() {
|
public void free() {
|
||||||
captureMouse = false;
|
captureMouse = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts capturing mouse events and limits its motion
|
||||||
|
*/
|
||||||
public void capture() {
|
public void capture() {
|
||||||
moveMouse((int)parent.getLocationOnScreen().getX() + (size.width/2),
|
moveMouse((int)parent.getLocationOnScreen().getX() + (size.width/2),
|
||||||
(int)parent.getLocationOnScreen().getY() + (size.height/2));
|
(int)parent.getLocationOnScreen().getY() + (size.height/2));
|
||||||
captureMouse = true;
|
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
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
if (captureMouse) {
|
if (captureMouse) {
|
||||||
@@ -53,10 +73,19 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unimplemented
|
||||||
|
* @param e Unused
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void mouseEntered(MouseEvent e) {
|
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
|
@Override
|
||||||
public void mouseExited(MouseEvent e) {
|
public void mouseExited(MouseEvent e) {
|
||||||
if (captureMouse) {
|
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
|
@Override
|
||||||
public void mousePressed(MouseEvent e) {
|
public void mousePressed(MouseEvent e) {
|
||||||
if (captureMouse) {
|
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
|
@Override
|
||||||
public void mouseReleased(MouseEvent e) {
|
public void mouseReleased(MouseEvent e) {
|
||||||
if (captureMouse) {
|
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
|
@Override
|
||||||
public void mouseDragged(MouseEvent e) {
|
public void mouseDragged(MouseEvent e) {
|
||||||
if (captureMouse) {
|
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
|
@Override
|
||||||
public void mouseMoved(MouseEvent e) {
|
public void mouseMoved(MouseEvent e) {
|
||||||
if (captureMouse) {
|
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) {
|
private void checkBoundaries(MouseEvent e) {
|
||||||
parent.getSize(size);
|
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) {
|
private void moveMouse(int x, int y) {
|
||||||
robot.mouseMove(x, y);
|
robot.mouseMove(x, y);
|
||||||
lastX = x;
|
lastX = x;
|
||||||
|
|||||||
Reference in New Issue
Block a user