Tastatur eingabe über Buttons

mavinatic

Bekanntes Mitglied
Servus JavaNatoren,

ich bin gerade dabei eine Oberfläche für mein TablePc zu schreiben ;-) Basierend auf Linux (Kernel 2.6.34) Nun brauche ich für mein Touchscreen noch ein kleines Programm welches mir eine virtuelle Tastatur simuliert. Ich habes mir simpel gedacht - JPanel mit 100 Buttons ;-) Wie mache ich nun das ich auf einen Button drücke und in Mozilla Firefox gibt er im Suchfeld von Google den Buchstaben "A" ein zb?

Ist das Möglich?

Gruß george
 

mavinatic

Bekanntes Mitglied
Wenn es für dich ein Fremdwort ist, naja ich erklärs dir nicht - ich denke du kennst Wikipedia ;-) Reicht schon ;) Gibts dazu ein tutorial ;)
 
Zuletzt bearbeitet:

mavinatic

Bekanntes Mitglied
Jaein, es geht darum dass ich mir eine virtuelle Tastatur programmieren will, die dem System sagt, es wurde zB. die Taste "A" gedrückt und die in einem anderen Programm auch eintippt. (Zb firefox)
 
T

Tomate_Salat

Gast
versuchs mit jni oder jna, damit geht es sicherlich. In der Theorie würde ichs dann so (über C/C++) lösen:
- Du hast ein Fenster aktiv
- du klickst die Bilschirmtastatur (in java geschrieben) an, diese erhält den Fokus und sitzt dann über deinem ausgangsfenster
- du klickst einen Button, hier rufst du eine native methode über jni auf, die in c/c++ geschrieben ist und übergibst ihr den Buchstaben/keycode/...
- in c/c++: du suchst das 2.oberste fenster (das oberste ist deine Bildschirmtastatur), setzt dort den fokus und simulierst einen tastendruck

MFG

Tomate_Salat
 

mavinatic

Bekanntes Mitglied
Okay Ladys Ich habs mal mit java.awt.Robot aus probiert ganz coole sache, wenn ich das programm starte:

Java:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;



public class Main {

	/**
	 * @param args
	 * @throws AWTException 
	 */
	public static void main(String[] args) throws AWTException {
		// TODO Auto-generated method stub
		Robot r = new Robot();
		r.keyPress(KeyEvent.VK_A);
	}

}

Das Programm startet und schreibt in mein Eclipse fenster ein 'a' :p Soweit so gut, also geht das schon mal gut :p aber ich muss nun den Fokus auf ein EXTERNES Programm legen, hat jemand ne Ahnung wie ich das tue?
 
G

Gastredner

Gast
In etwa so, wie TomateSalat es aufgezeigt hat. Um nativen Code wirst du wohl nicht herumkommen.
 

madboy

Top Contributor
Du könntest den Fokus von deinem Programm abgeben (minimieren z.B.) und dann erst von Robot die Taste drücken lassen. Wird zwar evtl. flackern und langsam sein, aber versuchen könntest du das.
 

slawaweis

Bekanntes Mitglied
die Zauberfunktion dafür ist "setFocusableWindowState(false)". Wenn es auf false gesetzt ist, bekommt das Fenster nie den Fokus. Ich habe auf die schnelle ein Beispiel gebastelt:

Java:
package test;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FocusTest
{
 public static void main(String [] args)
  {
//  JWindow jw = new JWindow();
  JFrame jw = new JFrame();
  jw.setBounds(50, 50, 200, 200);
  jw.setFocusable(false);
  jw.setFocusableWindowState(false);

  // Events über Buttons
  jw.setLayout(new GridLayout(3, 3, 10, 10));
  for(int i = 0; i < 9; i++)
     {
     JButton jb = new JButton(""+i);
     jb.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e)
       {
       try
          {
          Robot r = new Robot();
          r.keyPress(KeyEvent.VK_A);
          }
       catch(AWTException ee) { ee.printStackTrace(System.err); }
       }
     });
     jw.add(jb);
     }

  // Events über Maus-Klicks
  jw.addMouseListener(new MouseAdapter() {
  @Override
  public void mouseClicked(MouseEvent e)
   {
   try
      {
      Robot r = new Robot();
      r.keyPress(KeyEvent.VK_B);
      }
   catch(AWTException ee) { ee.printStackTrace(System.err); }
   }
  });

  jw.setVisible(true);
  }
}

Wenn man das Beispiel mit JWindow verwendet, muss man die Anwendung extern beenden, z.B. über die Stop-Taste in Eclipse.

Slawa
 

Jedit

Aktives Mitglied
sorry wenn ich deinen Thread misbrauce, hoffe das ist ok

Kan mir jemand sagen wie keyPress(KeyEvent.VK_WINDOWS) funktioniert?

Wenn ich die Taste drücke der ich dieses KeyEvent zugewiesen habe, und danach zB die mit e, ist der Shortcut für den Windos Explorer aktiv und er wird angezeigt. drücke ich sofort wieder e passiert gar nichts (also er schreibt kein e in das Textfile, das aktiv ist, und öffnet auch keinen Explorer). Aber wenn ich zB f drücke öffnet sich das suchfenser ... also alternerend kann ich zB e und f drücken und es öffnet sich jeweils der Explorer und das suchfenster ... nur 2 mal hintereinander geht nichts auf.

Die Windows Taste blibt also irgendwie aktiv ... auch wenn ich die Anwendung schließe ...

Wie schalte ich das bitte wieder ab?
 

slawaweis

Bekanntes Mitglied
Wie schalte ich das bitte wieder ab?
steht alles in den JavaDocs.

Java:
keyPress(KeyEvent.VK_WINDOWS)

keyPress(KeyEvent.VK_E)
keyRelease(KeyEvent.VK_E)

