2014-12-28 14 views
11

Sto usando una tastiera tedesca (mostrata sotto) e sto provando la classe robotica in Java. Sto cercando di trovare i KeyCode per i tasti che ho premuto. Funziona con getKeyCode(). Ad esempio: 'A' è il codice: 65, '-' è il codice: 45, 'ENTER' è il codice: 10KeyCode per la chiave (? ß )

Ma quando premo il tasto '? Tasto ß \ (sulle tastiere tedesche a destra dei tasti 1-0 sopra) getKeyCode() dice Codice: 0 e nel documentario non ho trovato alcun documento VK_KEY.

C'è un modo per premere quel tasto?


German keyboard

+1

Hai provato a utilizzare invece 'getExtendedKeyCode()'? –

+0

Stai premendo 'ß' o una combinazione? Cosa intendi? ß \ '? – Bohemian

+0

@Bohemian Normale pressione del tasto su quel tasto dà un 'ß' con Shift e quella chiave è un '?' e con Alt Gr e che Key è un '\' – DroiDar

risposta

1

I codici chiave sono per le tastiere con layout inglese/USA. Prova VK_EQUALS per la chiave in sé ma invece Robot potrebbe effettivamente inviare un =.

Se non è necessario premere il tasto effettivo ma il carattere inserito, è possibile provare a simulare l'input Unicode tramite il punto di codice Unicode Alt +. Vedere questa domanda: How to make the Java.awt.Robot type unicode characters? (Is it possible?)

Vedi anche questa risposta: https://stackoverflow.com/a/14766664/34088 Si punta a una libreria che utilizza i layout di tastiera per mappare i caratteri Java per le chiavi. RoboticAutomaton.typeCharacter() utilizza il layout della tastiera per scoprire in che modo premere per ottenere un determinato carattere.

1

Bene java supporta circa 44000 caratteri diversi compresi i caratteri ASCII quindi aspettatevi alcune novità anche se volete vedere quale tasto state premendo e quale viene premuto, basta stamparli nel tasto Metodo premuto da getExtendedKeyCode() se non è una chiave standard e stampa la chiave stessa.

+0

'System.out.println (" Chiave: "+ e.getKeyChar() +", Codice: "+ e.getKeyCode() +" Esteso: "+ e.getExtendedKeyCode()); 'mi dà i KeyCode, ma quando provo con' KeyPress' e 'KeyRelease' dice l'eccezione: Codice chiave non valido – DroiDar

+0

Potresti elaborare un po ' –

1

Il javadoc of KeyEvent dice:

Non tutti i personaggi hanno un codice chiave ad essi associati. Ad esempio, non esiste un codice chiave per il punto interrogativo perché non esiste una tastiera per la quale appare sul livello principale.

Il carattere ß è un tale carattere. Tuttavia, tutti gli eventi di pressione dei tasti hanno una consistente esteso codice chiave che può essere trovata con il metodo di utilità KeyEvent.getExtendedKeyCodeForChar() e confrontato con quello dall'evento chiave:

if (keyEvent.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('ß')) { 
    // ß was pressed 
} 
0

Barra rovesciata \ è apparentemente considerato il personaggio principale di questa chiave. Quindi KeyEvent.VK_BACK_SLASH ti fornisce il codice-chiave di quel tasto su una tastiera tedesca.

Problemi correlati