[LINUX] Tasten abfragen ??

Anfängerfragen zum Programmieren mit PureBasic.
Dristar
Beiträge: 72
Registriert: 13.09.2004 12:46

[LINUX] Tasten abfragen ??

Beitrag von Dristar »

Hallo !!

mal wieder keine arnung :? Ich möchte ganz gerne Windows Fenster
nur mit Tastatur steuern (unter Linux)

wie mache ich das am besten ?

mfg Dristar
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

PureBasic-Hilfe (=André) hat geschrieben: AddKeyboardShortcut()

Syntax

AddKeyboardShortcut(#Window, Shortcut, EventID)

Beschreibung

Fügt einen Tastatur-Shortcut ("Tastenkürzel") zum angegebenen Fenster '#Window' hinzu. Ein Shortcut generiert ein Menü-Ereignis (wie ein Menü-Eintrag), da sie meistens im Zusammenhang mit Menüs benutzt werden. Der 'EventID' ist der Wert, welcher vom EventMenuID() Befehl zurückgegeben wird. Standardmäßig hat ein Fenster bereits die #PB_Shorcut_Tab und #PB_Shortcut_Tab|#PB_Shortcut_Shift Shortcuts, um die Tabulator und Shift-Tabulator Tasten(kombinationen) korrekt zu handhaben. Ein Shortcut kann mittels RemoveKeyboardShortcut() entfernt werden.

Der 'Shortcut' Parameter kann eine der folgenden Konstanten sein:

#PB_Shortcut_Back
#PB_Shortcut_Tab
#PB_Shortcut_Clear
#PB_Shortcut_Return
#PB_Shortcut_Menu
#PB_Shortcut_Pause
#PB_Shortcut_Print
#PB_Shortcut_Capital
#PB_Shortcut_Escape
#PB_Shortcut_Space
#PB_Shortcut_Prior
#PB_Shortcut_Next
#PB_Shortcut_End
#PB_Shortcut_Home
#PB_Shortcut_Left
#PB_Shortcut_Up
#PB_Shortcut_Right
#PB_Shortcut_Down
#PB_Shortcut_Select
#PB_Shortcut_Execute
#PB_Shortcut_Snapshot
#PB_Shortcut_Insert
#PB_Shortcut_Delete
#PB_Shortcut_Help
#PB_Shortcut_0
#PB_Shortcut_1
#PB_Shortcut_2
#PB_Shortcut_3
#PB_Shortcut_4
#PB_Shortcut_5
#PB_Shortcut_6
#PB_Shortcut_7
#PB_Shortcut_8
#PB_Shortcut_9
#PB_Shortcut_A
#PB_Shortcut_B
#PB_Shortcut_C
#PB_Shortcut_D
#PB_Shortcut_E
#PB_Shortcut_F
#PB_Shortcut_G
#PB_Shortcut_H
#PB_Shortcut_I
#PB_Shortcut_J
#PB_Shortcut_K
#PB_Shortcut_L
#PB_Shortcut_M
#PB_Shortcut_N
#PB_Shortcut_O
#PB_Shortcut_P
#PB_Shortcut_Q
#PB_Shortcut_R
#PB_Shortcut_S
#PB_Shortcut_T
#PB_Shortcut_U
#PB_Shortcut_V
#PB_Shortcut_W
#PB_Shortcut_X
#PB_Shortcut_Y
#PB_Shortcut_Z
#PB_Shortcut_LeftWindows
#PB_Shortcut_RightWindows
#PB_Shortcut_Apps
#PB_Shortcut_Pad0
#PB_Shortcut_Pad1
#PB_Shortcut_Pad2
#PB_Shortcut_Pad3
#PB_Shortcut_Pad4
#PB_Shortcut_Pad5
#PB_Shortcut_Pad6
#PB_Shortcut_Pad7
#PB_Shortcut_Pad8
#PB_Shortcut_Pad9
#PB_Shortcut_Multiply
#PB_Shortcut_Add
#PB_Shortcut_Separator
#PB_Shortcut_Subtract
#PB_Shortcut_Decimal
#PB_Shortcut_Divide
#PB_Shortcut_F1
#PB_Shortcut_F2
#PB_Shortcut_F3
#PB_Shortcut_F4
#PB_Shortcut_F5
#PB_Shortcut_F6
#PB_Shortcut_F7
#PB_Shortcut_F8
#PB_Shortcut_F9
#PB_Shortcut_F10
#PB_Shortcut_F11
#PB_Shortcut_F12
#PB_Shortcut_F13
#PB_Shortcut_F14
#PB_Shortcut_F15
#PB_Shortcut_F16
#PB_Shortcut_F17
#PB_Shortcut_F18
#PB_Shortcut_F19
#PB_Shortcut_F20
#PB_Shortcut_F21
#PB_Shortcut_F22
#PB_Shortcut_F23
#PB_Shortcut_F24
#PB_Shortcut_Numlock
#PB_Shortcut_Scroll

Die oben angegebene Taste kann mit jeder der folgenden Konstanten kombiniert werden:

#PB_Shortcut_Shift
#PB_Shortcut_Control
#PB_Shortcut_Alt

Beispiel:

AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_ShortCut_F, 15) ; Erstellt ein Tastaturkürzel 'CTRL+F' (STRG-F) für das Fenster 0,
; welches nach Tastendruck ein Menüereignis '15' liefert

Unterstützte OS

Windows, AmigaOS, Linux
Das sollte dir helfen, oder?

cya
Pascal
Dristar
Beiträge: 72
Registriert: 13.09.2004 12:46

Beitrag von Dristar »

hm :?

das müste es sein ! aber es geht scheinbar nur bei Tasten kombination

mein Test code geht nicht :

Code: Alles auswählen

Procedure Open_Window_1()
OpenWindow(1,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Fenster 2")
EndProcedure
Procedure Open_Window_0()
OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"KBD Shortcut")
EndProcedure

AddKeyboardShortcut(0,#PB_Shortcut_0,100)
AddKeyboardShortcut(0,#PB_Shortcut_1,101)


Open_Window_0()

Repeat

        Select WaitWindowEvent()
          Case #PB_Event_CloseWindow
             end
          Case #PB_Event_Menu
          Select EventMenuID()

           Case 101

             MessageRequester("INFO","neues Fenster")

             Open_Window_1()

           Case 100           
              End      

        EndSelect 

     EndSelect

ForEver

mfg Dristar
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Im window

Beitrag von Green Snake »

hallo

du musst den addshortcut im window aktualisieren
d.h noch dem openwindow befehl
so etwa:

Code: Alles auswählen

Procedure Open_Window_1() 
  OpenWindow(1,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Fenster 2") 
EndProcedure 
Procedure Open_Window_0() 
  OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"KBD Shortcut") 
EndProcedure 




Open_Window_0() 
AddKeyboardShortcut(0,#PB_Shortcut_0,100) 
AddKeyboardShortcut(0,#PB_Shortcut_1,101) 
Repeat 
  
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow 
      End 
    Case #PB_Event_Menu 
      Select EventMenuID() 
        
        Case 101 
          
          MessageRequester("INFO","neues Fenster") 
          
          Open_Window_1() 
          
        Case 100            
          End      
          
      EndSelect 
      
  EndSelect 
  
ForEver 

-.-"
Dristar
Beiträge: 72
Registriert: 13.09.2004 12:46

Beitrag von Dristar »

@Green Snake

/:-> Danke !!

mfg Dristar
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

?

Beitrag von Green Snake »

hallo

was soll dieser /:-> smilie?
hats geklappt oder nicht?
-.-"
Dristar
Beiträge: 72
Registriert: 13.09.2004 12:46

Beitrag von Dristar »

@Green Snake

ja es hat geklappt :allright: ....ich habe mir nur selber gedacht : " doffer fehler /:-> "

So wolte ich es machen : Das erste Fenster soll das Menue anzeigen dann drückt mann so lange weiter bis mann den Programmteil erreicht den mann haben will
(so wie unter dos , bloss mit Windows Fenstern).Beim zweiten Fenster geht das mit den Tasten schon nicht mehr.Meine Frage muss ich jetzt erst mit Remove Shortcut die sachen wieder entfernen ?
oder vieleicht gibt es eine andere Lösung wie ich das machen kann ?
z.B: ein Windows Fenster in dem sich alles abspielt ! hm , nur wie kann sowas aussehen ?

mfg Dristar
Antworten