Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/01/2014, à 23:28

Antoinecxxxii

Un programme qui manipule simplement la souris à partir du clavier

Bonjour,

je cherche à avoir un programme rapide qui déplace la souris vers la gauche quand j'appuie sur KP4 et vers la droite avec KP6. C'est basique, je sais . Je voudrais l'utiliser pour jouer à des FPS. Mais je suis un gros noob. Disons que ça fait 10 ans que j'ai pas codé, et qu'à l'époque c'était du caml.
Bref, voilà ce que j'ai réussi à pondre en flânant sur le web:

#include "SDL/SDL.h"

#include <X11/extensions/XTest.h>
#include <X11/keysymdef.h>
#include <X11/Xlib.h>

const int SCREEN_WIDTH = 100;
const int SCREEN_HEIGHT = 1;
const int SCREEN_BPP = 16;

SDL_Surface *screen = NULL;

SDL_Event event;

int main( int argc, char* args[] )
{

    Display* pDisplay = XOpenDisplay( 0 );

    bool quit = false;

    if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_EVENTTHREAD ) == -1 )
    {
        return false;
    }

    screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );

    if( screen == NULL )
    {
        return false;
    }

    while( quit == false )
    {
        while( SDL_PollEvent( &event ) )
        {
            if( event.type == SDL_QUIT )
            {
                quit = true;
            }
        }

        //Obtenir les KeyStates
        Uint8 *keystates = SDL_GetKeyState( NULL );

        if( keystates[ SDLK_KP4 ] )
        {
            XTestFakeRelativeMotionEvent(pDisplay, -1, 0, 0);
            XFlush(pDisplay);
        }

        if( keystates[ SDLK_KP6 ] )
        {
            XTestFakeRelativeMotionEvent(pDisplay, 1, 0, 0);
            XFlush(pDisplay);
        }

//        Mise à jours de l'ecran
        if( SDL_Flip( screen ) == -1 )
        {SDL_Init
            return 1;
        }
    }

    //Netoyage
    SDL_Quit();
    XCloseDisplay(pDisplay);


    return 0;
}

(beaucoup de choses doivent être idiotes, mais je suis grand débutant, je le rappelle)

ça fait ce que je voulais, mais pas quand le focus est sur une autre fenêtre. Je voudrais pouvoir déplacer la souris avec le clavier sur n'importe quelle autre fenêtre. Je crois comprendre que ça se joue au niveau de SDL_Init (il paraît que c'est une histoire de thread, mais j'y connais rien).
Des suggestions?

Et au fait: si j'en suis venu à vouloir programmer moi-même, c'est que rien d'autre ne fonctionnait correctement (gestion des raccourcis, xdotool, xbindkeys, etc...). Y a bien antimicro, mais ça ne gère que les boutons d'un joystick en entrée (et je comprends pas grand chose au code source).

Hors ligne

#2 Le 11/01/2014, à 01:47

Troödon

Re : Un programme qui manipule simplement la souris à partir du clavier

Salut, as tu regardé dans > Paramètres système > Accès universel > Pointage et clic de souris > Touches de la souris.

Hors ligne

#3 Le 11/01/2014, à 01:56

Antoinecxxxii

Re : Un programme qui manipule simplement la souris à partir du clavier

Oui j'ai regardé. ça fait partie des trucs qui ne conviennent pas (pas du tout paramétrable, trop lent, saccadé, et ça occupe aussi les flêches haut et bas, ce que je ne veux pas).

Hors ligne

#4 Le 11/01/2014, à 02:11

Troödon

Re : Un programme qui manipule simplement la souris à partir du clavier

Beh désolé, je peux pas t'aider. sad

Hors ligne

#5 Le 11/01/2014, à 16:34

Antoinecxxxii

Re : Un programme qui manipule simplement la souris à partir du clavier

Up.

Hors ligne

#6 Le 14/01/2014, à 02:41

Antoinecxxxii

Re : Un programme qui manipule simplement la souris à partir du clavier

Up...

Hors ligne