Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #38836

Re: Simulate Keyboard keypress Delay

Newsgroups comp.lang.python
Date 2013-02-13 16:45 -0800
References <79a6ab1c-d95e-45d9-ba0c-39fa68755e8c@googlegroups.com>
Message-ID <beb55b75-b796-4a7a-aa9e-7588abf14c6c@googlegroups.com> (permalink)
Subject Re: Simulate Keyboard keypress Delay
From 88888 Dihedral <dihedral88888@googlemail.com>

Show all headers | View raw


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.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Simulate Keyboard keypress Delay DaGeek247 <imageek247@gmail.com> - 2013-02-13 11:47 -0800
  Re: Simulate Keyboard keypress Delay Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-13 18:39 -0500
  Re: Simulate Keyboard keypress Delay 88888 Dihedral <dihedral88888@googlemail.com> - 2013-02-13 16:45 -0800
  Re: Simulate Keyboard keypress Delay inq1ltd <inq1ltd@inqvista.com> - 2013-02-14 11:04 -0500

csiph-web