Simulate Keyboard keypress Delay
88888 Dihedral
dihedral88888 at googlemail.com
Wed Feb 13 19:45:35 EST 2013
DaGeek247於 2013年2月14日星期四UTC+8上午3時47分36秒寫道:
> I am using the windows api feature getasynckeystate() to check the status of every key pressed; like this;
>
>
>
> #always checking
>
> while(True):
>
> #iterate through list of ascii codes
>
> for num in range(0,127):
>
> #if ascii code key is being pressed
>
> if win32api.GetAsyncKeyState(num):
>
> #do stuff
>
>
>
> This works great, almost. The issue that comes up now is that every time i press a key, the code grabs two or three key presses.
>
>
>
> So i tried making sure that repeated keys weren't pressed repeatedly;
>
>
>
> #always checking
>
> while(True):
>
> #iterate through list of ascii codes
>
> for num in range(0,127):
>
> #if ascii code key is being pressed
>
> if win32api.GetAsyncKeyState(num):
>
> if oldkeychar == num:
>
> #don't do stuff
>
> else:
>
> #do stuff
>
>
>
> this works great, but It won't record stuff like 'look' or 'suffer' because it doesn't record repeated keys. So I try doing a delay instead;
>
>
>
> #always checking
>
> while(True):
>
> #iterate through list of ascii codes
>
> for num in range(0,127):
>
> #if ascii code key is being pressed
>
> if win32api.GetAsyncKeyState(num):
>
> if oldkeychar == num:
>
> if crrenttime > (time.time() - .5)
>
> #do stuff because key has been repeated, but not because it was held down
>
> else:
>
> #don't do stuff because key is pressed to soon
>
> else:
>
> #do stuff because key is not repeated
>
> currenttime = time.time()
>
>
>
> this almost works, but I end recording some double keypresses, and missing others. Does anybody have any suggestions?
I believe you can use the raw_input function in python.
But loop through strings ended by \r\n or \r.
More information about the Python-list
mailing list