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
 
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:
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)
 
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
 
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' 😛 Soweit so gut, also geht das schon mal gut 😛 aber ich muss nun den Fokus auf ein EXTERNES Programm legen, hat jemand ne Ahnung wie ich das tue?
 
In etwa so, wie TomateSalat es aufgezeigt hat. Um nativen Code wirst du wohl nicht herumkommen.
 
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.
 
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
 
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?
 

Neue Themen


Zurück
Oben