2012-01-09 9 views
6

Sto premendo il tasto AltGr nella mia applicazione Java, ma invece di ricevere un KeyEvent con il codice chiave VK_ALT_GRAPH ottengo due eventi. Il primo con il codice chiave VK_CONTROL e il secondo con VK_ALT.Java non produce l'evento chiave AltGr corretto

È questo il comportamento corretto?

Utilizzo di Java 7 su Windows 7. possono essere riprodotti con l'applicazione demo trovato su http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

Quando premo AltGr riporta:

 
KEY PRESSED: 
    key code = 17 (Ctrl) 
    extended modifiers = 128 (Ctrl) 
    action key? NO 
    key location: left 
KEY PRESSED: 
    key code = 18 (Alt) 
    extended modifiers = 640 (Ctrl+Alt) 
    action key? NO 
    key location: right 
KEY RELEASED: 
    key code = 17 (Ctrl) 
    extended modifiers = 512 (Alt) 
    action key? NO 
    key location: left 
KEY RELEASED: 
    key code = 18 (Alt) 
    extended modifiers = 0 (no extended modifiers) 
    action key? NO 
    key location: right 
+0

Su Linux (Ubuntu) attiva solo un evento ma con il codice chiave 0 e non VK_ALT_GRAPH (suppongo che sia possibile controllare lo stato con isAltGraphDown) .Questo comportamento sembra essere altamente specifico della piattaforma.È un errore? –

+0

Questo sembra essere un problema generale di win32 con alcuni layout di tastiera (per esempio tedesco-svizzero). Desidero spostare tale domanda su input win32, non sono sicuro che possa aiutare a trovare soluzioni .. – elmarco

risposta

4

in finestre, AltGr e Ctrl + Alt sono sinonimi. in alcune impostazioni locali (layout di tastiera ?, entrambi sono trattati come Ctrl + Alt, in altri sono entrambi trattati come AltGr. Tuttavia, non ne sono completamente sicuro.

Vedere http://msdn.microsoft.com/en-us/library/windows/desktop/aa511502.aspx e utilizzare Ctrl-F per trovare AltGr.

+0

Sì, ho sentito la stessa cosa, ma questo è solo un cosa di convenienza per le persone che non hanno la chiave AltGr. Credo che Windows distini spazia tra Ctrl + Alt e AltGr –

Problemi correlati