Advertisement
Wituz

keyholder.py

Mar 2nd, 2014
2,712
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.46 KB | None | 0 0
  1. import win32api
  2. import win32con
  3. import time
  4. VK_CODE = {'backspace':0x08,
  5.            'tab':0x09,
  6.            'clear':0x0C,
  7.            'enter':0x0D,
  8.            'shift':0x10,
  9.            'ctrl':0x11,
  10.            'alt':0x12,
  11.            'pause':0x13,
  12.            'caps_lock':0x14,
  13.            'esc':0x1B,
  14.            'spacebar':0x20,
  15.            'page_up':0x21,
  16.            'page_down':0x22,
  17.            'end':0x23,
  18.            'home':0x24,
  19.            'left_arrow':0x25,
  20.            'up_arrow':0x26,
  21.            'right_arrow':0x27,
  22.            'down_arrow':0x28,
  23.            'select':0x29,
  24.            'print':0x2A,
  25.            'execute':0x2B,
  26.            'print_screen':0x2C,
  27.            'ins':0x2D,
  28.            'del':0x2E,
  29.            'help':0x2F,
  30.            '0':0x30,
  31.            '1':0x31,
  32.            '2':0x32,
  33.            '3':0x33,
  34.            '4':0x34,
  35.            '5':0x35,
  36.            '6':0x36,
  37.            '7':0x37,
  38.            '8':0x38,
  39.            '9':0x39,
  40.            'a':0x41,
  41.            'b':0x42,
  42.            'c':0x43,
  43.            'd':0x44,
  44.            'e':0x45,
  45.            'f':0x46,
  46.            'g':0x47,
  47.            'h':0x48,
  48.            'i':0x49,
  49.            'j':0x4A,
  50.            'k':0x4B,
  51.            'l':0x4C,
  52.            'm':0x4D,
  53.            'n':0x4E,
  54.            'o':0x4F,
  55.            'p':0x50,
  56.            'q':0x51,
  57.            'r':0x52,
  58.            's':0x53,
  59.            't':0x54,
  60.            'u':0x55,
  61.            'v':0x56,
  62.            'w':0x57,
  63.            'x':0x58,
  64.            'y':0x59,
  65.            'z':0x5A,
  66.            'numpad_0':0x60,
  67.            'numpad_1':0x61,
  68.            'numpad_2':0x62,
  69.            'numpad_3':0x63,
  70.            'numpad_4':0x64,
  71.            'numpad_5':0x65,
  72.            'numpad_6':0x66,
  73.            'numpad_7':0x67,
  74.            'numpad_8':0x68,
  75.            'numpad_9':0x69,
  76.            'multiply_key':0x6A,
  77.            'add_key':0x6B,
  78.            'separator_key':0x6C,
  79.            'subtract_key':0x6D,
  80.            'decimal_key':0x6E,
  81.            'divide_key':0x6F,
  82.            'F1':0x70,
  83.            'F2':0x71,
  84.            'F3':0x72,
  85.            'F4':0x73,
  86.            'F5':0x74,
  87.            'F6':0x75,
  88.            'F7':0x76,
  89.            'F8':0x77,
  90.            'F9':0x78,
  91.            'F10':0x79,
  92.            'F11':0x7A,
  93.            'F12':0x7B,
  94.            'F13':0x7C,
  95.            'F14':0x7D,
  96.            'F15':0x7E,
  97.            'F16':0x7F,
  98.            'F17':0x80,
  99.            'F18':0x81,
  100.            'F19':0x82,
  101.            'F20':0x83,
  102.            'F21':0x84,
  103.            'F22':0x85,
  104.            'F23':0x86,
  105.            'F24':0x87,
  106.            'num_lock':0x90,
  107.            'scroll_lock':0x91,
  108.            'left_shift':0xA0,
  109.            'right_shift ':0xA1,
  110.            'left_control':0xA2,
  111.            'right_control':0xA3,
  112.            'left_menu':0xA4,
  113.            'right_menu':0xA5,
  114.            'browser_back':0xA6,
  115.            'browser_forward':0xA7,
  116.            'browser_refresh':0xA8,
  117.            'browser_stop':0xA9,
  118.            'browser_search':0xAA,
  119.            'browser_favorites':0xAB,
  120.            'browser_start_and_home':0xAC,
  121.            'volume_mute':0xAD,
  122.            'volume_Down':0xAE,
  123.            'volume_up':0xAF,
  124.            'next_track':0xB0,
  125.            'previous_track':0xB1,
  126.            'stop_media':0xB2,
  127.            'play/pause_media':0xB3,
  128.            'start_mail':0xB4,
  129.            'select_media':0xB5,
  130.            'start_application_1':0xB6,
  131.            'start_application_2':0xB7,
  132.            'attn_key':0xF6,
  133.            'crsel_key':0xF7,
  134.            'exsel_key':0xF8,
  135.            'play_key':0xFA,
  136.            'zoom_key':0xFB,
  137.            'clear_key':0xFE,
  138.            '+':0xBB,
  139.            ',':0xBC,
  140.            '-':0xBD,
  141.            '.':0xBE,
  142.            '/':0xBF,
  143.            '`':0xC0,
  144.            ';':0xBA,
  145.            '[':0xDB,
  146.            '\\':0xDC,
  147.            ']':0xDD,
  148.            "'":0xDE,
  149.            '`':0xC0}
  150.  
  151.  
  152.  
  153. def press(*args):
  154.     '''
  155.    one press, one release.
  156.    accepts as many arguments as you want. e.g. press('left_arrow', 'a','b').
  157.    '''
  158.     for i in args:
  159.         win32api.keybd_event(VK_CODE[i], 0,0,0)
  160.         time.sleep(2)
  161.         win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
  162.  
  163. def pressAndHold(*args):
  164.     '''
  165.    press and hold. Do NOT release.
  166.    accepts as many arguments as you want.
  167.    e.g. pressAndHold('left_arrow', 'a','b').
  168.    '''
  169.     for i in args:
  170.         win32api.keybd_event(VK_CODE[i], 0,0,0)
  171.         time.sleep(2)
  172.  
  173. def pressHoldRelease(*args):
  174.     '''
  175.    press and hold passed in strings. Once held, release
  176.    accepts as many arguments as you want.
  177.    e.g. pressAndHold('left_arrow', 'a','b').
  178.  
  179.    this is useful for issuing shortcut command or shift commands.
  180.    e.g. pressHoldRelease('ctrl', 'alt', 'del'), pressHoldRelease('shift','a')
  181.    '''
  182.     for i in args:
  183.         win32api.keybd_event(VK_CODE[i], 0,0,0)
  184.         time.sleep(2)
  185.  
  186.     for i in args:
  187.             win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
  188.             time.sleep(.1)
  189.  
  190. def holdForSeconds(key, seconds):
  191.     win32api.keybd_event(VK_CODE[key], 0,0,0)
  192.     time.sleep(seconds)
  193.     win32api.keybd_event(VK_CODE[key],0 ,win32con.KEYEVENTF_KEYUP ,0)
  194.  
  195. def release(*args):
  196.     '''
  197.    release depressed keys
  198.    accepts as many arguments as you want.
  199.    e.g. release('left_arrow', 'a','b').
  200.    '''
  201.     for i in args:
  202.         win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
  203.  
  204. def holdKey(*args):
  205.     win32api.keybd_event(VK_CODE[i], 0, win32con.KEYEVENTF_EXTENDEDKEY, 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement