-
-
Save chriskiehl/2906125 to your computer and use it in GitHub Desktop.
#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) | |
Actually it looks like you might not need the dict if you just take input and run hex(ord(input))
or even just ord(input)
It seems as though the "pressAndHold" function simply presses on my system: when in a loop everything seems to work fine
Such an incredible resource, thank you so much!
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 .
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?
More exhaustive list of Virtual Key(VK) codes : http://www.kbdedit.com/manual/low_level_vk_list.html
dictionary contains duplicate entry: '`':0xC0
Very useful, thank you.
Thanks... It is very useful...
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
Thanks !
after last updating windows no longer works
Thanks bro you saved me from writing all the VK_CODES
thank u
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.