mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-24 00:56:42 +00:00
Add key modifiers to support shift, ctrl and alt
This commit is contained in:
@@ -4,6 +4,7 @@ import com.limelight.nvstream.NvConnection;
|
|||||||
import com.limelight.nvstream.input.ControllerPacket;
|
import com.limelight.nvstream.input.ControllerPacket;
|
||||||
import com.limelight.nvstream.input.KeyboardPacket;
|
import com.limelight.nvstream.input.KeyboardPacket;
|
||||||
import com.limelight.nvstream.input.MouseButtonPacket;
|
import com.limelight.nvstream.input.MouseButtonPacket;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
@@ -28,6 +29,8 @@ public class EvdevHandler extends EvdevReader {
|
|||||||
private short mouseDeltaX, mouseDeltaY;
|
private short mouseDeltaX, mouseDeltaY;
|
||||||
private byte mouseScroll;
|
private byte mouseScroll;
|
||||||
|
|
||||||
|
private byte keyModifiers;
|
||||||
|
|
||||||
private EvdevAbsolute absLX, absLY, absRX, absRY, absLT, absRT, absDX, absDY;
|
private EvdevAbsolute absLX, absLY, absRX, absRY, absLT, absRT, absDX, absDY;
|
||||||
|
|
||||||
private NvConnection conn;
|
private NvConnection conn;
|
||||||
@@ -85,10 +88,25 @@ public class EvdevHandler extends EvdevReader {
|
|||||||
if (code<EvdevConstants.KEY_CODES.length) {
|
if (code<EvdevConstants.KEY_CODES.length) {
|
||||||
short gfCode = translator.translate(EvdevConstants.KEY_CODES[code]);
|
short gfCode = translator.translate(EvdevConstants.KEY_CODES[code]);
|
||||||
|
|
||||||
if (value==EvdevConstants.KEY_PRESSED)
|
if (value==EvdevConstants.KEY_PRESSED) {
|
||||||
conn.sendKeyboardInput(gfCode, KeyboardPacket.KEY_DOWN, (byte) 0);
|
if (gfCode==KeyEvent.VK_SHIFT)
|
||||||
else if (value==EvdevConstants.KEY_RELEASED)
|
keyModifiers |= KeyboardPacket.MODIFIER_SHIFT;
|
||||||
conn.sendKeyboardInput(gfCode, KeyboardPacket.KEY_UP, (byte) 0);
|
else if (gfCode==KeyEvent.VK_CONTROL)
|
||||||
|
keyModifiers |= KeyboardPacket.MODIFIER_CTRL;
|
||||||
|
else if (gfCode==KeyEvent.VK_ALT)
|
||||||
|
keyModifiers |= KeyboardPacket.MODIFIER_ALT;
|
||||||
|
|
||||||
|
conn.sendKeyboardInput(gfCode, KeyboardPacket.KEY_DOWN, keyModifiers);
|
||||||
|
} else if (value==EvdevConstants.KEY_RELEASED) {
|
||||||
|
if (gfCode==KeyEvent.VK_SHIFT)
|
||||||
|
keyModifiers &= ~KeyboardPacket.MODIFIER_SHIFT;
|
||||||
|
else if (gfCode==KeyEvent.VK_CONTROL)
|
||||||
|
keyModifiers &= ~KeyboardPacket.MODIFIER_CTRL;
|
||||||
|
else if (gfCode==KeyEvent.VK_ALT)
|
||||||
|
keyModifiers &= ~KeyboardPacket.MODIFIER_ALT;
|
||||||
|
|
||||||
|
conn.sendKeyboardInput(gfCode, KeyboardPacket.KEY_UP, keyModifiers);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
byte mouseButton = 0;
|
byte mouseButton = 0;
|
||||||
short gamepadButton = 0;
|
short gamepadButton = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user