États souris et screen

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: États souris et screen

Message par G-Rom »

Fred l'a intégré comme une API > SDL_Init_()
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Re: États souris et screen

Message par Joubarbe »

Wow, il est fou ce type, il passe des heures à intégrer un truc aussi énorme et n'en fait aucune documentation :)

Je ne connaissais pas du tout SDL avant, d'où ma surprise. Ça paraît intéressant !
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Re: États souris et screen

Message par Joubarbe »

Je digresse un peu, mais faut-il faire quelque chose de particulier pour initialiser SDL, autre que SDL_Init_() ?

Code : Tout sélectionner

InitSprite() : InitKeyboard() : InitMouse()

OpenWindow(0, 0, 0, 800, 600, "")
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)

SDL_Init_(#SDL_INIT_EVERYTHING)
Global sdlEvent.SDL_Event

Repeat
  
  While WindowEvent() : Wend
  
  While SDL_PollEvent_(@sdlEvent)
    Debug "sdl event triggered"
  Wend
  
  ExamineKeyboard()
  
  ClearScreen(0)
  
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)
Ça me paraissait pas trop mal ça...
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: États souris et screen

Message par G-Rom »

Tu mélanges tout, il faut que tu ouvre un écran SDL pas PB.
regarde sur le net ou le forum , c'est pas la doc qui manque , meme PB a un exemple SDL qui dois trainer quelque part.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: États souris et screen

Message par blendman »

@Joubarbe : tu souhaites afficher un curseur uniquement (ou alors, j'ai mal compris ce que tu veux faire précisément) ?
Pourquoi n'utilises-tu pas alors un simple sprite pour afficher le curseur ?
Comme ça, ça serait cross-platform.
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Re: États souris et screen

Message par Joubarbe »

J'ai en effet déjà essayé d'afficher un sprite et de passer par DesktopMouseX/Y() (ou WindowMouseX/Y()). Le problème est que lorsque tu ExamineMouse() sous Linux, le curseur hardware reste au milieu de l'écran. Et il me faut utiliser la bibliothèque Mouse pour avoir l'état "pushed". De plus, le fait d'afficher un sprite annule l'intérêt de la souris hardware, et ajoute cette sensation de latence (décalage entre le mouvement et ce qui est affiché) à la souris.

Malheureusement il ne semble pas avoir d'équivalence de ShowCursor_() sous Linux. Et même si c'était le cas, comme je l'ai dit, la souris, lorsqu'elle est capturée par un "screen", reste bloquée au milieu de l'écran. Et il me faut la bibliothèque Mouse pour avoir l'état "pushed" (Linux n'ayant apparemment pas d'évènement interne pour ça, contrairement à Window et son #WM_LBUTTONDOWN).
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: États souris et screen

Message par G-Rom »

si tu bidouilles un peu en c++ , la sfml utilise ceci comme implémentation
c'est basé sur la lib xcb , remplacant de xlib. https://fr.wikipedia.org/wiki/XCB

Code : Tout sélectionner

void WindowImplX11::setMouseCursorVisible(bool visible)
{
    const uint32_t values = visible ? XCB_NONE : m_hiddenCursor;

    ScopedXcbPtr<xcb_generic_error_t> error(xcb_request_check(
        m_connection,
        xcb_change_window_attributes(
            m_connection,
            m_window,
            XCB_CW_CURSOR,
            &values
        )
    ));

    if (error)
        err() << "Failed to change mouse cursor visibility" << std::endl;

    xcb_flush(m_connection);
}
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: États souris et screen

Message par blendman »

G-Rom a écrit :Sous linux , la souris est completement buggé...
la souris avec initmouse() est buguée sous linux ?
il vaut mieux ne pas l'utiliser ?
Répondre