Use a Joystick or joypad

Use a Joystick or joypad

joyGetNumDevs, joyGetPosEx

See version :

Pas de dépendances

Download :

#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"winmm.lib")

const char* Bin(DWORD n)
{
    static char buf[33];
    int i;
    for(i=0;i<sizeof(DWORD)*8;i++)
        buf[i] = '0'+((n>>i)&1);
    buf[32] = '\0';
    return buf;
}

void Afficher(unsigned int id,const JOYINFOEX* j)
{
    printf("Joystick : #%d\n",id);
    printf("Axe XY : %6d ; %6d\n",j->dwXpos,j->dwYpos);
    printf("Axe ZR : %6d ; %6d\n",j->dwZpos,j->dwRpos);
    printf("Axe UV : %6d ; %6d\n",j->dwUpos,j->dwVpos);
    printf("Point of view : %.2f    \n",j->dwPOV/100.f);
    printf("Boutons (x %2d) : %s\n",j->dwButtonNumber,Bin(j->dwButtons));
}

int main()
{
    unsigned int maxGamepadId = joyGetNumDevs();
    unsigned int id;
    JOYINFOEX joyInfoEx;
    ZeroMemory(&joyInfoEx, sizeof(joyInfoEx));
    joyInfoEx.dwSize = sizeof(joyInfoEx);
    joyInfoEx.dwFlags = JOY_RETURNALL;
    while(1)
    {
        HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
        COORD C;
        C.X = 0;
        C.Y = 0;
        SetConsoleCursorPosition(H,C);  // pour remettre le curseur en haut
        printf("Joysticks : max = %d\n",maxGamepadId);
        for (id = 0; id < maxGamepadId; ++id) 
        {
            MMRESULT result = joyGetPosEx(id, &joyInfoEx);
            if (result!=JOYERR_NOERROR)
                continue;
            Afficher(id,&joyInfoEx);
        }
        Sleep(10);
    }
    return 0;
}




Explanations

	No explanations yet.