Bonjour,
Je travail sous Linux Fedora 5 ( prog en C ) et je cherche une petite solution pour obtenir des interruptions clavier.
Mon programme principal doit permettre à l'utilisateur, à un moment donné, d'appuyer sur F1, F2 ou F3 pour faire telles ou telles actions.
Je ne peut pas utiliser de moniteur ( switch(case) ) ni de read, scanf, getchar, etc, car j attend au même moment une autre interruption venant d'un de mes ports série.
Voila! (un peu galère je trouve!)...
J'ai déjâ trouvé quelques pistes, comme le fait que le port du clavier sous linux serait à l'adresse 0040001A, ou encore l'histoire du buffer clavier invoqué à l'aide de STDIN_FILENO mais rien de concret.
J'essaye aussi de comprendre le fonctionnement des signaux sous linux et comment je pourrai m'en servir en lien avec le clavier.
Enfin je cherche désespèrement un code source de la programmation de l'interruption (bien connu) sous Linux du CTRL+C....
Donc si quelqu'un possède une piste!!!!!!!
Merci d'avance
# RTFM
Posté par NeoX . Évalué à -1.
puis va faire un tour dans les sources des gestionnaires de clavier.
car finalement il suffit d'intercepter la frappe du clavier quand elle est recu par la machine.
# Ceci constitue peut-être une réponse
Posté par David Decotigny (site web personnel) . Évalué à 4.
- attente d'évènements venant de 2 sources différentes (tty et ttyS)
- pour tty, attente en mode "caractère" plutôt que "ligne"
Dans les 2 cas, inutile de s'intéresser aux IRQ : c'est le noyau qui gère ça. Les gérer soi-même signifierait... modifier le noyau. Ce serait ridicule parce que tout ça est possible en espace user, et il y a même moyen de faire quelque chose de portable (solaris, *bsd, ... mac os ???).
Pour le premier point, select ou poll sont des solutions (RTFM).
Pour le deuxième point, info libc, rechercher "non canonical input" (ou http://info2html.sourceforge.net/cgi-bin/info2html-demo/info(...) ). Pour ce qui est du cas spécial du "Ctrl-C", man signal : c'est SIGINT qu'il faut rattraper.
Evidemment, tout ca est accessible directement par la libc. Mais j'imagine qu'en utilisant des bibliotheques de plus haut niveau (glib, *curses, slang, etc.) il y a moyen de se simplifier la vie.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.