cmd+q bzw. Tastenkombinationen abfragen

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

cmd+q bzw. Tastenkombinationen abfragen

Beitrag von gekkonier »

Wenn ich bei folgendem Progrämmchen die esc Taste auf dem Mac drücke, dann schliesst sich das Programm, wie erwartet.
Kann mir bitte jemand sagen, wie ich das machen kann, dass auf cmd+q reagiert wird um das selbe zu erreichen? Ich habe im deutschen Forum und der Hilfe leider nicht viel darüber gefunden.
Vielen Dank für eure Hilfe!

Code: Alles auswählen

InitSprite()
InitKeyboard()


OpenWindow(0,0,0,600,800,"Colored",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,600,800)

Repeat
  
  Repeat
    event = WindowEvent()
    Select event
      Case #PB_Event_CloseWindow
        quit = 1
    EndSelect
  Until event = 0
  
  
  ExamineKeyboard()
  
  If KeyboardPushed(#PB_Key_Escape)
    quit = 1
  EndIf
  
  
  ClearScreen(RGB(0,255,0))
  FlipBuffers()
  
Until quit
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: cmd+q bzw. Tastenkombinationen abfragen

Beitrag von gekkonier »

Ich bin etwas ratlos…


Test1:
Hier kann ich mit cmd+q das Programm beenden:

Code: Alles auswählen

OpenWindow(0,0,0,600,800,"test")
Debug "test"
Repeat
  Repeat
    event = WindowEvent()
    Select event
      Case #PB_Event_CloseWindow
        quit = 1
      Case #PB_Event_Menu
        Select EventMenu()
          Case -1
            quit = 1
        EndSelect
    EndSelect
  Until event = 0
Until quit
Test2:
Hier auch!

Code: Alles auswählen

InitSprite()

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

Repeat
  
  Repeat
    event = WindowEvent()
    Select event
      Case #PB_Event_CloseWindow
        quit = 1
      Case #PB_Event_Menu
        Select EventMenu()
          Case -1
            quit = 1
        EndSelect
    EndSelect
  Until event = 0

  ClearScreen(RGB(0,255,0))
  FlipBuffers()
  
Until quit

Aber sobald ich was mit der Keyboard Bibliothek mache verweigert er cmd+q, was ich aber dennoch möchte… Kann mir niemand helfen?

Test3:
Das Programm kann nicht mit cmd+q beendet werden. Warum?

Code: Alles auswählen

InitKeyboard()
InitSprite()

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

Repeat
  
  Repeat
    event = WindowEvent()
    Select event
      Case #PB_Event_CloseWindow
        quit = 1
      Case #PB_Event_Menu
        Select EventMenu()
          Case -1
            quit = 1
        EndSelect
    EndSelect
  Until event = 0
  
  
  ExamineKeyboard()
  
  If KeyboardPushed(#PB_Key_Escape)
    quit = 1
  EndIf
  

  ClearScreen(RGB(0,255,0))
  FlipBuffers()
  
Until quit
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: cmd+q bzw. Tastenkombinationen abfragen

Beitrag von gekkonier »

Ich habe die Frage jetzt auch im englischen Forum gepostet, vielleicht weiss dort jemand etwas darüber:
http://www.purebasic.fr/english/viewtop ... 19&t=55866
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: cmd+q bzw. Tastenkombinationen abfragen

Beitrag von gekkonier »

Shardik hat mir eine Lösung für mein Problem im englischen Forum gepostet, die funktioniert. Es scheint sich um einen Bug zu handeln.

Code: Alles auswählen

EnableExplicit

#NSCommandKeyMask = 1 << 20
#NSKeyDown        = 10

Define CurrentEvent.I
Define event.I
Define quit.I
Define SharedApplication.I

SharedApplication = CocoaMessage(0, 0, "NSApplication sharedApplication")

InitKeyboard()
InitSprite()

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

Repeat
 
  Repeat
    event = WindowEvent()
    Select event
      Case #PB_Event_CloseWindow
        quit = 1
      Case #PB_Event_Menu
        Select EventMenu()
          Case -1
            quit = 1
        EndSelect
    EndSelect
  Until event = 0

  CurrentEvent = CocoaMessage(0, SharedApplication, "currentEvent")

  If CurrentEvent
    If CocoaMessage(0, CurrentEvent, "type") = #NSKeyDown
      If CocoaMessage(0, CurrentEvent, "keyCode") = 12
        If CocoaMessage(0, CurrentEvent, "modifierFlags") & #NSCommandKeyMask
          quit = 1
        EndIf
      EndIf
    EndIf
  EndIf
 
  ExamineKeyboard()

  If KeyboardPushed(#PB_Key_Escape)
    quit = 1
  EndIf
 
  ClearScreen(RGB(0,255,0))
  FlipBuffers()
 
Until quit
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: cmd+q bzw. Tastenkombinationen abfragen

Beitrag von gekkonier »

Da dies ein Bug zu sein scheint hab ich jetzt einen Thread im englischen Bugforum aufgemacht:

http://www.purebasic.fr/english/viewtop ... 24&t=56016
Antworten