Maus+Key-Befehle für Ubuntu im Screen (Aktuell:05.02.2010)

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
MarkusOhm
Beiträge: 46
Registriert: 16.08.2009 15:06
Computerausstattung: Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid

Maus+Key-Befehle für Ubuntu im Screen (Aktuell:05.02.2010)

Beitrag von MarkusOhm »

Hier mal ein Code der den SDL-Faulen(also jemanden wie mir) weiter helfen soll.

Der Code ist für den MouseX() und MouseY() "Bug" ab PureBasic 4.3+ geschrieben worden
Wichtig gemeint ist der Bug für MouseX() und MouseY() im zusammenhang mit Screen die Rückgabe war immer 0.

Auf Ubuntu "Koala" auch nicht auch hier war im Screen die Rückgabe sowohl bei MousX() als auch bei MouseDeltaX() die Rückgabe immer 0.
auch Locate() hatte keine Wirkung.

Bitte beachtet das dann auch die Tastaturabfrage über SDL erfolgen muss.(linux[Eingebunden])
(für Windows als Gegenstück damit man nicht den ganzen Code umschreiben muss bei zwei Systemen)

Code: Alles auswählen

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Linux
  ;---Linux--
    #Ohm_Key_Escape=#SDLK_ESCAPE
    ;---F_Tasten--
    #Ohm_Key_F1=#SDLK_F1
    #Ohm_Key_F2=#SDLK_F2
    #Ohm_Key_F3=#SDLK_F3
    #Ohm_Key_F4=#SDLK_F4
    #Ohm_Key_F5=#SDLK_F5
    #Ohm_Key_F6=#SDLK_F6
    #Ohm_Key_F7=#SDLK_F7
    #Ohm_Key_F8=#SDLK_F8
    #Ohm_Key_F9=#SDLK_F9
    #Ohm_Key_F10=#SDLK_F10
    #Ohm_Key_F11=#SDLK_F11
    #Ohm_Key_F12=#SDLK_F12
    ;--Nummern--
    #Ohm_Key_1=#SDLK_1
    #Ohm_Key_2=#SDLK_2
    #Ohm_Key_3=#SDLK_3
    #Ohm_Key_4=#SDLK_4
    #Ohm_Key_5=#SDLK_5
    #Ohm_Key_6=#SDLK_6
    #Ohm_Key_7=#SDLK_7
    #Ohm_Key_8=#SDLK_8
    #Ohm_Key_9=#SDLK_9
    #Ohm_Key_0=#SDLK_0
    ;---Alphabet--
    #Ohm_Key_Q=#SDLK_q
    #Ohm_Key_W=#SDLK_w
    #Ohm_Key_E=#SDLK_e
    #Ohm_Key_R=#SDLK_r
    #Ohm_Key_T=#SDLK_t
    #Ohm_Key_Z=#SDLK_z
    #Ohm_Key_U=#SDLK_u
    #Ohm_Key_I=#SDLK_i
    #Ohm_Key_O=#SDLK_o
    #Ohm_Key_P=#SDLK_p
    #Ohm_Key_A=#SDLK_a
    #Ohm_Key_S=#SDLK_s
    #Ohm_Key_D=#SDLK_d
    #Ohm_Key_F=#SDLK_f
    #Ohm_Key_G=#SDLK_g
    #Ohm_Key_H=#SDLK_h
    #Ohm_Key_J=#SDLK_j
    #Ohm_Key_K=#SDLK_k
    #Ohm_Key_L=#SDLK_l
    #Ohm_Key_Y=#SDLK_y
    #Ohm_Key_X=#SDLK_x
    #Ohm_Key_C=#SDLK_c
    #Ohm_Key_V=#SDLK_v
    #Ohm_Key_B=#SDLK_b
    #Ohm_Key_N=#SDLK_n
    #Ohm_Key_M=#SDLK_m
    ;----Richtung-----
    #Ohm_Key_Up=#SDLK_UP
    #Ohm_Key_Down=#SDLK_DOWN
    #Ohm_Key_Left=#SDLK_LEFT
    #Ohm_Key_Right=#SDLK_RIGHT
    #Ohm_Key_Space=#SDLK_SPACE
    #Ohm_Key_LeftControl=#SDLK_LCTRL
    #Ohm_Key_RightControl=#SDLK_RCTRL
    #Ohm_Key_Delete=#SDLK_BACKSPACE
    #Ohm_Key_Enter=#SDLK_RETURN
    #Ohm_Key_Entfernen=#SDLK_DELETE
    #Ohm_Key_Pause=#SDLK_PAUSE
    #Ohm_Key_Komma=#SDLK_COMMA
    #Ohm_Key_Minus=#SDLK_MINUS
    #Ohm_Key_Plus=#SDLK_PLUS
   ;---Numpad-
    #Ohm_NumPad_1=#SDLK_KP1
    #Ohm_NumPad_2=#SDLK_KP2
    #Ohm_NumPad_3=#SDLK_KP3
    #Ohm_NumPad_4=#SDLK_KP4
    #Ohm_NumPad_5=#SDLK_KP5
    #Ohm_NumPad_6=#SDLK_KP6
    #Ohm_NumPad_7=#SDLK_KP7
    #Ohm_NumPad_8=#SDLK_KP8
    #Ohm_NumPad_9=#SDLK_KP9
    #Ohm_NumPad_0=#SDLK_KP0
    #Ohm_NumPad_Enter=#SDLK_KP_ENTER
    #Ohm_NumPad_Komma=#SDLK_KP_EQUALS
    #Ohm_NumPad_Minus=#SDLK_KP_MINUS
    #Ohm_NumPad_Plus=#SDLK_KP_PLUS
    #Ohm_NumPad_Mal=#SDLK_KP_MULTIPLY
    #Ohm_NumPad_Geteilt=#SDLK_KP_DIVIDE
    
  CompilerCase #PB_OS_Windows_XP Or #PB_OS_Windows_7 Or #PB_OS_Windows_Vista
  ;---Windows--
    #Ohm_Key_Escape=#PB_Key_Escape
    ;---F_Tasten--
    #Ohm_Key_F1=#PB_Key_F1
    #Ohm_Key_F2=#PB_Key_F2
    #Ohm_Key_F3=#PB_Key_F3
    #Ohm_Key_F4=#PB_Key_F4
    #Ohm_Key_F5=#PB_Key_F5
    #Ohm_Key_F6=#PB_Key_F6
    #Ohm_Key_F7=#PB_Key_F7
    #Ohm_Key_F8=#PB_Key_F8
    #Ohm_Key_F9=#PB_Key_F9
    #Ohm_Key_F10=#PB_Key_F10
    #Ohm_Key_F11=#PB_Key_F11
    #Ohm_Key_F12=#PB_Key_F12
    ;--Nummern--
    #Ohm_Key_1=#PB_Key_1
    #Ohm_Key_2=#PB_Key_2
    #Ohm_Key_3=#PB_Key_3
    #Ohm_Key_4=#PB_Key_4
    #Ohm_Key_5=#PB_Key_5
    #Ohm_Key_6=#PB_Key_6
    #Ohm_Key_7=#PB_Key_7
    #Ohm_Key_8=#PB_Key_8
    #Ohm_Key_9=#PB_Key_9
    #Ohm_Key_0=#PB_Key_0
    ;---Alphabet--
    #Ohm_Key_Q=#PB_Key_Q
    #Ohm_Key_W=#PB_Key_W
    #Ohm_Key_E=#PB_Key_E
    #Ohm_Key_R=#PB_Key_R
    #Ohm_Key_T=#PB_Key_T
    #Ohm_Key_Z=#PB_Key_Z
    #Ohm_Key_U=#PB_Key_U
    #Ohm_Key_I=#PB_Key_I
    #Ohm_Key_O=#PB_Key_O
    #Ohm_Key_P=#PB_Key_P
    #Ohm_Key_A=#PB_Key_A
    #Ohm_Key_S=#PB_Key_S
    #Ohm_Key_D=#PB_Key_D
    #Ohm_Key_F=#PB_Key_F
    #Ohm_Key_G=#PB_Key_G
    #Ohm_Key_H=#PB_Key_H
    #Ohm_Key_J=#PB_Key_J
    #Ohm_Key_K=#PB_Key_K
    #Ohm_Key_L=#PB_Key_L
    #Ohm_Key_Y=#PB_Key_Y
    #Ohm_Key_X=#PB_Key_X
    #Ohm_Key_C=#PB_Key_C
    #Ohm_Key_V=#PB_Key_V
    #Ohm_Key_B=#PB_Key_B
    #Ohm_Key_N=#PB_Key_N
    #Ohm_Key_M=#PB_Key_M
    ;----Richtung----
    #Ohm_Key_Up=#PB_Key_Up
    #Ohm_Key_Down=#PB_Key_Down
    #Ohm_Key_Left=#PB_Key_Left
    #Ohm_Key_Right=#PB_Key_Right
    #Ohm_Key_Space=#PB_Key_Space
    #Ohm_Key_LeftControl=#PB_Key_LeftControl
    #Ohm_Key_RightControl=#PB_Key_RightControl
    #Ohm_Key_Delete=#PB_Key_Back
    #Ohm_Key_Enter=#PB_Key_Return
    #Ohm_Key_Entfernen=#PB_Key_Delete
    #Ohm_Key_Pause=#PB_Key_Pause
    #Ohm_Key_Komma=#PB_Key_Comma
    #Ohm_Key_Minus=#PB_Key_Minus
    #Ohm_Key_Plus=#PB_Key_Capital
     ;---Numpad-
    #Ohm_NumPad_1=#PB_Key_Pad1
    #Ohm_NumPad_2=#PB_Key_Pad2
    #Ohm_NumPad_3=#PB_Key_Pad3
    #Ohm_NumPad_4=#PB_Key_Pad4
    #Ohm_NumPad_5=#PB_Key_Pad5
    #Ohm_NumPad_6=#PB_Key_Pad6
    #Ohm_NumPad_7=#PB_Key_Pad7
    #Ohm_NumPad_8=#PB_Key_Pad8
    #Ohm_NumPad_9=#PB_Key_Pad9
    #Ohm_NumPad_0=#PB_Key_Pad0
    #Ohm_NumPad_Enter=#PB_Key_PadEnter
    #Ohm_NumPad_Komma=#PB_Key_PadComma
    #Ohm_NumPad_Minus=#PB_Key_Subtract
    #Ohm_NumPad_Plus=#PB_Key_Add
    #Ohm_NumPad_Mal=#PB_Key_Multiply
    #Ohm_NumPad_Geteilt=#PB_Key_Divide
    
CompilerEndSelect

;-------Proceduren-Linux-Windows-----
;----OhmStudios----2009----------------
;---Zur-freien-Benutzung----------------
;-------PureBasic4.40beta5--------------
;-----Screen-ohne-OpenGL--------------


Global ExamiMauKey.b=0
CompilerSelect #PB_Compiler_OS
  ;--fuer_Linux_User-
  CompilerCase #PB_OS_Linux
   Structure ZweiAchsen
      X.l
      Y.l
   EndStructure
   Global Event.SDL_Event
   Global EventMaus.ZweiAchsen
    Procedure.b ScreenInit()
      If SDL_Init_(#SDL_INIT_VIDEO|#SDL_INIT_AUDIO)<0
        ProcedureReturn 0
      Else
        ProcedureReturn 1
      EndIf
    EndProcedure
    Procedure.b Examiniere()
    EndProcedure
    Procedure.l MausBew_X()
      Shared EventMaus
      SDL_PollEvent_(@Event.SDL_Event)
      If Event\motion\type=#SDL_MOUSEMOTION
        EventMaus\X=Event\motion\x
      EndIf
      ProcedureReturn EventMaus\X
    EndProcedure
    Procedure.l MausBew_Y()
      Shared EventMaus
      SDL_PollEvent_(@Event.SDL_Event)
      If Event\motion\type=#SDL_MOUSEMOTION
        EventMaus\Y=Event\motion\y
      EndIf
      ProcedureReturn EventMaus\Y
    EndProcedure
    Procedure.b MausButton(Flag.l)
      SDL_PollEvent_(@Event.SDL_Event)
        If Flag=Event\button\Button And Event\button\type=#SDL_MOUSEBUTTONDOWN
          ProcedureReturn 1
        Else
          ProcedureReturn 0
        EndIf
    EndProcedure
    Procedure.b MausWheel()
        SDL_PollEvent_(@Event.SDL_Event)
      If Event\button\button=#SDL_BUTTON_WHEELDOWN And Event\button\type=#SDL_MOUSEBUTTONDOWN
        ProcedureReturn -1
      ElseIf Event\button\button=#SDL_BUTTON_WHEELUP And Event\button\type=#SDL_MOUSEBUTTONDOWN
        ProcedureReturn 1
      Else
        ProcedureReturn 0
      EndIf
EndProcedure
Procedure.b DruckTaste(Taste.i)
        SDL_PollEvent_(@Event.SDL_Event)
    If Event\key\type=#SDL_KEYDOWN
      If Event\key\keysym\sym=Taste
        ProcedureReturn 1
      Else
        ProcedureReturn -1
      EndIf
     Else
     ProcedureReturn-1
     EndIf
    EndProcedure
    Procedure BeendeMauKey()
      SDL_Quit_()
    EndProcedure
 
  CompilerCase #PB_OS_Windows_XP Or #PB_OS_Windows_7 Or #PB_OS_Windows_Vista
  ;--fuer_windows_Nutzer-

    Procedure.b ScreenInit()
      If InitKeyboard()=0 Or InitMouse()=0
        ProcedureReturn 0
      Else
        ProcedureReturn 1
     EndIf
    EndProcedure
    Procedure.l Examiniere()
      ExamiMauKey.b=4
      ExamineKeyboard()
      ExamineMouse()
    EndProcedure
    Procedure.l MausBew_X()
      If ExamiMauKey.b<>4
        ExamineMouse()
      EndIf
      reture.l=MouseX()
      ProcedureReturn reture.l
    EndProcedure
    Procedure.l MausBew_Y()
      If ExamiMauKey.b<>4
        ExamineMouse()
      EndIf
      reture.l=MouseY()
      ProcedureReturn reture.l
    EndProcedure
    Procedure.b MausButton(Flag.l)
      If ExamiMauKey.b<>4
        ExamineMouse()
      EndIf
      If MouseButton(Flag)=0
        ProcedureReturn 0
      Else
        ProcedureReturn 1
      EndIf
    EndProcedure
    Procedure.b MausWheel()
      If ExamiMauKey.b<>4
        ExamineMouse()
      EndIf
      If MouseWheel()>0
        ProcedureReturn 1
      ElseIf MouseWheel()<0
        ProcedureReturn -1
      Else
        ProcedureReturn 0
      EndIf
    EndProcedure
    Procedure.b DruckTaste(Taste.l)
      If ExamiMauKey.b<>4
        ExamineKeyboard()
      EndIf
      If 0=KeyboardPushed(Taste)
        ProcedureReturn -1
      Else
        ProcedureReturn 1
      EndIf
    EndProcedure
    Procedure BeendeMauKey()
    EndProcedure

CompilerEndSelect
Um Doppelposts zu vermeiden, ändere ich in diesem zusammenhang nur diesen Eintrag, sollte sich der Code mal ändern.

Am 5.2.10 einen Bug behoben...

Hilft der Code weiter?
Zuletzt geändert von MarkusOhm am 05.02.2010 23:54, insgesamt 13-mal geändert.
Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Ähh ja,
kannst du vielleicht ein wenig genauer darauf eingehen, welcher Bug hiermit ausgehebelt werden soll.
Weil so ganz ohne Hintergrundinfo, mpfhh, ja....

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
MarkusOhm
Beiträge: 46
Registriert: 16.08.2009 15:06
Computerausstattung: Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid

Beitrag von MarkusOhm »

Bei mir funzte MouseX() und MouseY() nicht richtig, die Ausgabe war immer Null. Außer bei SDL-Programmierung da geht es.
Habe Ubuntu Hardy und PureBasic 4.31
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Ah ja, danke.

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Bei mir funzte MouseX() und MouseY() nicht richtig, die Ausgabe war immer Null. Außer bei SDL-Programmierung da geht es.
Ist es so zu verstehen, das MouseX() und MouseY() bei dir nicht gingen, wenn du nicht mit einem Screen gearbeitet hast?
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Das wurde von Markus schon mal im Bugforum gepostet.
Also ich gehe davon aus, dass er weiss, dies geht nur mit Screen. Allerdings geht dies aus seinem Posting im Bugforum auch nicht hervor. :?

Das Beispiel ist ja mit Screen.


Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
MarkusOhm
Beiträge: 46
Registriert: 16.08.2009 15:06
Computerausstattung: Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid

Re: Maus+Key-Befehle für Ubuntu im Screen (Aktuell:04.11.2009)

Beitrag von MarkusOhm »

Zum Thema ich habe den Code komplett umgeschrieben nur is noch ein wenig langsam.
A) Hat irgendjemand eine Idee wie ich die Performance-Probleme lösen kann.


