eekboard - a virtual keyboard for GNOME -*- outline -*- eekboard is a virtual keyboard software package which ships with a standalone virtual keyboard application ("eekboard"), and a library to create keyboard-like UI ("libeek"). *NOTE* eekboard is still under heavy development. The code has still a lot of bugs and lacks documentation. * How to test $ sudo apt-get install libclutter-gtk-0.10-dev libxklavier-dev \ libfakekey-dev python $ git clone git://github.com/ueno/eekboard.git $ cd eekboard $ ./autogen.sh --prefix=/usr --enable-gtk-doc $ make $ sudo make install $ eekboard * libeek API (not fixed) Since libeek is designed as simple as possible, it provides only two kinds of objects. One is "keyboard element" and another is "keyboard layout engine". A keyboard element represents either a keyboard, a section, or a key. Each element implements the Builder pattern[1] so that it can be converted into a UI widget (ClutterActor, GtkDrawingArea, ...). A layout engine arranges keyboard elements using information from external configuration mechanisms (libxklavier, XKB, matchbox-keyboard layouts in XML, ...) Here is a sample code which utilizes Clutter keyboard elements and libxklavier layout engine: 1: EekKeyboard *keyboard; 2: EekLayout *layout; 3: 4: /* Create a keyboard layout using libxklavier configuration. */ 5: layout = eek_xkl_layout_new (); 6: 7: /* Create a keyboard implemented as ClutterActor. */ 8: keyboard = eek_clutter_keyboard_new (640, 480); 9: 10: /* Apply the layout to the keyboard. */ 11: eek_keyboard_set_layout (keyboard, layout); 12: 13: clutter_group_add (CLUTTER_GROUP(stage), 14: eek_clutter_keyboard_get_actor (EEK_CLUTTER_KEYBOARD(keyboard))); Footnotes: [1] http://en.wikipedia.org/wiki/Builder_pattern