Hi there, I've worked a bit on GetMouse(), and I think it's now more or less correct. It still doesn't work correctly, but this time it's probably the app_server's fault, as we only rarely get _UPDATE_ messages. The only notably difference to the previous version (when used with the playground test app) is that the BButton is redrawn once during a click, unfortunately, still in unpressed state. As I don't know a whole lot about the drawing stuff, I have no idea how to get the app_server to send _UPDATE_ more often. If I change BControl::SetValue() to use Draw() instead of Invalidate() (which is not really okay but works) I at least see a flash of an inverted BButton, but it doesn't last for long. The messages that GetMouse() gets are correct, so the app_server seems to be the culprit. BTW in case of B_ASYNCHRONOUS_CONTROLS, there is probably no need to call Invalidate() in BControl::SetValue(). Bye, Axel.