Tastatur abfragen (ohne DirectX)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Tastatur abfragen (ohne DirectX)

Beitrag von ZeHa »

Hallo!

Wollte mal fragen, mit welchen Events ich die Tastatur abfragen kann, wenn ich gerade kein DirectX benutze, also z.B. eine ganz normale Fenster-Anwendung schreib.

Oder muß ich da ebenfalls InitKeyboard() etc benutzen?
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

GetAsyncKeyState_()

Oder du verarbeiteste die Windows Messages und filterst die
Events #WM_KEYDOWN und #WM_KEYUP raus.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Mist, du warst schneller.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Sprich, es geht nur direkt über die API, es gibt kein #PB_Event_Keyboard oder sowas?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

ZeHa hat geschrieben:Sprich, es geht nur direkt über die API, es gibt kein #PB_Event_Keyboard oder sowas?
Entweder über die API oder Keyboard shortcuts(Siehe Hilfe-Window->AddKeyboardShortcut(#Window, Shortcut, EventID))
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

Code: Alles auswählen

;pb 3.93

OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Test")

Repeat
  ereignis.l = WaitWindowEvent()
  
  If ereignis.l = #wm_keydown
    If EventlParam() & %01000000000000000000000000000000
      Debug Str(EventwParam()) + " ..."
    Else
      Debug Str(EventwParam()) + " *drück*"
    EndIf
    
  ElseIf ereignis.l = #wm_keyup
    Debug Str(EventwParam()) + " *loslass*"
  EndIf

Until ereignis.l = #PB_Event_CloseWindow
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Hey das ist cool! Jetzt muß ich nur noch wissen, wie ich rausfinden kann, WELCHE Taste gedrückt wurde ;)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

ZeHa hat geschrieben:Hey das ist cool! Jetzt muß ich nur noch wissen, wie ich rausfinden kann, WELCHE Taste gedrückt wurde ;)
Dazu gibts die VK_ Konstanten(Siehe API-Viewer)

Beispiel:

Code: Alles auswählen

;pb 3.93

OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Test")

Repeat
  ereignis.l = WaitWindowEvent()
 
  If ereignis.l = #wm_keydown
    If EventwParam() = #VK_A
      Debug Str(EventwParam()) + "A wurde gedrückt"
    EndIf
  EndIf

Until ereignis.l = #PB_Event_CloseWindow 
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Vielleicht so:

Code: Alles auswählen

Structure keys
  Wert.l
  Name.s
EndStructure
NewList Keys.keys()
AddElement(Keys())
Keys()\Wert = #VK_BACK
Keys()\Name = "VK_BACK"
AddElement(Keys())
Keys()\Wert = #VK_TAB
Keys()\Name = "VK_TAB"
AddElement(Keys())
Keys()\Wert = #VK_CLEAR
Keys()\Name = "VK_CLEAR"
AddElement(Keys())
Keys()\Wert = #VK_RETURN
Keys()\Name = "VK_RETURN"
AddElement(Keys())
Keys()\Wert = #VK_SHIFT
Keys()\Name = "VK_SHIFT"
AddElement(Keys())
Keys()\Wert = #VK_CONTROL
Keys()\Name = "VK_CONTROL"
AddElement(Keys())
Keys()\Wert = #VK_MENU
Keys()\Name = "VK_MENU"
AddElement(Keys())
Keys()\Wert = #VK_PAUSE
Keys()\Name = "VK_PAUSE"
AddElement(Keys())
Keys()\Wert = #VK_CAPITAL
Keys()\Name = "VK_CAPITAL"
AddElement(Keys())
Keys()\Wert = #VK_ESCAPE
Keys()\Name = "VK_ESCAPE"
AddElement(Keys())
Keys()\Wert = #VK_SPACE
Keys()\Name = "VK_SPACE"
AddElement(Keys())
Keys()\Wert = #VK_PRIOR
Keys()\Name = "VK_PRIOR"
AddElement(Keys())
Keys()\Wert = #VK_NEXT
Keys()\Name = "VK_NEXT"
AddElement(Keys())
Keys()\Wert = #VK_END
Keys()\Name = "VK_END"
AddElement(Keys())
Keys()\Wert = #VK_HOME
Keys()\Name = "VK_HOME"
AddElement(Keys())
Keys()\Wert = #VK_LEFT
Keys()\Name = "VK_LEFT"
AddElement(Keys())
Keys()\Wert = #VK_UP
Keys()\Name = "VK_UP"
AddElement(Keys())
Keys()\Wert = #VK_RIGHT
Keys()\Name = "VK_RIGHT"
AddElement(Keys())
Keys()\Wert = #VK_DOWN
Keys()\Name = "VK_DOWN"
AddElement(Keys())
Keys()\Wert = #VK_SELECT
Keys()\Name = "VK_SELECT"
AddElement(Keys())
Keys()\Wert = #VK_PRINT
Keys()\Name = "VK_PRINT"
AddElement(Keys())
Keys()\Wert = #VK_EXECUTE
Keys()\Name = "VK_EXECUTE"
AddElement(Keys())
Keys()\Wert = #VK_SNAPSHOT
Keys()\Name = "VK_SNAPSHOT"
AddElement(Keys())
Keys()\Wert = #VK_INSERT
Keys()\Name = "VK_INSERT"
AddElement(Keys())
Keys()\Wert = #VK_DELETE
Keys()\Name = "VK_DELETE"
AddElement(Keys())
Keys()\Wert = #VK_HELP
Keys()\Name = "VK_HELP"
AddElement(Keys())
Keys()\Wert = #VK_0
Keys()\Name = "VK_0"
AddElement(Keys())
Keys()\Wert = #VK_1
Keys()\Name = "VK_1"
AddElement(Keys())
Keys()\Wert = #VK_2
Keys()\Name = "VK_2"
AddElement(Keys())
Keys()\Wert = #VK_3
Keys()\Name = "VK_3"
AddElement(Keys())
Keys()\Wert = #VK_4
Keys()\Name = "VK_4"
AddElement(Keys())
Keys()\Wert = #VK_5
Keys()\Name = "VK_5"
AddElement(Keys())
Keys()\Wert = #VK_6
Keys()\Name = "VK_6"
AddElement(Keys())
Keys()\Wert = #VK_7
Keys()\Name = "VK_7"
AddElement(Keys())
Keys()\Wert = #VK_8
Keys()\Name = "VK_8"
AddElement(Keys())
Keys()\Wert = #VK_9
Keys()\Name = "VK_9"
AddElement(Keys())
Keys()\Wert = #VK_A
Keys()\Name = "VK_A"
AddElement(Keys())
Keys()\Wert = #VK_B
Keys()\Name = "VK_B"
AddElement(Keys())
Keys()\Wert = #VK_C
Keys()\Name = "VK_C"
AddElement(Keys())
Keys()\Wert = #VK_D
Keys()\Name = "VK_D"
AddElement(Keys())
Keys()\Wert = #VK_E
Keys()\Name = "VK_E"
AddElement(Keys())
Keys()\Wert = #VK_F
Keys()\Name = "VK_F"
AddElement(Keys())
Keys()\Wert = #VK_G
Keys()\Name = "VK_G"
AddElement(Keys())
Keys()\Wert = #VK_H
Keys()\Name = "VK_H"
AddElement(Keys())
Keys()\Wert = #VK_I
Keys()\Name = "VK_I"
AddElement(Keys())
Keys()\Wert = #VK_J
Keys()\Name = "VK_J"
AddElement(Keys())
Keys()\Wert = #VK_K
Keys()\Name = "VK_K"
AddElement(Keys())
Keys()\Wert = #VK_L
Keys()\Name = "VK_L"
AddElement(Keys())
Keys()\Wert = #VK_M
Keys()\Name = "VK_M"
AddElement(Keys())
Keys()\Wert = #VK_N
Keys()\Name = "VK_N"
AddElement(Keys())
Keys()\Wert = #VK_O
Keys()\Name = "VK_O"
AddElement(Keys())
Keys()\Wert = #VK_P
Keys()\Name = "VK_P"
AddElement(Keys())
Keys()\Wert = #VK_Q
Keys()\Name = "VK_Q"
AddElement(Keys())
Keys()\Wert = #VK_R
Keys()\Name = "VK_R"
AddElement(Keys())
Keys()\Wert = #VK_S
Keys()\Name = "VK_S"
AddElement(Keys())
Keys()\Wert = #VK_T
Keys()\Name = "VK_T"
AddElement(Keys())
Keys()\Wert = #VK_U
Keys()\Name = "VK_U"
AddElement(Keys())
Keys()\Wert = #VK_V
Keys()\Name = "VK_V"
AddElement(Keys())
Keys()\Wert = #VK_W
Keys()\Name = "VK_W"
AddElement(Keys())
Keys()\Wert = #VK_X
Keys()\Name = "VK_X"
AddElement(Keys())
Keys()\Wert = #VK_Y
Keys()\Name = "VK_Y"
AddElement(Keys())
Keys()\Wert = #VK_Z
Keys()\Name = "VK_Z"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD0
Keys()\Name = "VK_NUMPAD0"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD1
Keys()\Name = "VK_NUMPAD1"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD2
Keys()\Name = "VK_NUMPAD2"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD3
Keys()\Name = "VK_NUMPAD3"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD4
Keys()\Name = "VK_NUMPAD4"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD5
Keys()\Name = "VK_NUMPAD5"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD6
Keys()\Name = "VK_NUMPAD6"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD7
Keys()\Name = "VK_NUMPAD7"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD8
Keys()\Name = "VK_NUMPAD8"
AddElement(Keys())
Keys()\Wert = #VK_NUMPAD9
Keys()\Name = "VK_NUMPAD9"
AddElement(Keys())
Keys()\Wert = #VK_MULTIPLY
Keys()\Name = "VK_MULTIPLY"
AddElement(Keys())
Keys()\Wert = #VK_ADD
Keys()\Name = "VK_ADD"
AddElement(Keys())
Keys()\Wert = #VK_DECIMAL
Keys()\Name = "VK_DECIMAL"
AddElement(Keys())
Keys()\Wert = #VK_DIVIDE
Keys()\Name = "VK_DIVIDE"
AddElement(Keys())
Keys()\Wert = #VK_F1
Keys()\Name = "VK_F1"
AddElement(Keys())
Keys()\Wert = #VK_F2
Keys()\Name = "VK_F2"
AddElement(Keys())
Keys()\Wert = #VK_F3
Keys()\Name = "VK_F3"
AddElement(Keys())
Keys()\Wert = #VK_F4
Keys()\Name = "VK_F4"
AddElement(Keys())
Keys()\Wert = #VK_F5
Keys()\Name = "VK_F5"
AddElement(Keys())
Keys()\Wert = #VK_F6
Keys()\Name = "VK_F6"
AddElement(Keys())
Keys()\Wert = #VK_F7
Keys()\Name = "VK_F7"
AddElement(Keys())
Keys()\Wert = #VK_F8
Keys()\Name = "VK_F8"
AddElement(Keys())
Keys()\Wert = #VK_F9
Keys()\Name = "VK_F9"
AddElement(Keys())
Keys()\Wert = #VK_F10
Keys()\Name = "VK_F10"
AddElement(Keys())
Keys()\Wert = #VK_F11
Keys()\Name = "VK_F11"
AddElement(Keys())
Keys()\Wert = #VK_F12
Keys()\Name = "VK_F12"
AddElement(Keys())
Keys()\Wert = #VK_F13
Keys()\Name = "VK_F13"
AddElement(Keys())
Keys()\Wert = #VK_F14
Keys()\Name = "VK_F14"
AddElement(Keys())
Keys()\Wert = #VK_F15
Keys()\Name = "VK_F15"
AddElement(Keys())
Keys()\Wert = #VK_F16
Keys()\Name = "VK_F16"
AddElement(Keys())
Keys()\Wert = #VK_F17
Keys()\Name = "VK_F17"
AddElement(Keys())
Keys()\Wert = #VK_F18
Keys()\Name = "VK_F18"
AddElement(Keys())
Keys()\Wert = #VK_F19
Keys()\Name = "VK_F19"
AddElement(Keys())
Keys()\Wert = #VK_F20
Keys()\Name = "VK_F20"
AddElement(Keys())
Keys()\Wert = #VK_F21
Keys()\Name = "VK_F21"
AddElement(Keys())
Keys()\Wert = #VK_F22
Keys()\Name = "VK_F22"
AddElement(Keys())
Keys()\Wert = #VK_F23
Keys()\Name = "VK_F23"
AddElement(Keys())
Keys()\Wert = #VK_F24
Keys()\Name = "VK_F24"
AddElement(Keys())
Keys()\Wert = #VK_NUMLOCK
Keys()\Name = "VK_NUMLOCK"

OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Test")

Repeat
  ereignis.l = WaitWindowEvent()
 
  If ereignis.l = #WM_KEYDOWN
    If EventlParam() & %01000000000000000000000000000000
      Debug Str(EventwParam()) + " ..."
    Else
      ForEach Keys()
        If EventwParam() = Keys()\Wert
          Debug Keys()\Name + " *drück*"
        EndIf
      Next
    EndIf
   
  ElseIf ereignis.l = #WM_KEYUP
    ForEach Keys()
        If EventwParam() = Keys()\Wert
          Debug Keys()\Name + " *loslass*"
        EndIf
      Next
  EndIf

Until ereignis.l = #PB_Event_CloseWindow 
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Yeah, danke euch allen für eure (recht flotten) Antworten :mrgreen:

Jetzt kann ich heut Nacht gaanz viel prog... »autsch« - meine Freundin sagt, ich wollte schreiben: "Jetzt kann ich heut Nacht ganz beruhigt schlafen" <)
Antworten