Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # direct inputs
- # source to this solution and code:
- # http://stackoverflow.com/questions/14489013/simulate-python-keypresses-for-controlling-a-game
- # http://www.gamespp.com/directx/directInputKeyboardScanCodes.html
- import ctypes
- import time
- SendInput = ctypes.windll.user32.SendInput
- W = 0x11
- A = 0x1E
- S = 0x1F
- D = 0x20
- # C struct redefinitions
- PUL = ctypes.POINTER(ctypes.c_ulong)
- class KeyBdInput(ctypes.Structure):
- _fields_ = [("wVk", ctypes.c_ushort),
- ("wScan", ctypes.c_ushort),
- ("dwFlags", ctypes.c_ulong),
- ("time", ctypes.c_ulong),
- ("dwExtraInfo", PUL)]
- class HardwareInput(ctypes.Structure):
- _fields_ = [("uMsg", ctypes.c_ulong),
- ("wParamL", ctypes.c_short),
- ("wParamH", ctypes.c_ushort)]
- class MouseInput(ctypes.Structure):
- _fields_ = [("dx", ctypes.c_long),
- ("dy", ctypes.c_long),
- ("mouseData", ctypes.c_ulong),
- ("dwFlags", ctypes.c_ulong),
- ("time",ctypes.c_ulong),
- ("dwExtraInfo", PUL)]
- class Input_I(ctypes.Union):
- _fields_ = [("ki", KeyBdInput),
- ("mi", MouseInput),
- ("hi", HardwareInput)]
- class Input(ctypes.Structure):
- _fields_ = [("type", ctypes.c_ulong),
- ("ii", Input_I)]
- # Actuals Functions
- def PressKey(hexKeyCode):
- extra = ctypes.c_ulong(0)
- ii_ = Input_I()
- ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra) )
- x = Input( ctypes.c_ulong(1), ii_ )
- ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
- def ReleaseKey(hexKeyCode):
- extra = ctypes.c_ulong(0)
- ii_ = Input_I()
- ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra) )
- x = Input( ctypes.c_ulong(1), ii_ )
- ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
- if __name__ == '__main__':
- time.sleep(5)
- print("started")
- while True:
- PressKey(0x11)
- time.sleep(2)
- ReleaseKey(0x11)
- time.sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement