Forum général.cherche-logiciel Cherche solution interruption clavier

Posté par  .
Étiquettes :
0
23
avr.
2007
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  . Évalué à -1.

    ou lis ton cours sur les interruptions en C

    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  (site web personnel) . Évalué à 4.

    Tout cela m'a l'air bien flou. Si j'ai bien compris, il y a 2 problèmes :
    - 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.