[Java] Existe-t-il une commande pour faire clignoter les led clavier ?

Existe-t-il une commande pour faire clignoter les led clavier ? [Java] - Java - Programmation

Marsh Posté le 07-05-2010 à 02:46:55    

Bonjour,
 
je désire faire une application en java qui fera clignoter une des trois lumières du clavier (associées à Verr num, F Lock, Verr maj) selon un laps de temps total, un laps de temps durant lequel la lumière est allumée et un laps de temps durant lequel la lumière est fermée (qui seront tous saisie par l'utilisateur).
 
Maintenant mon problème : je ne connais pas la commande (si seulement existe-t-elle) qui permet d'allumer ou éteindre les lumières du clavier.
 
Je cherche quelque chose de tout simple donc, merci d'avance si vous pouvez m'aider et voici mon code pour vous donnez un aperçu (il reste simplement à mettre ladite commande).
 
   

Code :
  1. public static void main(String[] args) {
  2.         int tempsTotal = 1000 * Integer.parseInt(JOptionPane.showInputDialog(null,
  3.                          "Combien de secondes voulez-vous que dure l'animation ?",
  4.                          "Saisie du nombre", JOptionPane.QUESTION_MESSAGE));
  5.         int lapsTempsAllume = 1000 * Integer.parseInt(JOptionPane.showInputDialog(null,
  6.                               "Combien de secondes voulez-vous que la lumière reste allumée ?",
  7.                               "Saisie du nombre", JOptionPane.QUESTION_MESSAGE));
  8.         int lapsTempsFerme = 1000 * Integer.parseInt(JOptionPane.showInputDialog(null,
  9.                              "Combien de secondes voulez-vous que la lumière reste fermée ?",
  10.                              "Saisie du nombre", JOptionPane.QUESTION_MESSAGE));
  11.         long debut = System.currentTimeMillis();
  12.         while((System.currentTimeMillis() - debut) < tempsTotal){
  13.             // ici faire la commande qui allume la lumière
  14.             try{
  15.                 Thread.sleep(lapsTempsAllume);
  16.             }catch(InterruptedException e) {JOptionPane.showMessageDialog(null,
  17.                         "Une erreur est survenue" );}
  18.             // ici faire la commande qui ferme la lumière
  19.             try{
  20.                 Thread.sleep(lapsTempsFerme);
  21.             }catch(InterruptedException e) {JOptionPane.showMessageDialog(null,
  22.                         "Une erreur est survenue" );}
  23.         }
  24.     }


Message édité par Demsoti le 07-05-2010 à 02:49:51
Reply

Marsh Posté le 07-05-2010 à 02:46:55   

Reply

Marsh Posté le 07-05-2010 à 10:13:01    

non

Reply

Marsh Posté le 07-05-2010 à 11:06:50    

Pour faire ce genre de chose, il faut altérer le noyau de ton SE afin d'ouvrir un accès au drivers du clavier pour ainsi pouvoir écrire et lire directement dans le port correspondant (en résumé).
J'ai déjà fais ça sous linux (mais surement pas en java) dans le cadre d'un exercice sur l'ordonnancement des taches et en général tu fais ça sur un SE dédié. Généralement ton SE ne se remet pas très bien de ce genre d'appli et le clavier marche plus très bien après.

 

Donc comme te répond phnatomass : non, pas possible en java.


Message édité par b0b_ChoK le 07-05-2010 à 11:07:42
Reply

Marsh Posté le 07-05-2010 à 17:00:54    

Un simple non m'étonne un peu. La bibliothèque java est énorme... Peut-être la sous-estimes-tu.
 
En tout cas c'est possible en forth, en donnant l'accès au port et en désactivant le controle dont l'os a dessus, puis en le remettant quand on a fini de "jouer" avec. Bref c'est très simple un truc de quelques lignes et je ne crois pas que ça dérange vraiment.
 
Merci quand même :p.
 
Edit : J'ai trouvé la classe Robot, peut-être y a-t-il quelque chose à faire avec :).

Message cité 1 fois
Message édité par Demsoti le 07-05-2010 à 17:08:35
Reply

Marsh Posté le 07-05-2010 à 18:22:42    

Demsoti a écrit :


Edit : J'ai trouvé la classe Robot, peut-être y a-t-il quelque chose à faire avec :).


Non

Reply

Marsh Posté le 07-05-2010 à 19:10:07    

Tu pourrais être un peu plus explicite là tu n'aides pas vraiment  :sweat:

Message cité 1 fois
Message édité par Demsoti le 07-05-2010 à 19:10:20
Reply

Marsh Posté le 07-05-2010 à 19:36:50    

Demsoti a écrit :

Tu pourrais être un peu plus explicite là tu n'aides pas vraiment  :sweat:


Robot sert juste à simuler un clic ou l'appui d'une touche mais à mon avis pas celles liées à tes LED.

 

Edit : à priori on peut utiliser ces touches finalement.


Message édité par Deamon le 10-05-2010 à 11:05:19
Reply

Marsh Posté le 10-05-2010 à 10:49:08    

Sincèrement, ce n'est pas de mauvaise fois qu'on te répond non. Je ne sais pas du tout comment on pourrait procédé sous windows pour accéder au hard du clavier. Mais le peu de fois où je l'ai fais sous du linux, le soucis est qu'une fois l'appli mis en marche, le clavier ne répond plus super bien, donc pas simple de reprendre la main. Je ne sais pas sur quel type de SE tu souhaites le faire, mais dans l'idée, ça fait un peu apprenti sorcier comme soft.
 
Après l'idée d'émuler la pression de touche dans l'idée que le clavier va réagir, c'est une idée que je n'avais pas envisagé et qui peut-être à tester. Mais encore une fois, il faut pas simulé un signal sur ton entrée standard mais plutôt le signal émis par le hard vers ton système. Car ça reste le système qui va déterminer le changement d'état des LED du clavier. Et je pense que Robot ne fait qu'envoyer un signal à plus haut niveau.
 
Enfin creuse et n'hésite pas à nous communiquer tes résultats!


---------------
Etudiant à l'IUP Systèmes Intelligents de Toulouse en Master 2
Reply

Marsh Posté le 10-05-2010 à 11:01:51    

Je synthétise.
Ton besoin n'est pas supporté par le langage java.
Au mieux tu peux chercher une solution en programmation système en langage c ou c++.
Ensuite depuis le java tu effectueras des appel natifs via jni.


Message édité par phnatomass le 10-05-2010 à 11:02:02
Reply

Marsh Posté le 10-05-2010 à 11:03:59    

Bonjour,
une petite recherche dans google: http://gmailassistant.sourceforge. [...] .java.html
Sinon sous windows, avec une fonction de l'api en C: http://msdn.microsoft.com/en-us/li [...] 85%29.aspx

Reply

Marsh Posté le 10-05-2010 à 11:03:59   

Reply

Marsh Posté le 10-05-2010 à 11:04:09    

@phnatomass : Ah! C'était plus synthètique quand tu disais "non",  :pt1cable:
 
Et merci breizhbugs, tu nous démontres que Robot permet d'y arriver!


Message édité par b0b_ChoK le 10-05-2010 à 11:12:49

---------------
Etudiant à l'IUP Systèmes Intelligents de Toulouse en Master 2
Reply

Marsh Posté le 10-05-2010 à 11:14:00    

Voilà

Code :
  1. Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_CAPS_LOCK, true);


Ca tient en une ligne.
La prochaine fois je fermerais ma g**le si je n'ai pas la réponse  :sleep:

Reply

Sujets relatifs:

Leave a Replay

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