Meilleure façon de lire joystick/souris

4 sujets de 1 à 4 (sur un total de 4)

  • thellier

      #10128

      Hello

      J’ai envie de faire un tout petit jeu…

      Et je voudrais connaitre la méthode la plus simple/compatible de lire la souris ou le joystick

      Compatible aussi Os3/os4 voire Morphos

      Et surtout si l’ utilisateur decide d’utiliser un joystick/pad exotique qu’il puisse le faire

      J’ai juste besoin de lire les directions et 1 ou 2 boutons….

      MERCI

      Alain

      krabob

        #154884

        gurumed.net est ton ami.

        http://www.gurumed.net/index.php/Les_devices

        (edit: Arrggg… la section du gameport.device à pas été créée, donc pour le joystick je vois pas !De plus ça doit pas être dispo sur les vieux classique. A part le hack hardware à la dmeomaker (adresse hard des joystick) je sais donc pas faire)

        … a noter que pour la souris et le clavier, pas besoin de trifougner les device: tu as constament les coords souris dans la struct screen dans MouseX MouseY. Mais c’est peut etre pas propre de lire ça directement.

        Pour recevoir des events clavier/souris intuition, Il faut qu’une fenêtre qui puisse avoir le focus les reçoivent: il suffit par exemple, d’ouvrir une fenêtre invisible attaché à tout un écran (ouvert précédemment), et de mettre ce genre de flags: (copier collé d’un code peut etre pas validé, mais bon:)

        struct Window *pwindow = OpenWindowTags(NULL,

        WA_CustomScreen,(unsigned int)pscreen,

        WA_Backdrop,TRUE,

        WA_Borderless,TRUE,

        WA_Activate,TRUE,

        WA_RMBTrap,TRUE, // Right Mouse Button

        WA_ReportMouse,0,

        WA_SizeGadget,0,

        WA_DepthGadget,0,

        WA_CloseGadget,0,

        WA_DragBar,0,

        WA_IDCMP,IDCMP_MOUSEBUTTONS | IDCMP_RAWKEY , // demande à écouter ces events.

        0 );

        … et dans une boucle pour savoir ce qui arrive sur le msgport de la windows ça peut donner:

        struct IntuiMessage *iMsg;

        struct MsgPort *pport = pwindow->UserPort ;

        if( iMsg = (struct IntuiMessage *) GetMsg( pport ) )

        {

        UWORD ICode = iMsg->Code;

        ULONG IClass = iMsg->Class;

        ReplyMsg((struct Message *)iMsg);

        // quit if mouse bt:

        if ( IClass == IDCMP_MOUSEBUTTONS && ICode == 0x0068 ) return(0);

        if ( IClass == IDCMP_RAWKEY )

        {

        //printf(“iclass:%08xn”, ICode );

        if ( ICode == 0x0045 ) return(0); // esc key.

        // ‘f’ or ‘space’ switch window mode:

        //re if( ICode == 0x0023 || ICode == 0x0040 ) SwitchFullDemoScreen( );

        }

        // window mode: close gadget exit case:

        if ( IClass == IDCMP_CLOSEWINDOW ) closeAppAndExit();

        }

        … c’est un peu pourri comme code: les valeurs que j’écris en hexa pour les touches et les boutons existent dans des .h de /intuition

        krabob

          #154885

          OK, donc : pour le joystick , lire d’abord l’article général sur les device de gurumed, puis appliquer ça:

          http://gega.homelinux.net/AmigaDevDocs/dev_5.html

          henes

            #154886

            Poseidon patche uniquement la lowlevel.library et pas le gameport.device.

            Ce dernier ne gère donc pas les pad USB sur 3.x.

            En info bonus, le gameport.device est considéré comme un pure pilote hardware par MorphOS et n’existe du coup que dans la version PowerUP.

            Je dirais qu’il faut donc toujours passer par la lowlevel.

            Elle possède par contre deux APIs. Le ReadJoyPort() nul qui faut poller régulièrement et une API événementielle.

            Malheureusement, celle-ci ne va encore une fois pas fonctionner avec Poseidon sur 3.x (ça marche avec MorphOS).

            Donc je dirais que pour être universel, il faut utiliser lowlevel.library/ReadJoyPort() partout…

            Pour la souris par contre, suivre Krabob et plutôt utiliser Intuition (et à la limite un input-handler, suivant ce qu’on veut faire).

          4 sujets de 1 à 4 (sur un total de 4)

          • Vous devez être connecté pour répondre à ce sujet.

          Forums AmigaOS, MorphOS et AROS Développement Meilleure façon de lire joystick/souris

          Amiga Impact