void pressKey ( const QString & key , bool release = false ) { INPUT input = { } ; input . type = INPUT_KEYBOARD ; WORD scanCode = 0 ; DWORD flags = 0 ; if ( key == "alt" ) { scanCode = 0x38 ; flags = KEYEVENTF_EXTENDEDKEY ; } else if ( key == "ctrl" ) { scanCode = 0x1D ; flags = KEYEVENTF_EXTENDEDKEY ; } else if ( key == "shift" ) { scanCode = 0x2A ; } else { char c = key . toUpper ( ) . toStdString ( ) [ 0 ] ; scanCode = MapVirtualKeyA ( c , MAPVK_VK_TO_VSC ) ; } input . ki . wScan = scanCode ; input . ki . dwFlags = KEYEVENTF_SCANCODE | flags ; if ( release ) { input . ki . dwFlags |= KEYEVENTF_KEYUP ; } SendInput ( 1 , & input , sizeof ( INPUT ) ) ; }