mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-13 11:26:25 +00:00
added support for *almost* every key
This commit is contained in:
Binary file not shown.
@@ -15,6 +15,7 @@ public class Limelight implements NvConnectionListener {
|
|||||||
private String host;
|
private String host;
|
||||||
private StreamFrame streamFrame;
|
private StreamFrame streamFrame;
|
||||||
private NvConnection conn;
|
private NvConnection conn;
|
||||||
|
private boolean connectionFailed;
|
||||||
|
|
||||||
public Limelight(String host) {
|
public Limelight(String host) {
|
||||||
this.host = host;
|
this.host = host;
|
||||||
@@ -80,8 +81,11 @@ public class Limelight implements NvConnectionListener {
|
|||||||
@Override
|
@Override
|
||||||
public void connectionTerminated(Exception e) {
|
public void connectionTerminated(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
JOptionPane.showMessageDialog(streamFrame, "The connection failed unexpectedly", "Connection Terminated", JOptionPane.ERROR_MESSAGE);
|
if (!connectionFailed) {
|
||||||
conn.stop();
|
connectionFailed = true;
|
||||||
|
JOptionPane.showMessageDialog(streamFrame, "The connection failed unexpectedly", "Connection Terminated", JOptionPane.ERROR_MESSAGE);
|
||||||
|
conn.stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ public class StreamFrame extends JFrame {
|
|||||||
this.addMouseListener(mouse);
|
this.addMouseListener(mouse);
|
||||||
this.addMouseMotionListener(mouse);
|
this.addMouseMotionListener(mouse);
|
||||||
|
|
||||||
|
this.setFocusTraversalKeysEnabled(false);
|
||||||
|
|
||||||
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
|
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
this.setSize(1280,720);
|
this.setSize(1280,720);
|
||||||
//This might break if the screen res is too small...not sure though
|
//This might break if the screen res is too small...not sure though
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.awt.event.KeyEvent;
|
|||||||
import java.awt.event.KeyListener;
|
import java.awt.event.KeyListener;
|
||||||
|
|
||||||
import com.limelight.nvstream.NvConnection;
|
import com.limelight.nvstream.NvConnection;
|
||||||
|
import com.limelight.nvstream.input.KeyboardPacket;
|
||||||
|
|
||||||
public class KeyboardHandler implements KeyListener {
|
public class KeyboardHandler implements KeyListener {
|
||||||
|
|
||||||
@@ -16,13 +17,41 @@ public class KeyboardHandler implements KeyListener {
|
|||||||
@Override
|
@Override
|
||||||
public void keyPressed(KeyEvent event) {
|
public void keyPressed(KeyEvent event) {
|
||||||
short keyMap = translator.translate(event.getKeyCode());
|
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
|
@Override
|
||||||
public void keyReleased(KeyEvent event) {
|
public void keyReleased(KeyEvent event) {
|
||||||
short keyMap = translator.translate(event.getKeyCode());
|
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
|
@Override
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import com.limelight.nvstream.input.KeycodeTranslator;
|
|||||||
|
|
||||||
public class KeyboardTranslator extends 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) {
|
public KeyboardTranslator(NvConnection conn) {
|
||||||
super(conn);
|
super(conn);
|
||||||
@@ -15,10 +15,22 @@ public class KeyboardTranslator extends KeycodeTranslator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public short translate(int keycode) {
|
public short translate(int keycode) {
|
||||||
if (keycode >= KeyEvent.VK_A && keycode <= KeyEvent.VK_Z) {
|
// change newline to carriage return
|
||||||
return (short) (KEYCODE_A + (short)(keycode - KeyEvent.VK_A));
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,13 +51,11 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
|||||||
@Override
|
@Override
|
||||||
public void mousePressed(MouseEvent e) {
|
public void mousePressed(MouseEvent e) {
|
||||||
conn.sendMouseButtonDown();
|
conn.sendMouseButtonDown();
|
||||||
e.consume();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(MouseEvent e) {
|
public void mouseReleased(MouseEvent e) {
|
||||||
conn.sendMouseButtonUp();
|
conn.sendMouseButtonUp();
|
||||||
e.consume();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -72,7 +70,6 @@ public class MouseHandler implements MouseListener, MouseMotionListener {
|
|||||||
conn.sendMouseMove((short)(x - lastX), (short)(y - lastY));
|
conn.sendMouseMove((short)(x - lastX), (short)(y - lastY));
|
||||||
lastX = x;
|
lastX = x;
|
||||||
lastY = y;
|
lastY = y;
|
||||||
e.consume();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user