IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

prog Xlib ( X11 ) comment differencier 2 claviers


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut prog Xlib ( X11 ) comment differencier 2 claviers
    Bonjour,

    je bosse sur un soft utilisant un clavier et un lecteur de code barre

    le lecteur de code barre agit comme un clavier donc linux le voit comme un clavier normal.

    j'aimerai savoir si il possible de differencer les evenement propre aux deux périphériques via une fonction de xlib.

    les 2 périfs sont en USB.

    merci de votre aide

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    il faut utiliser udev si tu as plusieurs periph identiques ils seront alors differenties par "vendor" ou pas numero de serie etc....

    bref par quelque chose qui permet de faire une identification hardware de N periphs identiques (plusieurs claviers, plusieurs souris etc....) cela marche aussi bien sur si l'un est ps/2 l'autre usb etc...etc...
    http://hhttp://reactivated.net/writing_udev_rules.html

    typiquement ce genre d'identification tres precise interdisant toute confusion :
    KERNEL=="sda", SYSFS{model}=="ST3120827AS", SYMLINK+="my_hard_disk"
    SUBSYSTEM=="block", SYSFS{size}=="234441648", SYMLINK+="my_disk"
    BUS=="usb", SYSFS{manufacturer}=="OLYMPUS", SYSFS{product}=="X250,D560Z,C350Z", SYMLINK+="camera"

    etc... etc...

    une fois que le systeme connais les differents periphs la oui tu peux les appeler depuis un programme
    mais pas avant. tant que le systeme ne creer pas deux periphs dans /dev pour les deux clavier inutile d'essayer de les distinguer car c'est impossible. il y a forcement conflit pour le periph non standard. (ton lecteur)...

    bref le plus simple est que ton programme ailles regarder dans /etc/udev/rules/ les regles etablies pour tes claviers. afin d'identifier le /dev/truc qui correspon d a ton lecteur... ainsi ton programme marchera sur toute machine

    si tu l'identifies en dur dans le code comme /dev/lecteur ton programme ne sera pas portable a d'autre machine il est donc sans interet.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par frp31
    il faut utiliser udev si tu as plusieurs periph identiques ils seront alors differenties par "vendor" ou pas numero de serie etc....

    bref par quelque chose qui permet de faire une identification hardware de N periphs identiques (plusieurs claviers, plusieurs souris etc....) cela marche aussi bien sur si l'un est ps/2 l'autre usb etc...etc...
    http://hhttp://reactivated.net/writing_udev_rules.html

    typiquement ce genre d'identification tres precise interdisant toute confusion :
    KERNEL=="sda", SYSFS{model}=="ST3120827AS", SYMLINK+="my_hard_disk"
    SUBSYSTEM=="block", SYSFS{size}=="234441648", SYMLINK+="my_disk"
    BUS=="usb", SYSFS{manufacturer}=="OLYMPUS", SYSFS{product}=="X250,D560Z,C350Z", SYMLINK+="camera"

    etc... etc...

    une fois que le systeme connais les differents periphs la oui tu peux les appeler depuis un programme
    mais pas avant. tant que le systeme ne creer pas deux periphs dans /dev pour les deux clavier inutile d'essayer de les distinguer car c'est impossible. il y a forcement conflit pour le periph non standard. (ton lecteur)...

    bref le plus simple est que ton programme ailles regarder dans /etc/udev/rules/ les regles etablies pour tes claviers. afin d'identifier le /dev/truc qui correspon d a ton lecteur... ainsi ton programme marchera sur toute machine

    si tu l'identifies en dur dans le code comme /dev/lecteur ton programme ne sera pas portable a d'autre machine il est donc sans interet.
    salut j'avais dejà pensé a faire ça mais le probleme vient des méthodes d'évenement clavier de X11 en fait a ma connaisance ces méthodes ne te permet pas de spécifier un clavier en particulier car je pense que c le driver clavier qu'il lui donne les infos sur les evenement et comme le lecteur code barre code utilise ce driver et que le driver est chargé un seul fois alors

    je pense c cause perdu je vais de ce pas chercher une autre astuce

    merci comme meme pour ton aide

Discussions similaires

  1. Comment différencier les événements sur wxButton ?
    Par Eldered dans le forum wxWidgets
    Réponses: 7
    Dernier message: 24/04/2008, 17h54
  2. Comment differencier un champ action de la proprieté action du formulaire?
    Par TangoZoulou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/02/2007, 17h20
  3. Comment afficher le clavier visuel ?
    Par crossrobotik dans le forum MFC
    Réponses: 1
    Dernier message: 30/01/2007, 14h38
  4. Comment remplacer le clavier par des boutons ?
    Par aliwassem dans le forum Langage
    Réponses: 1
    Dernier message: 14/12/2005, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo