Désactiver le menu Accents de caractères Mac pendant l'exécution de mon application Java


Je construis un jeu Java dans Swing, et j'ai un problème où keyPressed les événements cessent de s'enregistrer après avoir maintenu les touches A ou S trop longtemps sur Mac (c'est un gros problème étant donné que le jeu utilise le mouvement WASD).

Après avoir creusé autour de Stack Overflow, j'ai découvert que maintenir enfoncée des touches comme celle-ci suspend le focus car elle tente d'ouvrir le menu Caractères accentués, même si la liste normale des caractères accentués n'apparaît pas. Lorsque je désactive le menu Accents de caractère sur mon Mac, tout fonctionne bien. Cependant, j'aimerais savoir s'il existe un moyen natif Java de contourner ce comportement (comme un wrapper pour KeyListeners) car je ne veux pas que tous les utilisateurs de Mac aient à gérer ce problème.

Author: William Merrill, 2016-11-21

1 answers

J'ai eu la même question, et le problème était la version Java.

J'avais JDK 1.8.0_151, mais apparemment ce problème a été résolu dans une certaine itération jusqu'à JDK 1.8.0_172.

Vous pouvez résoudre le problème en mettant à jour votre JDK pour votre développement et éviter ce problème pour vos utilisateurs en vérifiant leur version java à l'aide de org.Apache.commun.lang3.SystemUtils

Par exemple

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