I looked into making a virtual keyboard but it's pretty difficult due to the constraints of the SDK. You have no way of capturing key events from other applications and there is no way to hook into key events. You can easily make an application that displays a virtual keyboard but it will only be used for your application only. It will not be able to integrate with the browser, messaging, or dialer apps.