SCANCODES CLAVIER EN I/O

philou02 Messages postés 6 Date d'inscription mercredi 9 mai 2001 Statut Membre Dernière intervention 4 juin 2004 - 7 mai 2004 à 10:18
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 - 12 janv. 2009 à 20:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22295-scancodes-clavier-en-i-o

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
12 janv. 2009 à 20:19
# mov eax, [es:(9*4)]
# mov [cs:OldInt9], eax

Euh ... on est en mode réel (sous DOS, dans ce cas-ci) donc pas question d'utiliser EAX qui est un registre 32 bits car ton code ne fonctionnerait pas sur un processeur 16 bits !
Mais tu peux faire :

# mov ax, [es:(9*4)]
# mov [cs:OldInt9], ax
# mov ax, [es:(9*4)+2]
# mov [cs:OldInt9+2],ax
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
9 sept. 2004 à 13:17
Petit message vite fait...

En tapant Bombela dans google, je suis retombé sur cette source...

J'ai jamais posté de driver clavier !
Et oui ! Pas le temps de le terminer !
De plus, j'étai partit du mauvais pied !

M'enfin c'est pas grâve... Y a Modula qui avance ! (Le nouveau nom de PM3D, plus en rapport avec l'évolution du projet !)

@+
philou02 Messages postés 6 Date d'inscription mercredi 9 mai 2001 Statut Membre Dernière intervention 4 juin 2004
4 juin 2004 à 11:52
Bonjour,

Peut on récupérer les code obtenu, et les intégrer dans prog en C ou C++ ?

philippe
zinotron Messages postés 65 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 11 septembre 2004
4 juin 2004 à 00:10
"Alors je cherche et je trouverais ..." (allez, tous en coeur :p )
drasow Messages postés 1 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 28 mai 2004
28 mai 2004 à 17:09
je cherce kelkun ki si conné en java
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
18 mai 2004 à 19:29
C 'est pas grâve ;)

Pour mon driver ?

Ben je mélange du C et de l'ASM.

Tu verra comment ça fonctionne quand je l'aurais fini !

Parce uqe pour le moment, c'est pas au top du fonctiononnement ;)

Mais globalement, y juste de l'asm pour installer un gestionnaire de l'int9 le désinstaller etc. En fait, c'est du code asm qui est appelé par une interruption, et c'est ce code asm qui appeelle une fonction C pour la gestion du clavier. Arpès, le code asm envoi au PIC des INT matrérielle le message de fin d'INT.

Le problème n'es pas dans la programmation du matériel. Elle est au momment de convertir les scancode du claviier (Qui sont bordélique) en code de touche virtuelle et en caractère.

Rend toi compte que les virtual code doivent être les mêmes sur un clavier français, anglais ou suisse ! C'est donc vraiment difficile.

Et puis aussi la convertion en caractère ! Il faut gérer les trema, les accents circonflexes et tout et tout !!!

Comme tu vois, c'est pas de tous repos, mais j'ai beoisn de se driver pour un OS spécial 32 bit (PM3D qu'il sappelle ;). Je le dévelloppe dabors pour dos, et une convertion en 32 bits sera facile...

Bye.
zinotron Messages postés 65 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 11 septembre 2004
18 mai 2004 à 19:15
question marrante -> tu fais comment pour ton driver clavier ? (qui a dit que j'etait tres interessé ?)
au fait mill pardons, t'avais raison, j'éi confondu avec je c pu trop koi
have fun
danke
++
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
18 mai 2004 à 17:56
Au fait, en dévellopant un driver clavier en C (Que j'ai toujours pas fini), je suis apreçus que j'ai fais une grosse erreur dans cette source asm !!

Quand un scancode étendu est généré, il ne faut pas essayer de lire tout de suite le suivant !!! Il faut attendre la provhaine interrption clavier qui vas, a ce moment là, donner la suite du scancode.

Donc, si ça marche, c'est un coup de bol...

@+
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
18 mai 2004 à 17:52
Nan nan nan !!! ;)

Tu te trompe ! L'interruption 9 est générer par le processeur lorsqu'une interruption matérielle 1 (Le clavier) est déclanchée !

Je ne tripotte pas le bios !!! En 32 bit, on fait pareil.

Le clavier, génère donc une interruption 9.

Tu vas me dire: mais pourquoi on se retrouve avec une interruption 9 alors que c'est l'interruption matérielle 1 ?

Et bien c'est tous simple ! Les 9 autres interruptions en dessous (0..8) sont dédiée au interruption du processeur et du coprocesseur.

C'est a dire les interruptions du genre erreur de divisions etc.

Voilà !

@+
zinotron Messages postés 65 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 11 septembre 2004
18 mai 2004 à 17:03
chapeau!
la verité, ca claque !
par contre, je suis au regret de te dire que ca ne marche pas comme ca dans les OS.
en effet, tu te base sur l'interuption 9 du bios, mais ca fait depuis longtemps que les OS fonctionnent en mode protégé, ce qui leurs interdit l'acces au bios (et meme que c'est tres chiant, ca m'aurait bcp arrangé :-) )
mais chapeau !
ZiNoTrOn
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
7 mai 2004 à 12:45
Et bien c'est cool !

J'suis en train de faire un driver clavier en C/ASM pour apprendre le C et en même temps m'entraîner à faire un driver.

Heu... Je fais pas un driver pour DOS, je précise...
C'est un driver pour programme en gros...

Enfin à suivre quoi...

Je mettrais sur le site quand ce sera fini.

@+
philou02 Messages postés 6 Date d'inscription mercredi 9 mai 2001 Statut Membre Dernière intervention 4 juin 2004
7 mai 2004 à 10:18
Marche nikel !
Rejoignez-nous