a possible way
#include <WinAPISys.au3>
; _WinAPI_GetKeyboardState fails if there is not a GUI
$hGUI = GUICreate("Test _WinAPI_GetKeyboardState")
GUISetState()
KeyBoard_WaitForModifierKeysUp() ; returns when Shift,Ctrl,Alt,LWin,RWin ar all UP
MsgBox(0, '', "All modifier Keys are Up")
Func KeyBoard_WaitForModifierKeysUp()
Local $aKeyboardState
Do
$aKeyboardState = StringRegExp(StringTrimLeft(DllStructGetData(_WinAPI_GetKeyboardState(), 1), 2), "\w{2}", 3)
ConsoleWrite("Debug: " & $aKeyboardState[16] & ' ' & $aKeyboardState[17] & ' ' & $aKeyboardState[18] & ' ' & $aKeyboardState[91] & ' ' & $aKeyboardState[92] & @LF)
Sleep(50)
Until (Not (BitAND(0x80, BitOR( _
"0x" & $aKeyboardState[16], _ ; Shift
"0x" & $aKeyboardState[17], _ ; Ctrl
"0x" & $aKeyboardState[18], _ ; Alt
"0x" & $aKeyboardState[91], _ ; LWin
"0x" & $aKeyboardState[92])))) ; RWin
EndFunc ;==>KeyBoard_WaitForModifierKeysUp