@chris fullmer said:
... suspend will tell you if the user has started using orbit or pan, ...
Really? That is news to me. (The API docs do not say this.)
AFAIK, a tool's suspend callback is called JUST BEFORE the tool becomes inactive, (so you can save stuff like your tool's state etc.,) and BEFORE the interruptor tool becomes active.
Also.. because the Sketchup::Tools collection does not have Enumerable mixed in (and an each method defined,) there is no way to non-destructively read the last tool on the stack, nor even iterate the stack.