Tastendruck simulieren

  • Themenstarter Themenstarter Ching-Lau
  • Beginndatum Beginndatum
C

Ching-Lau

Gast
Huhu,

Ich würde gerne alle Tasten, die auf dem Server (mit JFrame) gedrückt werden, an den Client schicken und dort schreiben lassen. Ich mache es momentan mit einem auf das JFrame geaddeten KeyListener, der dann den String (bzw. char) von ke.getKeyChar() an den Clienten über eine Socket-Verbindung verschickt. Dieser geht dann eine reihe von if (und else)-Reihen durch und geht dann in die richtige hinein.
z.B. wenn ich ein b auf dem Server drücke und es beim Client ankommt, wird so geprüft: (ch ist der angekommene char)

Java:
.....
else 
  if(ch == 'a') {

...

} else
  if(ch == 'b' {

...

}
...

Doch so kann ich leider nicht alles abfangen wie z.B. strg, alt, usw. . Außerdem kann ich mit Robot.keyPress() auch nicht alles drücken.
Wie kann ich es hinbekommen,dass beim Server, wenn ich z.B. shift drücke, kein '?' zum Clienten geschickt wird. Und wie bekomme ich es hin, Tastenkombinationen rauszufiltern, wie auch beim Clienten wirklich nur diese zu schreiben (z.B. strg+alt+entf)??
Und wie kann ich ein Zeichen wie '/' abfangen und schreiben??
 
Moin,

schau Dir mal die Klasse "java.awt.event.KeyEvent" an !
Dort sind Konstanten für alle Tasten deklariert, die Du dann benutzen kannst, bspw.:
Java:
void jTextAreaXXX_keyPressed( KeyEvent e ) 
{
	  if( (e.getKeyCode() == KeyEvent.VK_TAB) )
	  {
		  e.consume();
		  Toolkit.getDefaultToolkit().beep();
	  }
    
	  if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
	  {
 		// irgendwas
	  }

	  if( (e.getKeyCode() == KeyEvent.VK_F3) || (e.getKeyCode() == KeyEvent.VK_F12) )
	  {
 		// irgendwas
	  }
// usw.
}

Kominationen gehen auch, muss ich erst mal suchen, wie das genau war 😉

Gruß
Klaus

[EDIT]
Java:
    btnMyButton.setAccelerator( javax.swing.KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK) );
würde dann CTRL-T entsprechen
[EDIT-2]
Sorry, das geht so einfach doch nicht - das ist nur für JMenuItem deklariert ...
 
Zuletzt bearbeitet:
Die Abfragen kenne ich schon (und verwende sie), aber was ist z.B. mit dem Zeichen '\'?? Ich habe es mit dem hier versucht:

Java:
if(e.getKeyCode() == KeyEvent.VK_BACK_SLASH) {

...

}

doch leider ist er dort nich hinein, sondern hat statt strg '?', statt alt auch ein '?' und am Schluss noch ein ß geschrieben...
 
Danke, kombinationen klappen jetzt mal =) Nur was ist mit der Kombination bei \ z.B.?? Ich kann schauen ob strg und alt gedrückt ist, aber was ist 'ß'?? Gibt es auf englischen Tastaturen ja gar nicht...
 
Gibt es nun eine Möglichkeit, ein Zeichen wie ß abzufragen oder zu schreiben?? Habe es mal mit getKeyChar() == 'ß' probiert, klappt auch aber leider nicht mit kombinationen...
 

Zurück
Oben