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

C++ Discussion :

Pris en charge des inputs (clavier, souris, etc.) en c++ sous Linux


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Dev
    Inscrit en
    Mai 2009
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Mai 2009
    Messages : 257
    Points : 190
    Points
    190
    Par défaut Pris en charge des inputs (clavier, souris, etc.) en c++ sous Linux
    Bonjour,

    quelqu'un saurait il s'il existe une librairie C++ sous Linux (voire multiplateforme) capable de traiter évènements clavier (avec combinaisons touches + auto-repat) , souris ou manettes de jeux qui seront envoyés à une boucle principale ?
    Et possiblement en mesure de prendre en charge plusieurs claviers, souris... sur une machine ?

    j'utilise actuellement OIS, une API portable, mais la doc est introuvable

    ou bien faut il me confectionner mon propre truc à base de kbhit(); et autres fonctions système ?

    merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Je ne sais pas si cela correspond à ton besoin, mais voilà les idées qui me viennent:

  3. #3
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    mais la doc est introuvable
    Il me semble que la documentation doxygen dans les headers est très claire. Je l'ai utilisé pendant des années sans souci.

  4. #4
    Membre habitué
    Profil pro
    Dev
    Inscrit en
    Mai 2009
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Mai 2009
    Messages : 257
    Points : 190
    Points
    190
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Il me semble que la documentation doxygen dans les headers est très claire. Je l'ai utilisé pendant des années sans souci.
    ok

    pour ce qui est d'avoir plusieurs claviers, OIS offre des possibiltés ? de même pour la cominaison de touches simultanées ?

  5. #5
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    A ce que je sache, dans les dernières versions, il prends autant d'inputs qu'il y a de disponible niveau hardware.

    Pour les touches simultanées, ce n'est pas un problème niveau software. OIS te fournis à la fois un systeme d'events et un system pour avoir l'état "total" des inputs, par exemple un systeme demasque pour savoir quelles sont les touches appuyées en même temps.

    Le problème peut survenir que le clavier par exemple ne suporte pas certaines combinaisons de touches, ce qui est le cas de tous les clavier moyenne et même haute gamme. Seulement certains claviers très cher supportent l'acquisition de toutes les touches séparémetn, la plupart des claviers marchent avec 2-3 touches simultanées mais cela dépends totalement des combinaisons. Pour une question d'efficacité, seule les touches Ctrl, Alt, Shift sont guarantiées d'être utilisable en simultané avec les autres touches. Ce sont les "modifieurs", cela permet d'avoir au moins une guarantie sur ce qu'on peu prendre ensemble.

  6. #6
    Membre habitué
    Profil pro
    Dev
    Inscrit en
    Mai 2009
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Mai 2009
    Messages : 257
    Points : 190
    Points
    190
    Par défaut
    Citation Envoyé par Klaim Voir le message
    A ce que je sache, dans les dernières versions, il prends autant d'inputs qu'il y a de disponible niveau hardware.
    Si OIS détecte deux claviers, comment identifier chacun d'eux ?

    Pour les touches simultanées, ce n'est pas un problème niveau software. OIS te fournis à la fois un systeme d'events et un system pour avoir l'état "total" des inputs, par exemple un systeme demasque pour savoir quelles sont les touches appuyées en même temps.
    Tu aurais des exemples de code de ces aspects par hasard ? OIS n'en fournit pas dans son SDK

    Le problème peut survenir que le clavier par exemple ne suporte pas certaines combinaisons de touches, ce qui est le cas de tous les clavier moyenne et même haute gamme. Seulement certains claviers très cher supportent l'acquisition de toutes les touches séparémetn, la plupart des claviers marchent avec 2-3 touches simultanées mais cela dépends totalement des combinaisons. Pour une question d'efficacité, seule les touches Ctrl, Alt, Shift sont guarantiées d'être utilisable en simultané avec les autres touches. Ce sont les "modifieurs", cela permet d'avoir au moins une guarantie sur ce qu'on peu prendre ensemble.
    mais si je bufferise les touches simultanées, ça n'a plus d'importance, non ?

    par exemple, un tableau qui regroupe les touches pressées et non relâchées

  7. #7
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par coda_blank Voir le message
    Si OIS détecte deux claviers, comment identifier chacun d'eux ?
    Dans InputManager : http://wgois.cvs.sourceforge.net/vie...InputManager.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     /**
    92                      @remarks
    93                              Returns the number of the specified OIS::Type devices discovered by OIS
    94                      @param iType
    95                              Type that you are interested in
    96                      */
    97	                int getNumberOfDevices( Type iType );
    Tu aurais des exemples de code de ces aspects par hasard ? OIS n'en fournit pas dans son SDK
    Je ne retrouve plus le wiki effectivement, il y avait des exemples. Tu peux déjà aller voir dans les samples d'Ogre3D (http://ogre3d.org) parceque le mec a l'origine d'OIS est dans l'equipe d'Ogre3D et ils l'utilisent.

    Sinon j'ai du code mais pas avec la toute dernière version, voir plus loin.

    mais si je bufferise les touches simultanées, ça n'a plus d'importance, non ?
    Ca dépends de tes besoins niveau timing des inputs, mais en gros oui.

    par exemple, un tableau qui regroupe les touches pressées et non relâchées

    C'est ce que je fais dans un jeu.

    En gros je suis dans un cas très spécial ou je dois ajouter une couche intermédiaire par dessus OIS pour avoir un état des inputs de manière à les modifier via le code avant qu'ils ne soient gérés par la mise à jour du jeu.

    Donc dans ce systeme, j'ai des interfaces représentant clavier et souris spécifiquement pour le jeu, et dans les implémentations de ces interfaces, utilisant OIS, je passe par un buffer pour le clavier représentant tout l'état du clavier. L'idée est qu'a chaque update d'input, on met le buffer a 0 puis on récupère létat du clavier via OIS et ensuite le jeu se débrouille avec les infos récupérées. Je te mets le code source en copie, même si c'est un peu vieu ça peut peut-être t'aider.

    (comme c'est du vieux code, ya de l'heritage qui n'est plus trop nécessaire mais bon)

    Attention : je te fais une fleur, c'est du code d'un projet commercial (de moi et moi seul donc j'ai les droits), mais je ne peut pas te filer tout le code du jeu ou le mettre open source. Si c'estpas clair, demande toujours, cettepartie là du code devrait être assez simple au final.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Je viens de retrouver l'addresse du forum d'OIS : http://www.wreckedgames.com/forum/index.php

    Cette page du forum d'Ogre pourrait t'aider aussi :
    http://www.ogre3d.org/tikiwiki/OIS

  9. #9
    Membre habitué
    Profil pro
    Dev
    Inscrit en
    Mai 2009
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Mai 2009
    Messages : 257
    Points : 190
    Points
    190
    Par défaut
    Ah superbe, merci pour tous ces conseils, je pense que j'y verrai plus clair, surtout avec l'aide du forum


Discussions similaires

  1. linux, input clavier/souris
    Par kripteks dans le forum C++
    Réponses: 6
    Dernier message: 03/03/2013, 12h04
  2. [À télécharger] Mise en oeuvre des Hooks clavier / souris
    Par pottiez dans le forum Téléchargez
    Réponses: 0
    Dernier message: 09/11/2010, 17h36
  3. Gestion des fuseaux horaires(time.h et timezone)sous Linux
    Par adesport dans le forum Bibliothèque standard
    Réponses: 3
    Dernier message: 17/07/2008, 11h59
  4. Réponses: 1
    Dernier message: 08/03/2007, 11h03
  5. Enregistrement des evenements CLAVIER/SOURIS
    Par sam.fet dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2006, 12h23

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