Seite 1 von 2

Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 10:48
von CptGreenwood
Hi,

ich habe PB mit allen verlangten Paketen unter Ubuntu 9.04 installiert und bekomme die Maus einfach nicht zum Laufen. Ich habe es mir diesem Code versucht:

Code: Alles auswählen

InitKeyboard()
InitMouse()
InitSprite()
OpenScreen(800, 600, 16, "GameLoop")

Repeat
  ClearScreen(RGB(0,0,0))
  ExamineMouse()
  StartDrawing(ScreenOutput())
    Ellipse(MouseX(), MouseY(), 5, 5, RGB(255,0,0))
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
Es wird immer nur auf Position 0,0 etwas gezeichnet (MouseX() = 0 und MouseY() = 0), Mausbewegungen werden völlig ignoriert. :angry:

Für Hilfe währe ich extremst dankbar!

Greetz,
Cpt

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 11:31
von Waldixxl
Hallo CptGreenwood
Ich Habe deinen Code unter PB 4.20, PB 4.31, PB 4.40 beta 5 getestet

unter PB 4.20 kann ich die Maus (roter gefüllter Kreis) über den Bildschirm ohne Probleme bewegen,
der Screen wird nicht im Fenster sondern im Vollbildmodus dargestellt.

unter PB 4.31 und PB 4.40 geht es mir so wie Dir. :oops:
scheint ein Versionsprobleme zu sein. (hoffen auf Beta 6) /:->

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 14:18
von Vermilion
Eine Umgehung des Problemes wäre einfach. Man muss nur direkt über SDL API die Cursorposition ermitteln. Ich weiß nicht aus dem Kopf wie das gerade geht, aber einfach mal in der SDL Dokumentation nachschlagen, oder ich habe hier gerade etwas auf die schnelle herausgesucht.

Durch ein CompilerIf Bedingung lässt sich der Quelltext dann auch wieder vollständig portierbar machen.

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:12
von CptGreenwood
Das wäre doch mal ein Versuch wert...

Aaaber:
:freak: Ich hab noch nie unter Linux PB programmiert, geschweige denn jemals eine API-Funktion aufgerufen.
Kannst du mir kurz auf die Sprünge helfen:
Es gibt da eine Funktion SDL_GetMouseState_(*x, *y), die mit x und y zwei Zeiger übegeben bekommen, die dann mit den Mauskoordinaten betankt werden. Ich habe aber keinen Schimmer, wie man mit den Zeigern umgeht. Ich habe es mal so versucht:

Code: Alles auswählen

Define mx, my
InitKeyboard()
InitMouse()
InitSprite()
OpenScreen(800, 600, 16, "GameLoop")

Repeat
  ClearScreen(RGB(0,0,0))
  SDL_GetMouseState_(*mx, *my)
  StartDrawing(ScreenOutput())
    Ellipse(mx, my, 5, 5, RGB(255,0,0))
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
Compiliert und startet zwar, Maus lässt sich aber trotzdem nicht bewegen. >_<

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:20
von milan1612
CptGreenwood hat geschrieben:

Code: Alles auswählen

Define mx, my
InitKeyboard()
InitMouse()
InitSprite()
OpenScreen(800, 600, 16, "GameLoop")

Repeat
  ClearScreen(RGB(0,0,0))
  SDL_GetMouseState_(*mx, *my)
  StartDrawing(ScreenOutput())
    Ellipse(mx, my, 5, 5, RGB(255,0,0))
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
Compiliert und startet zwar, Maus lässt sich aber trotzdem nicht bewegen. >_<
Probiers doch mal mit SDL_GetMouseState_(@mx, @my)...

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:24
von CptGreenwood
War so findig in der PB-Hilfe, dass ich das @ als Adressoperator gefunden habe. Das Programm lautet nun:

Edit: @milan1612: <) Hab meinen Post geschrieben, bevor ich deinen gelsen hatte...

Code: Alles auswählen

Define mx, my
InitKeyboard()
InitMouse()
InitSprite()
OpenScreen(800, 600, 16, "GameLoop")

Repeat
  ClearScreen(RGB(0,0,0))
  SDL_GetMouseState_(@mx, @my)
  StartDrawing(ScreenOutput())
    Ellipse(mx, my, 5, 5, RGB(255,0,0))
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
Der Unterschied: Der Punkt wird nun nicht mehr auf 0/0 gezeichnet, sondern in der Mitte des Screens, bewegen lässt er sich aber immer nocht nicht. :angry:

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:32
von DarkDragon
Probier mal ReleaseMouse(0 oder 1) nach dem OpenScreen aus ob das was ändert.

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:40
von Waldixxl
Bin neugierig wie es weiter geht ....

habe im Forum etwas gefunden was hier vielleicht weiter helfen kann

Walter

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:44
von CptGreenwood
@DarkDragon: ReleaseMouse funzt leider weder mit 0 noch mit 1 :cry:

Re: Probleme mit der Maus unter Linux

Verfasst: 13.10.2009 16:53
von CptGreenwood
@Waldixxl:

Seufz, auch keinerlei Mausbewegung!

Code: Alles auswählen

Macro Init_SDL_Maus()
  SDL_Init_(#SDL_INIT_VIDEO)
EndMacro

Macro Examine_Sdl_Maus()
  SDL_PollEvent_(@Event.SDL_Event)
EndMacro

Macro MausdlX()
   Event\motion\x
EndMacro

Macro MausdlY()
  Event\motion\y
EndMacro

InitKeyboard()
InitSprite()
init_sdl_Maus()
OpenScreen(800, 600, 16, "GameLoop")

Repeat
  ClearScreen(RGB(0,0,0))
  Examine_Sdl_Maus()
  StartDrawing(ScreenOutput())
    Ellipse(MausdlX(), MausdlY(), 5, 5, RGB(255,0,0))
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End