Development notes for SCIM ========================== If you want to write your own input method with SCIM, you should implement three classes, BackEnd, IMEngineFactory and IMEngineInstance: * BackEnd Manage all of the IMEngineFactory objects in order to let FrontEnd use them. See src/scim_backend.* to learn how to implement it. * IMEngineFactory An input method has one IMEngineFactory objects which manages all of the IMEngineInstance objects that FrontEnd requests to create. If there are any global data which should be shared among all IMEngineInstances, such as phrase library etc.,they should be put into IMEngineFactory and only transfer the pointer to IMEngineInstance. See src/scim_imengine.* and modules/IMEngine/* to learn how to implement it. * IMEngineInstance The real keyevents -> strings conversion work is done by this class. The keyevents fired by client program will be transported to IMEngineInstance by calling IMEngineInstance::process_key_event (...) from FrontEnd. IMEngineInstance objects should process these key events and make response to FrontEnd by calling base class functions show_preedit_string, update_preedit_string etc. See modules/IMEngine/* to learn how to implement it.