Code: Select all
If GetAsyncKeyState_(#VK_Control) & GetAsyncKeyState_(#VK_X)
Code: Select all
If GetAsyncKeyState_(#VK_Control) & GetAsyncKeyState_(#VK_X)
Code: Select all
Procedure Callback(Win, Msg, wParam, lParam)
RESULT = #PB_ProcessPureBasicEvents
Select Msg
Case #PB_EventCloseWindow : End
Case #WM_KEYDOWN
Debug "Pressed"+Str(wParam)
Case #WM_KEYUP
Debug "Released"+Str(wParam)
EndSelect
ProcedureReturn RESULT
EndProcedure
OpenWindow(0,0,0,0,0, #WS_OVERLAPPEDWINDOW | #WS_MAXIMIZE, "")
SetWindowCallback(@Callback())
Repeat : WaitWindowEvent() :ForEver
Code: Select all
Repeat
If keystate
If GetAsyncKeyState_(keystate)=0
keystate=0
Debug "(released)"
EndIf
ElseIf altpressed
If GetAsyncKeyState_(#VK_MENU)
If GetAsyncKeyState_(#VK_RETURN)
keystate=#VK_RETURN
Debug "Alt + Return"
ElseIf GetAsyncKeyState_(#VK_F4)
keystate=#VK_F4
Debug "Alt + F4"
EndIf
Else
altpressed=0
EndIf
Else
;clear buffer
GetAsyncKeyState_(#VK_MENU)
GetAsyncKeyState_(#VK_ESCAPE)
GetAsyncKeyState_(#VK_RETURN)
GetAsyncKeyState_(#VK_F4)
If GetAsyncKeyState_(#VK_RETURN)=0 And GetAsyncKeyState_(#VK_F4)=0 And GetAsyncKeyState_(#VK_MENU)
altpressed=1
ElseIf GetAsyncKeyState_(#VK_ESCAPE)
End
EndIf
EndIf
ForEver
Code: Select all
If GetAsyncKeyState_(#VK_Control)<>0 And GetAsyncKeyState_(#VK_X)<>0
; Do whatever.
EndIf
Code: Select all
While GetAsyncKeyState_(#VK_Shift)=-32767
If GetAsyncKeyState_(#VK_LButton)=-32767
;Do Whatever
EndIf
Wend
Code: Select all
Repeat
For k=0 To 255 : GetAsyncKeyState_(k) : Next
If GetAsyncKeyState_(#VK_Control)<>0 And GetAsyncKeyState_(#VK_X)<>0
Debug "Both!"
EndIf
ForEver
Code: Select all
For k=0 To 255 : GetAsyncKeyState_(k) : Next
PB wrote:Hi NewMan,
I see what you mean now... normally I just flush all the key buffers first like so:
Code: Select all
Repeat For k=0 To 255 : GetAsyncKeyState_(k) : Next If GetAsyncKeyState_(#VK_B)<>0 And GetAsyncKeyState_(#VK_X)<>0 Debug "Both!" EndIf ForEver
Code: Select all
(EDIT : The right code is below)
Code: Select all
EnableExplicit
Structure FFmap
key.b[256]
EndStructure
Define Keys.FFmap
Define.l EvID
OpenWindow(0,#PB_Ignore,#PB_Ignore,200,100,"keytest")
CreateGadgetList(WindowID(0))
TextGadget(0,10,10,180,30,"go")
Repeat
EvID = WaitWindowEvent(100)
GetKeyboardState_(@Keys)
If Keys\key[#VK_A] And Keys\key[#VK_CONTROL]
SetGadgetText(0, "you hit ctrl-a")
EndIf
Until EvID = #PB_Event_CloseWindow