Nä, det behöver de egentligen inte ha. Liknande verktyg brukar läsa data från t.ex USB/Serial och skriver sedan datat till "tangentbordsbuffertet". Datat kommer då automatiskt hamna i det textfält som för tillfället har fokus.
En sådan lösning skulle i vårt fall kräva "long-poll" från användarens dator, eller att användaren har en serversocket öppen på sin dator. Det skulle även kräva lite native kod för att skriva till tangentbordsbuffert såvida vi inte omvandlar allt data till KeyEvents (Java). Då kan vi använda klassen java.awt.Robot på användarens dator för att skriva data till det fält som har fokus.
Detta program skriver ett 'a' i det fält som för tillfället har fokus.
Kod:
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class RobotTest {
public static void main(String[] args) throws Exception {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
System.out.println("Switch to e.g. notepad, you got 10 seconds to do it");
Thread.sleep(10000L);
System.out.println("Generating key events");
Robot robot = new Robot(gs[0]);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
System.out.println("done!");
}
}