JAVA : Déterminer l'état du capslock

JAVA : Déterminer l'état du capslock - Java - Programmation

Marsh Posté le 09-06-2009 à 08:52:26    

Bonjour,  
 
J'ai besoin via un programme en Java de connaitre l'état du capslock (Savoir si capslock est activer ou désactiver). Au debut, je pensais que ce serais facile mais je n'ai trouver aucune méthode capable de résoudre mon probleme (pourtant il existe des solutions pour d'autre langage).  
En fait, je veut via la classe java.awt.Robot (qui permet entre autre de simuler l'appui sur les touches d'un clavier) ecrire en majuscule ou en minuscule.  
http://java.sun.com/javase/6/docs/ [...] Robot.html  
 
Si je connais l'etat du capslock, cela me permettra de simuler un appui sur le bouton capslock si son état n'est pas celui qui convient.  
 
Merci pour le temps que vous allez prendre pour me repondre.

Reply

Marsh Posté le 09-06-2009 à 08:52:26   

Reply

Marsh Posté le 09-06-2009 à 09:25:33    

java.awt.Toolkit.getLockingKeyState()


---------------
Light is right
Reply

Marsh Posté le 09-06-2009 à 10:23:55    

Je vient d'essayer cette méthode mais je ne parvient pas a la faire fonctionner.
Afin de recuperer l'etat du capslock j'ai introduit cette ligne (sans rien changer d'autre) de code dans mon programe :
 
Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
 
Cette méthode devrais me renvoyer un boolean dont la valeur m'indique l'etat du capslock mais elle me génére une exception :
 
Exception in thread "main" java.lang.UnsupportedOperationException: Toolkit.getLockingKeyState
        at java.awt.Toolkit.getLockingKeyState(Toolkit.java:1388)
        at simulationclavier.SimulClavier.main(SimulClavier.java:332)
 
Toolkit est un composant graphique, le probleme doit venir de là et je ne sais pas comment l'utiliser.
 
EDIT :
Finalement, ce code marche bien sous windows mais pas sous linux. Apparament il y a des systémes de sécurité sous linux qui m'empeche d'utiliser cette méthodes...
 
Si vous avez des idées, je suis prenneur.


Message édité par ysatnaf le 09-06-2009 à 10:47:43
Reply

Marsh Posté le 09-06-2009 à 11:25:18    

Effectivement, et apparemment il n'y a pas trop d'autre solution...
D'autant plus que cette méthode est affectée d'un bug:
   http://bugs.sun.com/bugdatabase/vi [...] id=4414164


---------------
Light is right
Reply

Marsh Posté le 09-06-2009 à 14:03:46    

Cette méthode renvoie uniquement l'etat du capslock lors du lancement du programme. Elle n'est ensuite plus mis a jour...
Je pensais essayer d'envoyer le caractere 'a' (par simulation du clavier) puis verifier son code ascii (verifier si il correspond au caractere a minuscule ou a majuscule). De cette façon je pourrais connaitre l'etat du capslock.
C'est tout de même asser compliquer (thread etc...)
 
Je pense que je vais plutôt imposer a l'utilisateur de desactiver le capslock ^^
   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed