Seite 1 von 1
Keyboard gedrückt gehaltene Taste erkennen
Verfasst: 18.02.2021 13:46
von schleicher
Wie ein Tastendruck erkannt wird ist mir klar . z.B. key down
Code: Alles auswählen
EnableExplicit
Enumeration Window
#win
EndEnumeration
Enumeration
#w_key_down
EndEnumeration
Define event.l
Define x.i=0
#flags=#PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#win,0,0,300,200,"keytest",#flags)
AddKeyboardShortcut(#win,#PB_Shortcut_Down,#w_key_down) ;add shortcut key_down
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_Menu
Select EventMenu()
Case #w_key_down
x=x+1
Debug Str(x)+" down key"
EndSelect
EndSelect
Until event=#PB_Event_CloseWindow
EndIf
Aber wie kann ich das machen, das erkannt wird, das gerade eine Taste gedrückt gehalten wird ?
Re: Keyboard gedrückt gehaltene Taste erkennen
Verfasst: 18.02.2021 21:03
von NicknameFJ
Hi,
auf WIN gibt es die WIN-API Funktion GetAsyncKeyState
https://docs.microsoft.com/en-us/window ... nckeystate
mit der abgefragt werden kann ob eine Taste gerade im Moment der Abfrage gedrückt ist.
NicknameFJ
Re: Keyboard gedrückt gehaltene Taste erkennen
Verfasst: 19.02.2021 20:07
von tft
hier ein wenig Code ..... zum experimentieren. Es wird die Taste "W" geprüft.
Code: Alles auswählen
;ömm ja .. Debug aktivieren !!
Macro SwitshVar( _VarName_ )
_VarName_ = _VarName_ + 1
If _VarName_ > 1
_VarName_ = 0
EndIf
EndMacro
OpenWindow(1,0,0,200,100,"Event Test",#PB_Window_SystemMenu |#PB_Window_ScreenCentered)
ButtonGadget(1, 0, 0, 80, 20, "Play")
ButtonGadget(2, 90, 0, 80, 20, "Stop")
DisableGadget(2,1)
Debug "Bitte drücken sie eine beliebige Taste!"+Str(rr)
GetCursorPos_(st.POINT)
Debug st\x
Debug st\y
Define Schalter
Repeat
Event=WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ; Play
DisableGadget(2,0) ; Enable the 'Stop' gadget
DisableGadget(1,1) ; Disable the 'Play' Gadget
Case 2 ; Stop
DisableGadget(1,0) ; Enable the 'Play' gadget
DisableGadget(2,1) ; Disable the 'Stop' Gadget
EndSelect
Case #WM_MOUSEWHEEL
If (EventwParam() >> 16) & $8000
Debug "Down"
Else
Debug "Up"
EndIf
Case #WM_MOUSEMOVE
Debug "#WM_MOUSEMOVEw " + Str(EventwParam())
Debug "#WM_MOUSEMOVEl " + StrF(EventlParam())
Case #WM_LBUTTONDBLCLK
Debug "#WM_LBUTTONDBLCLK " + Str(EventwParam())
Debug "#WM_LBUTTONDBLCLK " + Str(EventlParam())
Case #WM_LBUTTONDOWN
Debug "#WM_LBUTTONDOWN " + Str(EventwParam())
Debug "#WM_LBUTTONDOWN " + Str(EventlParam())
Case #WM_LBUTTONUP
Debug "#WM_LBUTTONUP " + Str(EventwParam())
Debug "#WM_LBUTTONUP " + Str(EventlParam())
Case #WM_RBUTTONDOWN
Debug "#WM_RBUTTONDOWN " + Str(EventwParam())
Debug "#WM_RBUTTONDOWN " + Str(EventlParam())
Case #WM_RBUTTONUP
Debug "#WM_RBUTTONUP" + Str(EventwParam())
Debug "#WM_RBUTTONUP" + Str(EventlParam())
Case #WM_MBUTTONDBLCLK
Debug "#WM_MBUTTONDBLCLK " + Str(EventwParam())
Debug "#WM_MBUTTONDBLCLK " + Str(EventlParam())
Case #WM_MBUTTONDOWN
Debug "#WM_MBUTTONDOWN " + Str(EventwParam())
Debug "#WM_MBUTTONDOWN " + Str(EventlParam())
Case #WM_MBUTTONUP
Debug "#WM_MBUTTONUP " + Str(EventwParam())
Debug "#WM_MBUTTONUP " + Str(EventlParam())
Case #WM_NCMOUSEMOVE
Debug "#WM_NCMOUSEMOVE " + Str(EventwParam())
Debug "#WM_NCMOUSEMOVE " + Str(EventlParam())
Case #WM_NCLBUTTONDBLCLK
Debug "#WM_NCLBUTTONDBLCLK " + Str(EventwParam())
Debug "#WM_NCLBUTTONDBLCLK " + Str(EventlParam())
Case #WM_ACTIVATE
Debug "#WM_ACTIVATE " +Str(EventwParam())
Debug "#WM_ACTIVATE " +Str(EventlParam())
Case #WM_CHAR
Debug "#CHAR w: " + Chr(EventwParam())
Debug "#CHAR l: " + Str(EventlParam())
Case #WM_DEADCHAR
Debug "#DEADCHAR: " + Str(EventwParam())
Case #WM_KEYDOWN
Debug "#KEYDOWN(w): " + Str(EventwParam())
Debug "#KEYDOWN(l): " + Str(EventlParam())
SwitshVar( schalter )
Case #WM_KEYUP
Debug "#KEYUP(w): " + Str(EventwParam())
Debug "#KEYUP(l): " + Str(EventlParam())
SwitshVar( schalter )
Case #WM_SYSCHAR
Debug "#SYSCHAR: " + Str(EventwParam())
Case #WM_SYSDEADCHAR
Debug "#SYDEADSCHAR: " + Str(EventwParam())
Case #WM_SYSKEYDOWN
Debug "#SYSKEYDOWN: " + Str(EventwParam())
Case #WM_SYSKEYUP
Debug "#SYSKEYUP: " + Str(EventwParam())
Default
Debug Event
EndSelect
; -----------------------------------------------
If GetAsyncKeyState_(#VK_W) <> 0
Debug "Key W it is presset in this moment"
EndIf
;----------------------------------------------
GetCursorPos_(st.POINT)
Debug st\x
Debug st\y
Debug "Schalter = "+Str(schalter)
Debug "-----------------"
ForEver
End
gruss TFT