#define key_lshift 0xa0 >>#define key_rshift 0xa1 >>#define key_lctrl 0xa2 >>#define key_rctrl 0xa3 >>#define key_lalt 0xa4 >>#define key_ralt 0xa5 >> >>DECLARE INTEGER GetAsyncKeyState IN WIN32API INTEGER nVKey >> >>LOCAL llLShiftDown, llRShiftDown, llLCtrlDown, llRCtrlDown, llLAltDown, llRAltDown >>llLShiftDown = isKeyDown(key_lshift) >>llRShiftDown = isKeyDown(key_rshift) >>llLCtrlDown = isKeyDown(key_lctrl) >>llRCtrlDown = isKeyDown(key_rctrl) >>llLAltDown = isKeyDown(key_lalt) >>llRAltDown = isKeyDown(key_ralt) >> >>* The same works for reading mouse buttons >>#define left_button 0x1 >>#define right_button 0x2 >>#define middle_button 0x4 >>llLeftButtonDown = isKeyDown(left_button) >>llRightButtonDown = isKeyDown(right_button) >>llMiddleButtonDown = isKeyDown(middle_button) >> >> >>FUNCTION isKeyDown >>LPARAMETERS tnVKey >> RETURN (BITAND(GetAsyncKeyState(tnVKey), 0x8000) != 0)>>
#define key_lshift 0xa0 #define key_rshift 0xa1 #define key_lctrl 0xa2 #define key_rctrl 0xa3 #define key_lalt 0xa4 #define key_ralt 0xa5 #define left_button 0x1 #define right_button 0x2 #define middle_button 0x4 LOCAL llLShiftDown, llRShiftDown, llLCtrlDown, llRCtrlDown, llLAltDown, llRAltDown LOCAL llLeftButtonDown, llRightButtonDown, llMiddleButtonDown DECLARE INTEGER GetAsyncKeyState IN WIN32API INTEGER nVKey DO WHILE INKEY() != 27 llLShiftDown = (BITAND(GetAsyncKeyState(key_lshift), 0x8000) != 0) llRShiftDown = (BITAND(GetAsyncKeyState(key_rshift), 0x8000) != 0) llLCtrlDown = (BITAND(GetAsyncKeyState(key_lctrl), 0x8000) != 0) llRCtrlDown = (BITAND(GetAsyncKeyState(key_rctrl), 0x8000) != 0) llLAltDown = (BITAND(GetAsyncKeyState(key_lalt), 0x8000) != 0) llRAltDown = (BITAND(GetAsyncKeyState(key_ralt), 0x8000) != 0) IF llLShiftDown CLEAR ? "Left shift" ENDIF IF llRShiftDown CLEAR ? "Right shift" ENDIF IF llLCtrlDown CLEAR ? "Left control" ENDIF IF llRCtrlDown CLEAR ? "Right control" ENDIF IF llLAltDown CLEAR ? "Left alt" ENDIF IF llRAltDown CLEAR ? "Right alt" ENDIF * The same works for reading mouse buttons llLeftButtonDown = (BITAND(GetAsyncKeyState(left_button), 0x8000) != 0) llRightButtonDown = (BITAND(GetAsyncKeyState(right_button), 0x8000) != 0) llMiddleButtonDown = (BITAND(GetAsyncKeyState(middle_button), 0x8000) != 0) IF llLeftButtonDown CLEAR ? "Left mouse button" ENDIF IF llRightButtonDown CLEAR ? "Right mouse button" ENDIF IF llMiddleButtonDown CLEAR ? "Middle mouse button" ENDIF ENDDO