[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Re: using message loop for hotkey capturing

Alex Hall

3/24/2010 10:48:00 AM

Thanks, it seems to be working for now... Hopefully that trend continues!

On 3/24/10, Tim Golden <mail@timgolden.me.uk> wrote:
> On 23/03/2010 17:01, Alex Hall wrote:
>> Hi all, but mainly Tim Golden:
>> Tim, I am using your wonderful message loop for keyboard input, the
>> one on your site that you pointed me to a few months ago. It has been
>> working perfectly as long as I had only one dictionary of keys mapping
>> to one dictionary of functions, but now I want two of each. My program
>> has different modes, which may have varying keystrokes, and I also
>> have some global keystrokes which are the same across all modes, like
>> exiting or switching modes. I cannot figure out how to make the
>> message loop look in two dictionaries at onc. I tried using an if,
>> saying that if action_to_take was not set in the mode-specific
>> dictionary then look at the global dictionary, but it is like it is
>> never looking in the global dictionary at all. I get no syntax errors
>> or problems when running the program, so it has to be something in my
>> logic.
>
> There's definitely some confusion, as MRAB picked up, with the
> globalkeys / globalfuncs thing. I can see no problem with simply
> defining an additional pair of dictionaries parallel with each of
> the keys/funcs dictionaries (note that the numbers are different
> from those of othe other dictionaries as these are the registration
> ids of the hotkeys):
>
> global_keys = {
> 100: (68, win32com.MOD_ALT | win32con.MOD_CONTROL ...),
> ...
> }
>
> global_funcs = {
> 100 : dict.ShowLookupDialog,
> ...
> }
>
> Then your central action code could be something like:
>
> action_to_take = global_funcs.get (msg.wParam) or HOTKEY_ACTIONS.get
> (msg.wParam)
> if action_to_take:
> action_to_take ()
>
> This assumes that the funcs dictionaries will only ever contain a
> valid function, so the only possible Falsish value will arise from
> the get returning None.
>
> TJG
>
> BTW, you're shadowing a couple of builtins: global & dict which
> might give you problems later if you needed them. There are other
> issues with the structure of your code but nothing a little
> refactoring couldn't sort out if you felt so inclined.
> --
> http://mail.python.org/mailman/listinfo/p...
>


--
Have a great day,
Alex (msg sent from GMail website)
mehgcap@gmail.com; http://www.facebook.c...