Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Python win32api simple Vitual keystroke example
#Giant dictonary to hold key name and VK value
VK_CODE = {'backspace':0x08,
'tab':0x09,
'clear':0x0C,
'enter':0x0D,
'shift':0x10,
'ctrl':0x11,
'alt':0x12,
'pause':0x13,
'caps_lock':0x14,
'esc':0x1B,
'spacebar':0x20,
'page_up':0x21,
'page_down':0x22,
'end':0x23,
'home':0x24,
'left_arrow':0x25,
'up_arrow':0x26,
'right_arrow':0x27,
'down_arrow':0x28,
'select':0x29,
'print':0x2A,
'execute':0x2B,
'print_screen':0x2C,
'ins':0x2D,
'del':0x2E,
'help':0x2F,
'0':0x30,
'1':0x31,
'2':0x32,
'3':0x33,
'4':0x34,
'5':0x35,
'6':0x36,
'7':0x37,
'8':0x38,
'9':0x39,
'a':0x41,
'b':0x42,
'c':0x43,
'd':0x44,
'e':0x45,
'f':0x46,
'g':0x47,
'h':0x48,
'i':0x49,
'j':0x4A,
'k':0x4B,
'l':0x4C,
'm':0x4D,
'n':0x4E,
'o':0x4F,
'p':0x50,
'q':0x51,
'r':0x52,
's':0x53,
't':0x54,
'u':0x55,
'v':0x56,
'w':0x57,
'x':0x58,
'y':0x59,
'z':0x5A,
'numpad_0':0x60,
'numpad_1':0x61,
'numpad_2':0x62,
'numpad_3':0x63,
'numpad_4':0x64,
'numpad_5':0x65,
'numpad_6':0x66,
'numpad_7':0x67,
'numpad_8':0x68,
'numpad_9':0x69,
'multiply_key':0x6A,
'add_key':0x6B,
'separator_key':0x6C,
'subtract_key':0x6D,
'decimal_key':0x6E,
'divide_key':0x6F,
'F1':0x70,
'F2':0x71,
'F3':0x72,
'F4':0x73,
'F5':0x74,
'F6':0x75,
'F7':0x76,
'F8':0x77,
'F9':0x78,
'F10':0x79,
'F11':0x7A,
'F12':0x7B,
'F13':0x7C,
'F14':0x7D,
'F15':0x7E,
'F16':0x7F,
'F17':0x80,
'F18':0x81,
'F19':0x82,
'F20':0x83,
'F21':0x84,
'F22':0x85,
'F23':0x86,
'F24':0x87,
'num_lock':0x90,
'scroll_lock':0x91,
'left_shift':0xA0,
'right_shift ':0xA1,
'left_control':0xA2,
'right_control':0xA3,
'left_menu':0xA4,
'right_menu':0xA5,
'browser_back':0xA6,
'browser_forward':0xA7,
'browser_refresh':0xA8,
'browser_stop':0xA9,
'browser_search':0xAA,
'browser_favorites':0xAB,
'browser_start_and_home':0xAC,
'volume_mute':0xAD,
'volume_Down':0xAE,
'volume_up':0xAF,
'next_track':0xB0,
'previous_track':0xB1,
'stop_media':0xB2,
'play/pause_media':0xB3,
'start_mail':0xB4,
'select_media':0xB5,
'start_application_1':0xB6,
'start_application_2':0xB7,
'attn_key':0xF6,
'crsel_key':0xF7,
'exsel_key':0xF8,
'play_key':0xFA,
'zoom_key':0xFB,
'clear_key':0xFE,
'+':0xBB,
',':0xBC,
'-':0xBD,
'.':0xBE,
'/':0xBF,
'`':0xC0,
';':0xBA,
'[':0xDB,
'\\':0xDC,
']':0xDD,
"'":0xDE,
'`':0xC0}
def press(*args):
'''
one press, one release.
accepts as many arguments as you want. e.g. press('left_arrow', 'a','b').
'''
for i in args:
win32api.keybd_event(VK_CODE[i], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
def pressAndHold(*args):
'''
press and hold. Do NOT release.
accepts as many arguments as you want.
e.g. pressAndHold('left_arrow', 'a','b').
'''
for i in args:
win32api.keybd_event(VK_CODE[i], 0,0,0)
time.sleep(.05)
def pressHoldRelease(*args):
'''
press and hold passed in strings. Once held, release
accepts as many arguments as you want.
e.g. pressAndHold('left_arrow', 'a','b').
this is useful for issuing shortcut command or shift commands.
e.g. pressHoldRelease('ctrl', 'alt', 'del'), pressHoldRelease('shift','a')
'''
for i in args:
win32api.keybd_event(VK_CODE[i], 0,0,0)
time.sleep(.05)
for i in args:
win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
time.sleep(.1)
def release(*args):
'''
release depressed keys
accepts as many arguments as you want.
e.g. release('left_arrow', 'a','b').
'''
for i in args:
win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
def typer(string=None,*args):
## time.sleep(4)
for i in string:
if i == ' ':
win32api.keybd_event(VK_CODE['spacebar'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['spacebar'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '!':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['1'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['1'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '@':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['2'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['2'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '{':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['['], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['['],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '?':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['/'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['/'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == ':':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE[';'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE[';'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '"':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['\''], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['\''],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '}':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE[']'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE[']'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '#':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['3'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['3'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '$':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['4'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['4'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '%':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['5'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['5'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '^':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['6'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['6'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '&':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['7'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['7'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '*':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['8'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['8'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '(':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['9'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['9'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == ')':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['0'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['0'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '_':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['-'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['-'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '=':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['+'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['+'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '~':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['`'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['`'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '<':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE[','], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE[','],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == '>':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['.'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['.'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'A':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['a'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['a'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'B':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['b'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['b'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'C':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['c'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['c'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'D':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['d'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['d'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'E':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['e'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['e'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'F':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['f'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['f'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'G':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['g'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['g'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'H':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['h'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['h'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'I':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['i'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['i'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'J':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['j'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['j'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'K':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['k'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['k'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'L':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['l'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['l'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'M':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['m'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['m'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'N':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['n'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['n'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'O':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['o'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['o'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'P':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['p'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['p'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'Q':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['q'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['q'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'R':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['r'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['r'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'S':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['s'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['s'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'T':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['t'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['t'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'U':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['u'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['u'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'V':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['v'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['v'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'W':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['w'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['w'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'X':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['x'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['x'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'Y':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['y'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['y'],0 ,win32con.KEYEVENTF_KEYUP ,0)
elif i == 'Z':
win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)
win32api.keybd_event(VK_CODE['z'], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)
win32api.keybd_event(VK_CODE['z'],0 ,win32con.KEYEVENTF_KEYUP ,0)
else:
win32api.keybd_event(VK_CODE[i], 0,0,0)
time.sleep(.05)
win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
@cagrimertbakirci
Copy link

cagrimertbakirci commented Apr 30, 2016

Such an incredible resource, thank you so much!

@adk96r
Copy link

adk96r commented Aug 18, 2016

This is awesome ! I am using this beautiful piece of code to control my Mclaren in NFS using the arduino ( hooked up to a accelerometer ). Thankyou very much .

@15449119
Copy link

15449119 commented Jan 31, 2017

hi, this is really nice..
one quick question: I have made a script to automatically login to windows when it is locked. I add the script to scheduled tasked,when the desktop is locked ,the script will run, the action is typing my password. as I can see, the cursor is in the password box. but nothing typed there. I wonder where does the script typed the password.. do I need to set the cursor?

@om-nishu-trantor
Copy link

om-nishu-trantor commented May 4, 2017

More exhaustive list of Virtual Key(VK) codes : http://www.kbdedit.com/manual/low_level_vk_list.html

@AustinScola
Copy link

AustinScola commented May 17, 2017

dictionary contains duplicate entry: '`':0xC0

@TheGreatCabbage
Copy link

TheGreatCabbage commented Jul 3, 2017

Very useful, thank you.

@Hzzkygcs
Copy link

Hzzkygcs commented Oct 14, 2017

Thanks... It is very useful...

@Dimon4eg
Copy link

Dimon4eg commented Apr 30, 2018

Oh guys, you can just use VkKeyScan from Windows API!
Look here https://stackoverflow.com/questions/43753346/how-to-get-virtual-key-code-of-a-key/50100057#50100057

@TheoGuerin64
Copy link

TheoGuerin64 commented Dec 2, 2019

Thanks !

@gorodion
Copy link

gorodion commented Apr 24, 2021

after last updating windows no longer works

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment