Type Name: ObjectID Desc: It is a String to identify a dbus object. Like: "object_path@bus_name" Bus Name: org.freedesktop.IM Name: IDirectory Path: /org/freedesktop/IM/Directory It is responeible for maintain all object in the virtual objects tree. Methods: void register_object (String object_path) void register_objects (String *object_path_array) void deregister_object (String object_path) void deregister_object (String object_path) void deregisters_object (String *object_path_array) ObjectID *list_objects (String dirname) Return Object_ids in a folder specified by argument dirname Signals: directory_changed (String dirname) Name: IManager Path: /org/freedesktop/IM/Manager Manager is responsible for managering all engines & im clients. Methods: void register_client (String client_name) register the client (the caller) to the Manager, the client_name is a readable name of client. It do not specify it, manager will use caller's bus_name. void deregister_client () deregister the client (the caller) in the Manager. The manager should release resources hold by the client. void set_client_name () Set a associated name for the client (the caller). Like: gedit-pid String *get_hotkeys () Retrun a String array. Each string in the array is a hotkey. When user press the hotkeys, client should send the hotket's index in this array to the manager. void focus_in () Tell the manager the client (the caller) request focus in. The current focused client will be focus out. void focus_out () Tell the manager the client (the caller) request focus out. String get_focused_client () Signals: focus_changed (String client_name, String engine_path) Name: IFactory Name: IEngineFactory Name: IEngine Methods: boolean filter_keypress (unsigned int state, unsigned int keyval, boolean is_press) void focus_in () void focus_out () void reset () ??void set_set_client_window (int window_id) void set_cursor_position (int x, int y) void set_use_preedit (boolean use_preedit) void set_surrounding (String text, int cursor_index) Signal: commit (String commit_string) preedit_start () preedit_end () preedit_changed (String preedit_string, Attribute *attrs) retrieve_surrounding () delete_surrounding (int offset, int n_chars)