Create a gist now

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)
@kendase3

This comment has been minimized.

Show comment
Hide comment
@kendase3

kendase3 Jul 12, 2014

I just wanted to say that this is a great resource. The dict in particular was a real time-saver. However, I'm having trouble using the same means as you for holding down keys. Does this call to keybd_event with three zeros only work on certain versions of Windows? I'm having trouble finding documentation on win32api. I've gotten a similar example for shift to work that used different syntax. The script I'm writing is a rather specific situation: A user may use a toggle key to alternate holding down a target key.

kendase3 commented Jul 12, 2014

I just wanted to say that this is a great resource. The dict in particular was a real time-saver. However, I'm having trouble using the same means as you for holding down keys. Does this call to keybd_event with three zeros only work on certain versions of Windows? I'm having trouble finding documentation on win32api. I've gotten a similar example for shift to work that used different syntax. The script I'm writing is a rather specific situation: A user may use a toggle key to alternate holding down a target key.

@kendase3

This comment has been minimized.

Show comment
Hide comment
@kendase3

kendase3 Jul 12, 2014

Actually it looks like you might not need the dict if you just take input and run hex(ord(input))

kendase3 commented Jul 12, 2014

Actually it looks like you might not need the dict if you just take input and run hex(ord(input))

@kendase3

This comment has been minimized.

Show comment
Hide comment
@kendase3

kendase3 Jul 12, 2014

or even just ord(input)

kendase3 commented Jul 12, 2014

or even just ord(input)

@kendase3

This comment has been minimized.

Show comment
Hide comment
@kendase3

kendase3 Jul 12, 2014

It seems as though the "pressAndHold" function simply presses on my system: when in a loop everything seems to work fine

kendase3 commented Jul 12, 2014

It seems as though the "pressAndHold" function simply presses on my system: when in a loop everything seems to work fine

@cagrimertbakirci

This comment has been minimized.

Show comment
Hide comment
@cagrimertbakirci

cagrimertbakirci Apr 30, 2016

Such an incredible resource, thank you so much!

cagrimertbakirci commented Apr 30, 2016

Such an incredible resource, thank you so much!

@adk96r

This comment has been minimized.

Show comment
Hide comment
@adk96r

adk96r 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 .

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

This comment has been minimized.

Show comment
Hide comment
@15449119

15449119 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?

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

This comment has been minimized.

Show comment
Hide comment
@om-nishu-trantor

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

This comment has been minimized.

Show comment
Hide comment
@AustinScola

AustinScola May 17, 2017

dictionary contains duplicate entry: '`':0xC0

AustinScola commented May 17, 2017

dictionary contains duplicate entry: '`':0xC0

@TheGreatCabbage

This comment has been minimized.

Show comment
Hide comment
@TheGreatCabbage

TheGreatCabbage Jul 3, 2017

Very useful, thank you.

TheGreatCabbage commented Jul 3, 2017

Very useful, thank you.

@KhunRan

This comment has been minimized.

Show comment
Hide comment
@KhunRan

KhunRan Oct 14, 2017

Thanks... It is very useful...

KhunRan commented Oct 14, 2017

Thanks... It is very useful...

@Dimon4eg

This comment has been minimized.

Show comment
Hide comment

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

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