Gestion des diodes du clavier...

Gestion des diodes du clavier... - Programmation

Marsh Posté le 11-02-2001 à 17:21:48    

Bonjour docteur...
j'ai un problème de diodes de clavier...
j'arrive à les faire clignoter à l'aide d'une dll en WINDOWS...
Toutes? Non... seule le NUM_LOCK est insensible...
En fait, son état est bien modifié par mon programme puisque je n'arrive plus à l'utiliser après, mais, la diode ne répond pas...
 
C'est grave docteur?
 
Merci....

Reply

Marsh Posté le 11-02-2001 à 17:21:48   

Reply

Marsh Posté le 11-02-2001 à 17:53:56    

Dans quel langage tu codes l'accès à cette touche?
 
Moi, j'ai le code en C qui code cette fonction par un appel qui passe directement au BIOS via int 10h.
 
Voici un exemple de code qui implémente la fonction:
{
 char far * ptrToucheSpec = (char far *) 0x00400017;
 char NumLock;
 char Active = 0x20;
 NumLock = * ptrToucheSpec & Active;
 if (NumLock != Active)
  {
   * ptrToucheSpec |= 0x20;
   printf("La touche Num Lock est activée!" );
  }
 else
  {
   * ptrToucheSpec &= 0xDF;
   printf("La touche Num Lock est désactivée!" );
  }
}
 

 


--Message édité par AlphaT--

Reply

Marsh Posté le 11-02-2001 à 18:04:43    

Merci de m'avoir répondu...
 
En fait, j'ai codé tout ça en C++...
J'ai fait une dll qui fonctionne sur des postes sous WinNT.
 
Puis, j'ai essayé sur deux stations Win98..., et ça ne fonctionne plus pour le NUM_LOCK... J'arrive bien à manipuler les CAPS_ et SCROLL_ LOCK.
 
En java, j'ai le même problème...
 
Je ne vois rien d'autre...
 
Tu passes par le BIOS?
Tu fais comment...?

Reply

Marsh Posté le 11-02-2001 à 18:06:50    

je n'avais pas vu le code...
 
merci, je l'étudie...

Reply

Marsh Posté le 11-02-2001 à 18:10:47    

Précision: mon programme n'utilisait pas la fonction prinft ou cout pour afficher des message donc quand j'ai écris 10h c'est que l'affichage de tous les messages passe par l'interruption 10h mais pour la diode Num Lock, je ne m'en souvenais plus par où.

 

--Message édité par AlphaT--

Reply

Marsh Posté le 11-02-2001 à 18:23:02    

Il me semble que sur certain clavier certaines diode refusent de s'activer/desactiver.Est ce que tu as essayer ton prog sur une autre machine?

Reply

Marsh Posté le 11-02-2001 à 18:28:35    

yush:
 
oui, j'ai essayé sur une autre machine en java (seulement).
L'état est bien activé, mais pas la diode...
 
Ex:
Si l'état est activé, et que mon programme désactive l'état du NUM_LOCK, alors l'état apparait comme étant désactivé, mais pas la diode...   Si je joue ensuite avec mon pavé numérique, il fait foncionner les flèches, et je ne peux plus le réactiver avec la touche physique...
Pour retrouver mon pavé numérique normal, je dois faire correspondre l'état de ma touche physique avec l'état dans le programme.
 
Tout cela est réservé au NUM_LOCK... les autres fonctionnent...
 
???

Reply

Marsh Posté le 11-02-2001 à 19:14:33    

AlphaT:
 
Ca ne fonctionne pas chez moi... Ca génère une erreur au moment de l'exécution...

Reply

Marsh Posté le 11-02-2001 à 19:51:38    

developpeur_en_panne a écrit a écrit :

AlphaT:
 
Ca ne fonctionne pas chez moi... Ca génère une erreur au moment de l'exécution...




 
En effet, je me demandais si ce code fonctionnnait sur tous les claviers. En tous cas, il fonctionne sur les claviers nord-américains (QWERTY) et chez moi également.
 
Le code que j'avais donné est dans le fichier:
http://www.multimania.com/forumhar [...] p6menu.cpp

 

--Message édité par AlphaT--

Reply

Marsh Posté le 12-02-2001 à 09:08:23    

je serais interessé, mais pour VB ...

Reply

Marsh Posté le 12-02-2001 à 09:08:23   

Reply

Marsh Posté le 12-02-2001 à 18:25:09    

l'etat du clavier peut se modifier en accedant à la mémoire du bios à l'adresse 40h:17h ce octet vaut
 
bit 7 à 1 = touche inser active
    6     = CapLock
    5     = NumLock
    4     = ScrollLock
    3     = touche ALT pressée
    2     = touche CTRL   -
    1     = touche SHIFT
on peut modifier les bits et le bios se charge via l'int 16h d'allumer/éteindre les diodes
 
on peut aussi programmer directement les entrées sorties du clvier via le port 60h/61h  - c'est mieux et ca permet de les faire clignoter plus rapidement

Reply

Marsh Posté le 12-02-2001 à 18:34:27    

funkyboss a écrit a écrit :

l'etat du clavier peut se modifier en accedant à la mémoire du bios à l'adresse 40h:17h ce octet vaut
 
bit 7 à 1 = touche inser active
    6     = CapLock
    5     = NumLock
    4     = ScrollLock
    3     = touche ALT pressée
    2     = touche CTRL   -
    1     = touche SHIFT
on peut modifier les bits et le bios se charge via l'int 16h d'allumer/éteindre les diodes
 
on peut aussi programmer directement les entrées sorties du clvier via le port 60h/61h  - c'est mieux et ca permet de les faire clignoter plus rapidement




 
waoouw , tu as l'air d'en connaitre un rayon sur l'assembleur PC !! sans indiscrétion, d'où çà te vient cette somme de connaissance ?

Reply

Marsh Posté le 12-02-2001 à 19:37:16    

en fait je recopiais sur www.ctyme.com !
mais je me rappelle plus exactemtn le code qu'il faut envoyer au clavier pour programmer les diodes - je sais plus si 60/61h ou 64h

Reply

Sujets relatifs:

Leave a Replay

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