>>First, I must modify all the classes.
No, you don't have to do this. Set FORM.KEYPREVIEW = .T., add a Timer, who is just adding up a FormProperty. In the FORM.KEYPRESS you now can reset this Property whenever the user pressed a key.
With the KEYPREVIEW activated, the FORM get's the Keypress before it is routed to the "real" objects.
wOOdy
"*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.Visual FoxPro: It's magic !
(¸.·``··*