⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i18npthdr.c

📁 手写识别Chinput3.0.2源代码,可以在linux下开发手写板程序
💻 C
📖 第 1 页 / 共 4 页
字号:
    /*endif*/}static void UnsetICFocusMessageProc (XIMS ims,                                     IMProtocol *call_data,                                     unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec unset_ic_focus_fr[];    IMChangeFocusStruct *unsetfocus;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    unsetfocus = (IMChangeFocusStruct *) &call_data->changefocus;    fm = FrameMgrInit (unset_ic_focus_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, unsetfocus->icid);    FrameMgrFree (fm);    if (i18n_core->address.improto)    {        if (!(i18n_core->address.improto (ims, call_data)))            return;        /*endif*/    }    /*endif*/}static void DestroyICMessageProc (XIMS ims,                                  IMProtocol *call_data,                                  unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec destroy_ic_fr[];    extern XimFrameRec destroy_ic_reply_fr[];    register int total_size;    unsigned char *reply = NULL;    IMDestroyICStruct *destroy =        (IMDestroyICStruct *) &call_data->destroyic;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    fm = FrameMgrInit (destroy_ic_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, destroy->icid);    FrameMgrFree (fm);    if (i18n_core->address.improto)    {        if (!(i18n_core->address.improto (ims, call_data)))            return;        /*endif*/    }    /*endif*/        fm = FrameMgrInit (destroy_ic_reply_fr,                       NULL,                       _Xi18nNeedSwap (i18n_core, connect_id));    total_size = FrameMgrGetTotalSize (fm);    reply = (unsigned char *) malloc (total_size);    if (!reply)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, input_method_ID);    FrameMgrPutToken (fm, destroy->icid);    _Xi18nSendMessage (ims,                       connect_id,                       XIM_DESTROY_IC_REPLY,                       0,                       reply,                       total_size);    FrameMgrFree (fm);}static void ResetICMessageProc (XIMS ims,                                IMProtocol *call_data,                                unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec reset_ic_fr[];    extern XimFrameRec reset_ic_reply_fr[];    register int total_size;    unsigned char *reply = NULL;    IMResetICStruct *resetic =        (IMResetICStruct *) &call_data->resetic;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    fm = FrameMgrInit (reset_ic_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, resetic->icid);    FrameMgrFree (fm);    if (i18n_core->address.improto)    {        if (!(i18n_core->address.improto(ims, call_data)))            return;        /*endif*/    }    /*endif*/        /* create FrameMgr */    fm = FrameMgrInit (reset_ic_reply_fr,                       NULL,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* set length of STRING8 */    FrameMgrSetSize (fm, resetic->length);    total_size = FrameMgrGetTotalSize (fm);    reply = (unsigned char *) malloc (total_size);    if (!reply)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, input_method_ID);    FrameMgrPutToken (fm, resetic->icid);    FrameMgrPutToken (fm, resetic->commit_string);    _Xi18nSendMessage (ims,                       connect_id,                       XIM_RESET_IC_REPLY,                       0,                       reply,                       total_size);    FrameMgrFree (fm);}static int WireEventToEvent (Xi18n i18n_core,                             xEvent *event,                             CARD16 serial,                             XEvent *ev){    ev->xany.serial = event->u.u.sequenceNumber & ((unsigned long) 0xFFFF);    ev->xany.serial |= serial << 16;    ev->xany.send_event = False;    ev->xany.display = i18n_core->address.dpy;    switch (ev->type = event->u.u.type & 0x7F)    {    case KeyPress:    case KeyRelease:        ((XKeyEvent *) ev)->keycode = event->u.u.detail;        ((XKeyEvent *) ev)->window = event->u.keyButtonPointer.event;        ((XKeyEvent *) ev)->state = event->u.keyButtonPointer.state;        ((XKeyEvent *) ev)->time = event->u.keyButtonPointer.time;        ((XKeyEvent *) ev)->root = event->u.keyButtonPointer.root;        ((XKeyEvent *) ev)->x = event->u.keyButtonPointer.eventX;        ((XKeyEvent *) ev)->y = event->u.keyButtonPointer.eventY;        ((XKeyEvent *) ev)->x_root = 0;        ((XKeyEvent *) ev)->y_root = 0;        return True;    }    return False;}static void ForwardEventMessageProc (XIMS ims,                                     IMProtocol *call_data,                                     unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec forward_event_fr[];    xEvent wire_event;    IMForwardEventStruct *forward =        (IMForwardEventStruct*) &call_data->forwardevent;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    fm = FrameMgrInit (forward_event_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, forward->icid);    FrameMgrGetToken (fm, forward->sync_bit);    FrameMgrGetToken (fm, forward->serial_number);    p += sizeof (CARD16)*4;    memmove (&wire_event, p, sizeof (xEvent));    FrameMgrFree (fm);    if (WireEventToEvent (i18n_core,                          &wire_event,                          forward->serial_number,                          &forward->event) == True)    {        if (i18n_core->address.improto)        {            if (!(i18n_core->address.improto(ims, call_data)))                return;            /*endif*/        }        /*endif*/    }    /*endif*/}static void ExtForwardKeyEventMessageProc (XIMS ims,                                           IMProtocol *call_data,                                           unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec ext_forward_keyevent_fr[];    CARD8 type, keycode;    CARD16 state;    CARD32 ev_time, window;    IMForwardEventStruct *forward =        (IMForwardEventStruct *) &call_data->forwardevent;    XEvent *ev = (XEvent *) &forward->event;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    fm = FrameMgrInit (ext_forward_keyevent_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, forward->icid);    FrameMgrGetToken (fm, forward->sync_bit);    FrameMgrGetToken (fm, forward->serial_number);    FrameMgrGetToken (fm, type);    FrameMgrGetToken (fm, keycode);    FrameMgrGetToken (fm, state);    FrameMgrGetToken (fm, ev_time);    FrameMgrGetToken (fm, window);    FrameMgrFree (fm);    if (type != KeyPress)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return;    }    /*endif*/        /* make a faked keypress event */    ev->type = (int)type;    ev->xany.send_event = True;    ev->xany.display = i18n_core->address.dpy;    ev->xany.serial = (unsigned long) forward->serial_number;    ((XKeyEvent *) ev)->keycode = (unsigned int) keycode;    ((XKeyEvent *) ev)->state = (unsigned int) state;    ((XKeyEvent *) ev)->time = (Time) ev_time;    ((XKeyEvent *) ev)->window = (Window) window;    ((XKeyEvent *) ev)->root = DefaultRootWindow (ev->xany.display);    ((XKeyEvent *) ev)->x = 0;    ((XKeyEvent *) ev)->y = 0;    ((XKeyEvent *) ev)->x_root = 0;    ((XKeyEvent *) ev)->y_root = 0;    if (i18n_core->address.improto)    {        if (!(i18n_core->address.improto (ims, call_data)))            return;        /*endif*/    }    /*endif*/}static void ExtMoveMessageProc (XIMS ims,                                IMProtocol *call_data,                                unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec ext_move_fr[];    IMMoveStruct *extmove =        (IMMoveStruct*) & call_data->extmove;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    fm = FrameMgrInit (ext_move_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, extmove->icid);    FrameMgrGetToken (fm, extmove->x);    FrameMgrGetToken (fm, extmove->y);    FrameMgrFree (fm);    if (i18n_core->address.improto)    {        if (!(i18n_core->address.improto (ims, call_data)))            return;        /*endif*/    }    /*endif*/}static void ExtensionMessageProc (XIMS ims,                                  IMProtocol *call_data,                                  unsigned char *p){    switch (call_data->any.minor_code)    {    case XIM_EXT_FORWARD_KEYEVENT:        ExtForwardKeyEventMessageProc (ims, call_data, p);        break;    case XIM_EXT_MOVE:        ExtMoveMessageProc (ims, call_data, p);        break;    }    /*endswitch*/}static void TriggerNotifyMessageProc (XIMS ims,                                      IMProtocol *call_data,                                      unsigned char *p){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec trigger_notify_fr[], trigger_notify_reply_fr[];    register int total_size;    unsigned char *reply = NULL;    IMTriggerNotifyStruct *trigger =        (IMTriggerNotifyStruct *) &call_data->triggernotify;    CARD16 connect_id = call_data->any.connect_id;    CARD16 input_method_ID;    CARD32 flag;    fm = FrameMgrInit (trigger_notify_fr,                       (char *) p,                       _Xi18nNeedSwap (i18n_core, connect_id));    /* get data */    FrameMgrGetToken (fm, input_method_ID);    FrameMgrGetToken (fm, trigger->icid);    FrameMgrGetToken (fm, trigger->flag);    FrameMgrGetToken (fm, trigger->key_index);    FrameMgrGetToken (fm, trigger->event_mask);    /*      In order to support Front End Method, this event_mask must be saved      per clients so that it should be restored by an XIM_EXT_SET_EVENT_MASK      call when preediting mode is reset to off.     */    flag = trigger->flag;    FrameMgrFree (fm);    fm = FrameMgrInit (trigger_notify_reply_fr,                       NULL,                       _Xi18nNeedSwap (i18n_core, connect_id));     total_size = FrameMgrGetTotalSize (fm);    reply = (unsigned char *) malloc (total_size);    if (!reply)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, input_method_ID);    FrameMgrPutToken (fm, trigger->icid);    /* NOTE:       XIM_TRIGGER_NOTIFY_REPLY should be sent before XIM_SET_EVENT_MASK       in case of XIM_TRIGGER_NOTIFY(flag == ON), while it should be       sent after XIM_SET_EVENT_MASK in case of       XIM_TRIGGER_NOTIFY(flag == OFF).       */    if (flag == 0)    {        /* on key */        _Xi18nSendMessage (ims,                           connect_id,                           XIM_TRIGGER_NOTIFY_REPLY,                           0,                           reply,                           total_size);        IMPreeditStart (ims, (XPointer)call_data);    }    /*endif*/    if (i18n_core->address.improto)    {        if (!(i18n_core->address.improto(ims, call_data)))            return;        /*endif*/    }    /*endif*/    if (flag == 1)    {        /* off key */        IMPreeditEnd (ims, (XPointer) call_data);        _Xi18nSendMessage (ims,                           connect_id,                           XIM_TRIGGER_NOTIFY_REPLY,                           0,                           reply,                           total_size);    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -