I know why this happens but I don't know how to design the program to deal with it.
When a keystroke triggers a hotkey, Mojo takes some action. Then it has to decide whether to pass the keystroke to the operating system so the OS and other applications can take whatever actions they would normally take if the keystroke had not been redefined as a hotkey trigger.
(I said the other day that I don't like the word "pass" but in this case, Mojo really is allowing something to pass.)
By default, Mojo doesn't pass hotkey triggers to the operating system. Triggers have been redefined by the user to be commands to Mojo, and Mojo processes those commands, and that's the end of it.
When this happens, users often say that the hotkey program "swallowed" their keystrokes. This isn't right because they redefined the keystrokes themselves, and the keystrokes got processed.
But it's convenient to say the keystrokes get swallowed (you said eaten) so I'll say "swallowed" too.
Now, the thing is, sometimes the user wants the trigger to get swallowed and sometimes he doesn't. The way I handled this in HotkeyNet was with a keyword, <PassThrough>.
You're familiar with HotkeyNet so I 'll illustrate this with two examples from HotkeyNet's script language. We're talking about the difference between the two following hotkeys:
The first one would have the side effects you've reported here. The second one would not.Code:<Hotkey NumLock> <SetWindowBroadcast toggle> <Hotkey NumLock> <PassThrough> <SetWindowBroadcast toggle>
That's fine for HotkeyNet because everything's defined by the user in a script. But Mojo's supposed to be easier to use.
So the question here is, how to handle the issue of passthrough or not passthrough.
I would like to hide this decision from the user but I can't think of any way to do that, that would really work.
The only thing that occurs to me is to add it as a checkbox on the Set Trigger dialog. In this case, with this hotkey, when you make the trigger, you'd check "PassThrough."
Connect With Us