I posted, then I sent a copy to Mark and then I actually started thinking about it. Your last idea is what I came up with as well. I was getting a little confused by two different pieces of hardware I've used and forgot that this functionality is something I'd only like applied to the hardware I described in the original post (it has a unique up event).

1. So, as soon as the button is pressed, start a timer and produce no action.
2. If the up event is received before the timer expires, cancel the timer and execute the short action.
3. If the up event is not received before the timer expires, perform the long action.

That's the basic premise. Any additional subtletly would likely be a product of the specific action being performed by the button. For instance, a fast-forward on long press should continue to fast forward until an UP event. But it would also be feasible to have a single-shot command such as next track be assigned to a long-press as well with no repeat property. So that action is triggered in step 3 above and that's it. The subsequent up event does nothing else and continuing to hold it also does nothing else.

I came back online to delete or add to my original post because I felt a little silly after overlooking what ended up being such a simple set of basic steps to start with.

Bruno
_________________________
Bruno
Twisted Melon : Fine Mac OS Software