Maliit provides a flexible and cross-platform input method framework, including a virtual keyboard.
It has a plugin-based client-server architecture where applications act as clients and communicate with the Maliit server via input context plugins.
Maliit is an open source framework (LGPL 2) with open source plugins (BSD). There are also proprietary plugins. It runs on most GNU/Linux distributions.