added support for *almost* every key

This commit is contained in:
Diego Waxemberg
2013-12-08 14:43:17 -05:00
parent 3561eafa9a
commit 99efd2a720
5 changed files with 55 additions and 11 deletions

View File

@@ -15,6 +15,7 @@ public class Limelight implements NvConnectionListener {
private String host;
private StreamFrame streamFrame;
private NvConnection conn;
private boolean connectionFailed;
public Limelight(String host) {
this.host = host;
@@ -80,8 +81,11 @@ public class Limelight implements NvConnectionListener {
@Override
public void connectionTerminated(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(streamFrame, "The connection failed unexpectedly", "Connection Terminated", JOptionPane.ERROR_MESSAGE);
conn.stop();
if (!connectionFailed) {
connectionFailed = true;
JOptionPane.showMessageDialog(streamFrame, "The connection failed unexpectedly", "Connection Terminated", JOptionPane.ERROR_MESSAGE);
conn.stop();
}
}
@Override

View File

@@ -26,6 +26,8 @@ public class StreamFrame extends JFrame {
this.addMouseListener(mouse);
this.addMouseMotionListener(mouse);
this.setFocusTraversalKeysEnabled(false);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(1280,720);
//This might break if the screen res is too small...not sure though

View File

@@ -4,6 +4,7 @@ import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import com.limelight.nvstream.NvConnection;
import com.limelight.nvstream.input.KeyboardPacket;
public class KeyboardHandler implements KeyListener {
@@ -16,13 +17,41 @@ public class KeyboardHandler implements KeyListener {
@Override
public void keyPressed(KeyEvent event) {
short keyMap = translator.translate(event.getKeyCode());
translator.sendKeyDown(keyMap);
byte modifier = 0x0;
int modifiers = event.getModifiersEx();
if ((modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0) {
modifier |= KeyboardPacket.MODIFIER_SHIFT;
}
if ((modifiers & KeyEvent.CTRL_DOWN_MASK) != 0) {
modifier |= KeyboardPacket.MODIFIER_CTRL;
}
if ((modifiers & KeyEvent.ALT_DOWN_MASK) != 0) {
modifier |= KeyboardPacket.MODIFIER_ALT;
}
translator.sendKeyDown(keyMap, modifier);
}
@Override
public void keyReleased(KeyEvent event) {
short keyMap = translator.translate(event.getKeyCode());
translator.sendKeyUp(keyMap);
byte modifier = 0x0;
int modifiers = event.getModifiersEx();
if ((modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0) {
modifier |= KeyboardPacket.MODIFIER_SHIFT;
}
if ((modifiers & KeyEvent.CTRL_DOWN_MASK) != 0) {
modifier |= KeyboardPacket.MODIFIER_CTRL;
}
if ((modifiers & KeyEvent.ALT_DOWN_MASK) != 0) {
modifier |= KeyboardPacket.MODIFIER_ALT;
}
translator.sendKeyUp(keyMap, modifier);
}
@Override

View File

@@ -7,7 +7,7 @@ import com.limelight.nvstream.input.KeycodeTranslator;
public class KeyboardTranslator extends KeycodeTranslator {
public static final short KEYCODE_A = (short) 0x8041;
public static final short KEY_PREFIX = (short) 0x80;
public KeyboardTranslator(NvConnection conn) {
super(conn);
@@ -15,10 +15,22 @@ public class KeyboardTranslator extends KeycodeTranslator {
@Override
public short translate(int keycode) {
if (keycode >= KeyEvent.VK_A && keycode <= KeyEvent.VK_Z) {
return (short) (KEYCODE_A + (short)(keycode - KeyEvent.VK_A));
// change newline to carriage return
if (keycode == KeyEvent.VK_ENTER) {
keycode = 0x0d;
}
return 0;
// period maps to delete by default so we remap it
if (keycode == KeyEvent.VK_PERIOD) {
keycode = 0xbe;
}
// Nvidia maps period to delete
if (keycode == KeyEvent.VK_DELETE) {
keycode = KeyEvent.VK_PERIOD;
}
return (short) ((KEY_PREFIX << 8) | keycode);
}
}

View File

@@ -51,13 +51,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
@Override
public void mousePressed(MouseEvent e) {
conn.sendMouseButtonDown();
e.consume();
}
@Override
public void mouseReleased(MouseEvent e) {
conn.sendMouseButtonUp();
e.consume();
}
@Override
@@ -72,7 +70,6 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
conn.sendMouseMove((short)(x - lastX), (short)(y - lastY));
lastX = x;
lastY = y;
e.consume();
}
}