Bienvenue sur Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
Recherche
18 visiteur(s) et 0 membre(s) en ligne.
 
 
    Annonces Google

    Petites Annonces

il y a annonces
    IRC

Serveur : irc.portlane.se
Canal : #AmigaNG
    Liens

Toutes les informations sur :
  • Amiga OS 4:
    AmigaOS.net
  • Logiciels pour OS4 :
    OS4depot
  • Matériel Amiga :
    ACube Systems
  • Magazine papier :
    AmigaPower
  • Magazine en ligne :
    Obligement
  •     Activité du Site

    Pages vues depuis 25/07/2007 : 105 910
    • Nb. de Membres : 183
    • Nb. d'articles : 1 158
    • Nb. de Forums : 18
    • Nb. de Sujets : 17
    • Nb. de Critiques : 24

    Top 10  Statistiques

      
    Modéré par : K-L Creols Elwood 
    Index du Forum > > Création-Développement > > Comment servir des device Keyboard et input ??
    2 pages [ 1 | 2 ]
    AuteurComment servir des device Keyboard et input ??
    Sharynn
    181     

    Sharynn
      Posté : 01-11-2019 09:05

    Salut,

    Je n'arrive pas à utiliser les devices Keyboard et Input amiga.

    Elles semblent s'ouvrir normalement mais rien n'en sort !!!

    Je souhaiterai teste la fonction PeekQualifier de la input.device.
    Quelqu'un a déjà fait cela ?
    As-ton un bout de code en C pour m'aider?. Autre que les Wiki qui semble bon mais qui ne fonctionne pas.



    Projet AmOS4 - Retour vers l'Amos sous OS4...

    SAM440EP - A1200 3.1 de base

      Afficher le profil de SharynnProfil  Ouvrir le site web de Sharynnwww  Imprimer ce commentaireImprimer
    YesCop
    366      

    YesCop
      Posté : 01-11-2019 10:26

    Bonjour,

    Dans le wiki https://wiki.amigaos.net/wiki/Input_Device
    Tu as ce que tu recherches
    chapître Determining the Current Qualifiers


    Sam Flex 800 Mhz Amiga OS4.1 FE

      Afficher le profil de YesCopProfil  Imprimer ce commentaireImprimer
    Sharynn
    181     

    Sharynn
      Posté : 01-11-2019 11:00

    Merci pour ta réponse YesCop, mais hélas cela ne fonctionne pas.

    Je ne comprends pas d'où cela peut venir.
    Ce Wiki est mon point de base mais rien Input.device Ou Keyboard.device ne fonctionnent.


    Projet AmOS4 - Retour vers l'Amos sous OS4...

    SAM440EP - A1200 3.1 de base

      Afficher le profil de SharynnProfil  Ouvrir le site web de Sharynnwww  Imprimer ce commentaireImprimer
    thellier
    892      

    thellier
      Posté : 01-11-2019 18:59

    Hello

    Tu devrais regarder dans les sources de SDL ou SDL2 genre une recherche texte des fichiers contenant une des fonctions que tu veut utiliser 




    Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
    Message édité par : thellier / 01-11-2019 19:01

      Afficher le profil de thellierProfil  Imprimer ce commentaireImprimer
    Sharynn
    181     

    Sharynn
      Posté : 01-11-2019 19:25

    Salut Alain,

    Tu es au TOP, je vais regarder cela...

    Je n'y avait pas pensé..


    Projet AmOS4 - Retour vers l'Amos sous OS4...

    SAM440EP - A1200 3.1 de base

      Afficher le profil de SharynnProfil  Ouvrir le site web de Sharynnwww  Imprimer ce commentaireImprimer
    Sharynn
    181     

    Sharynn
      Posté : 01-11-2019 20:17

    Non a part des appels à des variables ou des commandes s'appelant SDL_xxx, je ne trouve rien.

    J'ai regardé tous les fichiers que j'ai trouvé, mais il n'y a aucun appel sur des commandes systèmes.
    Tout semble caché derrière de valeur avec les nom SDL_xxx

    Je ne dois pas avoir de bonne sources.


    Projet AmOS4 - Retour vers l'Amos sous OS4...

    SAM440EP - A1200 3.1 de base

      Afficher le profil de SharynnProfil  Ouvrir le site web de Sharynnwww  Imprimer ce commentaireImprimer
    thellier
    892      

    thellier
      Posté : 02-11-2019 05:49

    c'est très étonnant tu dois pas avoir toutes les sources de SDL
    Sinon dans les sources de E-UAE ou tout autre émulateur utilisant le clavier


    Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

      Afficher le profil de thellierProfil  Imprimer ce commentaireImprimer
    YesCop
    366      

    YesCop
      Posté : 02-11-2019 11:07

    Tu m'étonnes.
    J'ai compilé un des programmes fournis sans modification, il fonctionne bien.
    Le programme retourne le code de la touche en ascii ou raw, le code du qualifier.
    Si tu ne trouves pas, je peux t'envoyer le code dimanche.


    Sam Flex 800 Mhz Amiga OS4.1 FE

      Afficher le profil de YesCopProfil  Imprimer ce commentaireImprimer
    Sharynn
    181     

    Sharynn
      Posté : 02-11-2019 13:48

    @YesCop:
    salut,

    Si tu as une source qui tourne alors envoi moi là.

    Si elle ne fonctionne pas ici, c'est que j'ai un soucis avec mon système.

    @Alain:
    Je vais continuer de voir dans des sources diverses aussi.


    Merci les gars




    Projet AmOS4 - Retour vers l'Amos sous OS4...

    SAM440EP - A1200 3.1 de base

      Afficher le profil de SharynnProfil  Ouvrir le site web de Sharynnwww  Imprimer ce commentaireImprimer
    YesCop
    366      

    YesCop
      Posté : 04-11-2019 10:51

    Voici le code



    Sam Flex 800 Mhz Amiga OS4.1 FE
    IDCMP-Key-Mou.txt
    /*
    ** eventloop.c - standard technique to handle IntuiMessages from an IDCMP.
    */
    #include <exec/types.h>
    #include <intuition/intuition.h>
    #include <proto/dos.h>
    #include <proto/exec.h>
    #include <proto/intuition.h>
    /* our function prototypes */
    BOOL handleIDCMP(struct Window *win, BOOL done);
    struct Library *IntuitionBase = NULL;
    struct IntuitionIFace *IIntuition = NULL;
    /*
    ** main routine.
    ** Open required library and window, then process the events from the
    ** window. Free all resources when done.
    */
    int main(int argc, char **argv)
    {
    BOOL done;
    struct Window *win;
    IntuitionBase = IExec->OpenLibrary("intuition.library", 50);
    IIntuition = (struct IntuitionIFace *)IExec->GetInterface(IntuitionBase, 
    "main", 1, NULL); 
    if (IIntuition != NULL)
        {
        if (win = IIntuition->OpenWindowTags(NULL,
                             WA_Title,       "Press Keys and Mouse in this 
    Window", 
                             WA_Width,       500,
                             WA_Height,      50,
                             WA_Activate,    TRUE,
                             WA_CloseGadget, TRUE,
                             WA_RMBTrap,     TRUE,
                             WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY |
                                 IDCMP_RAWKEY | IDCMP_DISKINSERTED |
                                 IDCMP_DISKREMOVED | IDCMP_MOUSEBUTTONS,
                             TAG_END))
             {
            done = FALSE;
             /* perform this loop until the message handling routine signals
            ** that we are done.
             **
            ** When the Wait() returns, check which signal hit and process
            ** the correct port. There is only one port here, so the test
            ** could be eliminated. If multiple ports were being watched,
            ** the test would become:
             **
            **     signals = Wait( (1L << win1->UserPort->mp_SigBit) |
            **                     (1L << win2->UserPort->mp_SigBit) |
            **                     (1L << win3->UserPort->mp_SigBit))
            **     if (signals & (1L << win1->UserPort->mp_SigBit))
            **         done = handleWin1IDCMP(win1,done);
            **     else if (signals & (1L << 
    win2->UserPort->mp_SigBit)) 
            **         done = handleWin2IDCMP(win2,done);
            **     else if (signals & (1L << 
    win3->UserPort->mp_SigBit)) 
            **         done = handleWin3IDCMP(win3,done);
             **
            ** Note that these could all call the same routine with different
            ** window pointers (if the handling was identical).
             **
            ** handleIDCMP() should remove all of the messages from the port.
             */
             while (!done)
                 {
                 uint32 signals = IExec->Wait(1L << 
    win->UserPort->mp_SigBit); 
                 if (signals & (1L << win->UserPort->mp_SigBit))
                     done = handleIDCMP(win,done);
                 };
            IIntuition->CloseWindow(win);
             }
        }
    IExec->DropInterface((struct Interface*)IIntuition);
    IExec->CloseLibrary(IntuitionBase);
    return 0;
    }
    /*
    ** handleIDCMP() - handle all of the messages from an IDCMP.
    */
    BOOL handleIDCMP(struct Window *win, BOOL done)
    {
    struct IntuiMessage *message;
    uint16 code;
    int16 mousex, mousey;
    uint32 class;
    /* Remove all of the messages from the port by calling GetMsg()
    ** until it returns NULL.
    **
    ** The code should be able to handle three cases:
    **
    ** 1. No messages waiting at the port, and the first call to GetMsg()
    ** returns NULL. In this case the code should do nothing.
    **
    ** 2. A single message waiting. The code should remove the message,
    ** processes it, and finish.
    **
    ** 3. Multiple messages waiting. The code should process each waiting
    ** message, and finish.
    */
    while (NULL != (message = (struct IntuiMessage 
    *)IExec->GetMsg(win->UserPort))) 
        {
        /* It is often convenient to copy the data out of the message.
        ** In many cases, this lets the application reply to the message
        ** quickly. Copying the data is not required, if the code does
        ** not reply to the message until the end of the loop, then
        ** it may directly reference the message information anywhere
        ** before the reply.
        */
        class = message->Class;
        code    = message->Code;
        mousex = message->MouseX;
        mousey = message->MouseY;
        /* The loop should reply as soon as possible. Note that the code
        ** may not reference data in the message after replying to the
        ** message. Thus, the application should not reply to the message
        ** until it is done referencing information in it.
        **
        ** Be sure to reply to every message received with GetMsg().
        */
        IExec->ReplyMsg((struct Message *)message);
        /* The class contains the IDCMP type of the message. */
        switch (class)
            {
            case IDCMP_CLOSEWINDOW:
                done = TRUE;
                break;
            case IDCMP_VANILLAKEY:
                IDOS->Printf("IDCMP_VANILLAKEY (%lc %ld)\\n",code, 
    code); 
                break;
            case IDCMP_RAWKEY:
                IDOS->Printf("IDCMP_RAWKEY (%ld)\\n",code);
                break;
            case IDCMP_DISKINSERTED:
                IDOS->Printf("IDCMP_DISKINSERTED\\n");
                break;
            case IDCMP_DISKREMOVED:
                IDOS->Printf("IDCMP_DISKREMOVED\\n");
                break;
            case IDCMP_MOUSEBUTTONS:
                /* the code often contains useful data, such as the ASCII
                ** value (for IDCMP_VANILLAKEY), or the type of button
                ** event here.
                */
                switch (code)
                     {
                     case SELECTUP:
                         IDOS->Printf("SELECTUP 
    at%d,%d\\n",mousex,mousey); 
                         break;
                     case SELECTDOWN:
                         IDOS->Printf("SELECTDOWN 
    at%d,%d\\n",mousex,mousey); 
                         break;
                     case MENUUP:
                         IDOS->Printf("MENUUP\\n");
                         break;
                     case MENUDOWN:
                         IDOS->Printf("MENUDOWN\\n");
                         break;
                     default:
                         IDOS->Printf("UNKNOWN CODE\\n");
                         break;
                     }
            default:
                IDOS->Printf("Unknown IDCMP message\\n");
                break;
            }
        }
    return(done);
    }
    
    

      Afficher le profil de YesCopProfil  Imprimer ce commentaireImprimer
    Aller à la page : [ 1 | 2 ]
    Sauter à :


    Tous les Logos et Marques sont déposés, les commentaires sont sous la responsabilité de ceux qui les ont publiés. AmigaOS 4.x est (c) Hyperion Entertainment

    Conception graphique du thème : PowerMetal, codage : Alexandre Balaban
    Certaines images sont © Martin \"Mason\" Mertz

    Temps : 1574042442.7474 seconde(s)