Disabilita il menu Accenti di caratteri Mac mentre la mia app Java è in esecuzione


Sto costruendo un gioco Java in Swing e ho un problema in cui gli eventi keyPressed smettono di registrarsi dopo aver tenuto i tasti A o S troppo a lungo su Mac (questo è un grosso problema considerando che il gioco utilizza il movimento WASD).

Dopo aver scavato intorno Stack Overflow, ho scoperto che tenendo premuto i tasti come questo sospende lo stato attivo perché tenta di aprire il menu caratteri accentati, anche se il normale elenco di caratteri accentati non appare. Quando disattivo il menu accenti di carattere sul mio Mac, tutto funziona bene. Tuttavia, mi piacerebbe sapere se esiste un modo nativo di Java per aggirare questo comportamento (come un wrapper per KeyListeners) poiché non voglio che tutti gli utenti Mac debbano affrontare questo problema.

Author: William Merrill, 2016-11-21

1 answers

Avevo la stessa domanda e il problema era la versione Java.

Avevo JDK 1.8.0_151, ma apparentemente questo problema è stato risolto in alcune iterazioni fino a JDK 1.8.0_172.

È possibile risolvere il problema aggiornando il JDK per lo sviluppo e prevenire questo problema per gli utenti controllando la loro versione Java utilizzando org.Apache.comune.lang3.SystemUtils

Ad esempio

if(isJavaVersionAtLeast(JavaVersion.JAVA_1_9)) {
    /* Insert message/pop-up to update and give link to Java download
     * You can exit the program using System.exit(0) or send them to the
     * download site or link using Desktop.getDesktop().browse(new URI(url))
     * Where url is the URL of the site or link in the form of a String
}
 1
Author: Gigi Bayte 2, 2018-07-05 00:14:27