dvoraksip in the SDK does send escape keys (most complete keyboard I've seen, sends ctrl, alt, win key, has backspace and delete etc). But it helps if you can type using dvorak!
You could write a program to send custom keystrokes. I wrote a program once upon a time to send any keycode to current app, and this could be assigned to a hardware key etc. But it's a bit of a waste of a hardware key.