keyPress(KeyEvent.VK_E)
keyRelease(KeyEvent.VK_E)

keyPress(KeyEvent.VK_E)
keyRelease(KeyEvent.VK_E)

keyRelease(KeyEvent.VK_WINDOWS)

Slawa
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java die Tastatur übernehmen lassen Allgemeine Java-Themen 5
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
M Event Handling Tastatur abfrage Allgemeine Java-Themen 5
S Input/Output Tastatur als Midi-Keyboard Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
M Swing Virtuelle Tastatur mit Accents Allgemeine Java-Themen 9
P Matrix von Tastatur in 2D Array??? Allgemeine Java-Themen 7
D Tastatur Aktion Allgemeine Java-Themen 36
R Java Tastatur überwachung Allgemeine Java-Themen 2
P Tastatur abfrage ohne KeyListener Allgemeine Java-Themen 3
X Motor mit Tastatur ansteuern Allgemeine Java-Themen 5
H tastatur von englisch auf deutsch stellen Allgemeine Java-Themen 3
T Einzelnes Zeichen von der Tastatur einlesen, aber ohne Enter Allgemeine Java-Themen 4
J Java reagiert nicht mehr auf die Tastatur Allgemeine Java-Themen 2
F JavaProgramm mit der Tastatur Steuern Allgemeine Java-Themen 3
G Tastatur abfrage Allgemeine Java-Themen 8
A Listener Tastatur Allgemeine Java-Themen 3
D Suche "virtuelle Tastatur" Allgemeine Java-Themen 3
T Tastatur global abfragen Allgemeine Java-Themen 2
M Tastatur sperren Allgemeine Java-Themen 6
F Tastatur klick klick Allgemeine Java-Themen 5
T Prozessorticks/Tastatur überwachen/ -> Wiederholbarkeit? Allgemeine Java-Themen 15
conan2 Midi: Tastatur-Klavier Allgemeine Java-Themen 2
H Tastatur eingaben verwenden Allgemeine Java-Themen 30
P Virtuelle Tastatur Allgemeine Java-Themen 5
A Serielle Schnittstelle | Barcodescan | ohne Tastatur Allgemeine Java-Themen 11
H Tastatur abhören Allgemeine Java-Themen 8
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
N String Array Eingabe Allgemeine Java-Themen 6
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
G Eingabe auftrennen Allgemeine Java-Themen 3
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
D Flasche Eingabe erkennen Allgemeine Java-Themen 4
K Eingabe mit Char vergleichen klappt nicht! Allgemeine Java-Themen 2
0 Eingabe nicht möglich... Allgemeine Java-Themen 12
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
C Cmd Eingabe als Administrator Allgemeine Java-Themen 4
J Anzahl der Zeichen bei Eingabe begrenzen Allgemeine Java-Themen 5
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
S Erste Schritte Arrayliste alphabetisch sortieren mit Eingabe Allgemeine Java-Themen 9
Cayton Bruchrechner stürzt bei eingabe negativer Zahlen ab Allgemeine Java-Themen 4
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
Z Taschenrechner größere Eingabe Allgemeine Java-Themen 3
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
D zeichenerkennung für umlaute bei eingabe Allgemeine Java-Themen 4
M Eingabe Überprüfen Allgemeine Java-Themen 3
D Batch-Datei Eingabe Allgemeine Java-Themen 2
N IP-Adresse Eingabe abfragen? Allgemeine Java-Themen 4
S Listener Implentierung bei Eingabe in Textfeld Allgemeine Java-Themen 2
P MS Dos Eingabe Allgemeine Java-Themen 7
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
G Überprüfung der Eingabe ob Typ korrekt Allgemeine Java-Themen 4
G Problem mit Quellcode, Eingabe wird nicht angezeigt --HELP-- Allgemeine Java-Themen 2
B Programm soll auf die Eingabe vom Mouselistener warten. Allgemeine Java-Themen 19
M Programmablauf nach letzter eingabe erst fortsetzten Allgemeine Java-Themen 2
G eingabe Allgemeine Java-Themen 4
K Warten auf die Eingabe aus Fenster.... Allgemeine Java-Themen 2
B TextField ohne Eingabe Allgemeine Java-Themen 7
H Frage zu Wildcard Eingabe in Java! Allgemeine Java-Themen 5
R Eingabe eines Textfeldes mit Inhalt einer Datei vergleichen Allgemeine Java-Themen 4
L javaformular auf website (eingabe per email zusenden) Allgemeine Java-Themen 3
B Java Eingabe HELP ( eclipse ) Allgemeine Java-Themen 4
F JTextField Eingabe automatisch bestaetigen Allgemeine Java-Themen 17
F Unsichtbare Eingabe Allgemeine Java-Themen 10
C Kettenelemente mit Bezeichner durch eingabe? Allgemeine Java-Themen 4
M Suche , bereits während der eingabe ?? Allgemeine Java-Themen 4
kodela Datenübergabe über Buttons Allgemeine Java-Themen 8
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
A ByteArray über Socket Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
T Etikettendrucker über TCP-IP Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
L Aufwandsabschätzung: Android-App Aufnahmefunktion (foto) und zweiter Ebene über dem Foto (teiltransparent) Allgemeine Java-Themen 6
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Threads über Kommandozeile Allgemeine Java-Themen 5
david19 Software AE über Domain laufen lassen Allgemeine Java-Themen 0
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
K Auf Dateiverzeichnis extern zugreifen (evtl über XML??) Allgemeine Java-Themen 22
C VisualVM oder Jconsole über Jolokia-Proxy Allgemeine Java-Themen 0
G USB-Pins über Java ansteuern Allgemeine Java-Themen 8
Ernesto95 Best Practice Localization über ResourceBundle Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben