This is not an answer for designing custom-looking keyboard buttons, but if you're content with attaching macros in scripts to the typical, regular buttons of a hard keyboard, I asked a question on superuser.com: How would you turn a tablet into a keyboard + easy-to-reach touchscreen (mirror the desktop) (not a touchpad) for a desktop PC?. You can do the following:
android-vnc-viewer to mirror the desktop PC screen, and control the desktop
I had another question on android.stackexchange.com: (In using a VNC to control a computer, is it possible to have the cursor go to where you touch? - android[dot]stackexchange[dot]com/questions/34668/in-using-a-vnc-to-control-a-computer-is-it-possible-to-have-the-cursor-go-to-wh)
In the question, I included a video: Remote control of Ubuntu with android-vnc-viewer - www.youtube.com/watch?v=sTKX6QMBgck#t=0m30s
“See and control your computer's desktop from your phone, from anywhere. androidVNC is the Open Source (GPL) remote desktop program for Android devices. Connects to most VNC servers: incl TightVNC, RealVNC on Win and Linux, x11vnc, and Apple Remote Desktop on OS/X.”.In the video, I don't know the input mode that is being demonstrated at 0:30, but it looks like the mouse cursor goes to where he touches.
I'm guessing that the input mode in the video was either:
Touch Mouse Pan and Zoomor:
This is the default input mode and is designed to work like the Android browser. You can both pan the display and control the mouse using the touchscreen and gestures. You pan by dragging or flicking on the touchscreen; you click the mouse by tapping on it. You right-click by double-tapping (or by holding down the camera button while tapping). You drag the mouse by doing a long press on the display, and then dragging. In this mode the trackball or DPad (if your phone has one) can also be used to control the mouse; this may give you finer control. You can zoom the screen size with the +/- buttons, or, if your device supports multi-touch and has Android 2.0+, you can pinch to zoom out and spread to zoom in.
Mouse Control ModePort forwarding
In this mode, use the touchscreen to control the mouse. Touching the screen generates a mouse click at that point; dragging on the screen creates a mouse drag. Keyboard events are sent as normal. The trackball is used to send arrow-key events to the VNC server. Pressing the trackball toggles between Mouse Pointer Control and Desktop Panning modes.
If the PC you're connecting to accesses the internet through a router, this will be the WAN address assigned to the router by your ISP; you'll also need to forward the VNC port (5900) from the router to your PC (exactly how you do this depends on the details of your router, so I can't give more explicit instructions here).Hacker's Keyboard - use a full soft keyboard on Android
From what I've read, the stock android keyboard doesn't have buttons such as Ctrl, Alt, Esc, arrow keys, Home, End, and Delete.
You can use the free, open source, app call Hacker's Keyboard to gain access to the buttons of a full keyboard:
“Are you missing the key layout you're used to from your computer? This keyboard has separate number keys, punctuation in the usual places, and arrow keys. It is based on the AOSP Gingerbread soft keyboard, so it supports multitouch for the modifier keys.http://code[dot]google[dot]com/p/hackerskeyboard/
This keyboard is especially useful if you use ConnectBot for SSH access. It provides working Tab/Ctrl/Esc keys, and the arrow keys are essential for devices such as the Xoom tablet or Nexus S that don't have a trackball or D-Pad.”
A patch that allows android-vnc-viewer to recognize all the keys of Hacker's Keyboard
In “Frequently Asked Questions” of Hacker's Keyboard, there's a section called “Android VNC Viewer doesn't recognize the extra keys”.
It directs you to an issue called “Issue 238: Support additional keys, fix modifier handling” (code.google.com/p/android-vnc-viewer/issues/detail?id=238). The patch there will make it so that Android VNC Viewer recognizes buttons of a full keyboard.