mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-07 16:36:10 +00:00
53 lines
1.2 KiB
Java
53 lines
1.2 KiB
Java
package com.limelight.input;
|
|
|
|
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
|
|
* @return a GFE keycode for the given keycode
|
|
*/
|
|
@Override
|
|
public short translate(int keycode) {
|
|
// change newline to carriage return
|
|
if (keycode == KeyEvent.VK_ENTER) {
|
|
keycode = 0x0d;
|
|
}
|
|
|
|
// 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);
|
|
}
|
|
|
|
}
|