int hime_ProtoHandler(XIMS ims, IMProtocol *call_data) { // dbg("hime_ProtoHandler %x ims\n", ims); current_ims = ims; switch (call_data->major_code) { case XIM_OPEN: #define MAX_CONNECT 20000 { IMOpenStruct *pimopen=(IMOpenStruct *)call_data; if(pimopen->connect_id > MAX_CONNECT - 1) return True; #if DEBUG && 0 dbg("open lang %s connectid:%d\n", pimopen->lang.name, pimopen->connect_id); #endif return True; } case XIM_CLOSE: #if DEBUG && 0 dbg("XIM_CLOSE\n"); #endif return True; case XIM_CREATE_IC: #if DEBUG && 0 dbg("CREATE_IC\n"); #endif CreateIC((IMChangeICStruct *)call_data); return True; case XIM_DESTROY_IC: { IMChangeICStruct *pimcha=(IMChangeICStruct *)call_data; #if DEBUG && 0 dbg("DESTROY_IC %d\n", pimcha->icid); #endif DeleteIC(pimcha->icid); } return True; case XIM_SET_IC_VALUES: #if DEBUG && 0 dbg("SET_IC\n"); #endif SetIC((IMChangeICStruct *)call_data); return True; case XIM_GET_IC_VALUES: #if DEBUG && 0 dbg("GET_IC\n"); #endif GetIC((IMChangeICStruct *)call_data); return True; case XIM_FORWARD_EVENT: #if DEBUG && 0 dbg("XIM_FORWARD_EVENT\n"); #endif return xim_ForwardEventHandler((IMForwardEventStruct *)call_data); case XIM_SET_IC_FOCUS: #if DEBUG && 0 dbg("XIM_SET_IC_FOCUS\n"); #endif return xim_hime_FocusIn((IMChangeFocusStruct *)call_data); case XIM_UNSET_IC_FOCUS: #if DEBUG && 0 dbg("XIM_UNSET_IC_FOCUS\n"); #endif return xim_hime_FocusOut((IMChangeFocusStruct *)call_data); case XIM_RESET_IC: #if DEBUG && 0 dbg("XIM_UNSET_IC_FOCUS\n"); #endif return True; case XIM_TRIGGER_NOTIFY: #if DEBUG && 0 dbg("XIM_TRIGGER_NOTIFY\n"); #endif MyTriggerNotifyHandler((IMTriggerNotifyStruct *)call_data); return True; case XIM_PREEDIT_START_REPLY: #if DEBUG && 1 dbg("XIM_PREEDIT_START_REPLY\n"); #endif return True; case XIM_PREEDIT_CARET_REPLY: #if DEBUG && 1 dbg("XIM_PREEDIT_CARET_REPLY\n"); #endif return True; case XIM_STR_CONVERSION_REPLY: #if DEBUG && 1 dbg("XIM_STR_CONVERSION_REPLY\n"); #endif return True; default: printf("Unknown major code.\n"); break; } return True; }
Bool MyProtoHandler (XIMS _ims, IMProtocol * call_data) { switch (call_data->major_code) { case XIM_OPEN: #ifdef _DEBUG printf ("XIM_OPEN:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyOpenHandler ((IMOpenStruct *) call_data); case XIM_CLOSE: #ifdef _DEBUG printf ("XIM_CLOSE:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyCloseHandler ((IMOpenStruct *) call_data); case XIM_CREATE_IC: #ifdef _DEBUG printf ("XIM_CREATE_IC:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyCreateICHandler ((IMChangeICStruct *) call_data); case XIM_DESTROY_IC: #ifdef _DEBUG printf ("XIM_DESTROY_IC:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyDestroyICHandler ((IMChangeICStruct *) call_data); case XIM_SET_IC_VALUES: #ifdef _DEBUG printf ("XIM_SET_IC_VALUES:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MySetICValuesHandler ((IMChangeICStruct *) call_data); case XIM_GET_IC_VALUES: #ifdef _DEBUG printf ("XIM_GET_IC_VALUES:\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyGetICValuesHandler ((IMChangeICStruct *) call_data); case XIM_FORWARD_EVENT: #ifdef _DEBUG printf ("XIM_FORWARD_EVENT:\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif ProcessKey ((IMForwardEventStruct *) call_data); return True; case XIM_SET_IC_FOCUS: #ifdef _DEBUG printf ("XIM_SET_IC_FOCUS:\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MySetFocusHandler ((IMChangeFocusStruct *) call_data); case XIM_UNSET_IC_FOCUS: #ifdef _DEBUG printf ("XIM_UNSET_IC_FOCUS:\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyUnsetFocusHandler ((IMChangeICStruct *) call_data);; case XIM_RESET_IC: #ifdef _DEBUG printf ("XIM_RESET_IC:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return True; case XIM_TRIGGER_NOTIFY: #ifdef _DEBUG printf ("XIM_TRIGGER_NOTIFY:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return MyTriggerNotifyHandler ((IMTriggerNotifyStruct *) call_data); default: #ifdef _DEBUG printf ("XIM_DEFAULT:\t\ticid=%d\tconnect_id=%d\n", ((IMForwardEventStruct *) call_data)->icid, ((IMForwardEventStruct *) call_data)->connect_id); #endif return True; } }