Schon im vorfeld danke.
Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid
Benutzeravatar
MarkusOhm
Beiträge: 46
Registriert: 16.08.2009 15:06
Computerausstattung: Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid

Re: Maus+Key-Befehle für Ubuntu im Screen (Aktuell:03.01.2010)

Beitrag von MarkusOhm »

Nun sind hoffendlich alle Fehler beseitigt. Stand:05.02.2010
Wenn noch Fehler, Probleme, oder anderes bei den Include auftreten sollte dann postet es bitte hier.

(Gehört dieses Thema überhaupt noch hierher??? Windows + Linux
Wenn NEIN dann bitte verschieben, Danke.)
Zuletzt geändert von MarkusOhm am 05.02.2010 23:54, insgesamt 1-mal geändert.
Asus EeePc 904HD 900MHz Intel-Graphik-Chip-915GM WindowsXP + UbuntuLucid
Benutzeravatar
Shadow-Gamer
Beiträge: 152
Registriert: 06.09.2009 13:31
Computerausstattung: NB: Intel P8700, Mobility ATI HD4650, 4GB, Win 7

Re:

Beitrag von Shadow-Gamer »

MarkusOhm hat geschrieben:Bei mir funzte MouseX() und MouseY() nicht richtig, die Ausgabe war immer Null. Außer bei SDL-Programmierung da geht es.
Habe Ubuntu Hardy und PureBasic 4.31
MouseX() und MouseY() funzten also nicht, funktionierte denn wenigstens MouseDelta u. Locate?
Ich versuche ja nicht faul zu sein. :)
Antworten