I want to be able to capture key events inside a service I am writing. I can do this inside an activity without problems, but all my attemps to get this working in a service
Yes, Android's activities only receives KeyEvents when they have focus.
The only way to "globally" capture a back button press is creating an InputMethod so you can intercept hard key events.
Remember that using your own InputMethod will not allow you to use custom keyboards like Swiftkey for instance.
Did you try to reach HTC on this issue?