[openi18n-im:01466] Re: key release issue with iiimxcf
Federic Zhang <[email protected]> Mon, 11 Jul 2005 13:42:20 +0800
| Newsgroups | gmane.comp.internationalization.input-methods |
|---|---|
| Message-ID | <[email protected]> |
Yes, the name space conflict is one area we need to take into consideration. Please commit. -federic > Date: Mon, 11 Jul 2005 11:46:29 +0800 > From: Federic Zhang <[email protected]>: > > > > To help LE developer, it's better for us to define one convenient MACRO > > in include/IMProtocolStruct.h to decide whether the key event is either > > press or release. For example, we can write it as following: > > > > #define IsKeyRelease(v) ((v)->modifier & IM_KEY_RELEASE_MASK) /* the > > type of 'v' is IMKeyEventStruct */ > > > > How do you think the suggestion? > > I think it's a good idea to have the macro. > > By the way, I'd like to suggest to follow the current > convention. Macros defined in IMProtocolStruct.h start with > "AM_" to avoid possible name space conflicts. And uppercase. > > #define IM_IS_KEY_RELEASE(v) ((v)->modifier & IM_KEY_RELEASE_MASK) > > Regards, > -- > kasha > > > > > -federic > > > > > > > Date: Fri, 08 Jul 2005 14:06:44 +0800 > > > From: Federic Zhang <[email protected]>: > > > > > > > > Thanks for your commit. Can you post it in patch format? It would be > > > > easier for me to take a look at it. > > > > > > This mail includes diffs for r2748. > > > > > > Thanks, > > > -- > > > kasha > > > > > > ------------------------------------------------------------------------ > > > r2748 | kasha | 2005-07-08 14:12:33 +0900 (Fri, 08 Jul 2005) | 3 lines > > > > > > fix LE.cpp - AUX events > > > fix libiiimp.so compatibility issue - KEYEVENT > > > > > > ------------------------------------------------------------------------ > > > Index: iiimsf/src/LE.cpp > > > =================================================================== > > > --- iiimsf/src/LE.cpp (revision 2747) > > > +++ iiimsf/src/LE.cpp (revision 2748) > > > @@ -459,14 +459,16 @@ > > > IMInputEvent* pimevent > > > ) > > > { > > > - IMKeyEventStruct *pkey; > > > +// IMKeyEventStruct *pkey; > > > > > > bind_imlexec(pimlex); > > > IMLock lock(get_leif_sync_object(), need_thread_lock_p()); > > > /* Assume that only one event will be sent at a time */ > > > - pkey = ((IMKeyListEvent *)pimevent)->keylist; > > > +// pkey = ((IMKeyListEvent *)pimevent)->keylist; > > > /* if KeyRelease is interested, send the release event. Otherwise, send only the press event */ > > > - if ((pkey && pkey->keyType == IM_KEY_PRESS) || pbase->iml_if->need_keyrelease) > > > +// if ((pkey && pkey->keyType == IM_KEY_PRESS) || pbase->iml_if->need_keyrelease) > > > + if ((IM_EventKeyList != pimevent->type) || > > > + (0 == (IM_KEY_RELEASE_MASK & pimevent->keylist.keylist->modifier))) > > > if_SendEvent(s, pimevent); > > > > > > return true; > > > Index: iiimsf/src/IIIMP_ICState.cpp > > > =================================================================== > > > --- iiimsf/src/IIIMP_ICState.cpp (revision 2747) > > > +++ iiimsf/src/IIIMP_ICState.cpp (revision 2748) > > > @@ -615,7 +615,6 @@ > > > kev.keyChar = piiimpkey->keychar; > > > kev.modifier = piiimpkey->modifier; > > > kev.time_stamp = piiimpkey->time_stamp; > > > - kev.keyType = piiimpkey->keytype; > > > keyvec.push_back(kev); > > > } > > > > > > @@ -710,7 +709,6 @@ > > > ikev.keychar = pkeyevent->keyChar; > > > ikev.modifier = pkeyevent->modifier; > > > ikev.time_stamp = pkeyevent->time_stamp; > > > - ikev.keytype = pkeyevent->keyType; > > > > > > IIIMP_keyevent_list *pikl = iiimp_keyevent_list_new(get_iiimptrans()->get_data_s(), > > > 1, &ikev); > > > Index: iiimsf/src/IMKeyUtils.cpp > > > =================================================================== > > > --- iiimsf/src/IMKeyUtils.cpp (revision 2747) > > > +++ iiimsf/src/IMKeyUtils.cpp (revision 2748) > > > @@ -55,22 +55,8 @@ > > > keychar = x_keychar; > > > modifier = x_modifier; > > > timestamp = x_timestamp; > > > - keytype = 1; /* set IM_KEY_PRESS by default */ > > > } > > > > > > -IMKeySpec::IMKeySpec(int x_keycode, > > > - int x_keychar, > > > - int x_modifier, > > > - int x_timestamp, > > > - int x_keytype) > > > -{ > > > - keycode = x_keycode; > > > - keychar = x_keychar; > > > - modifier = x_modifier; > > > - timestamp = x_timestamp; > > > - keytype = x_keytype; > > > -} > > > - > > > /******************************************************************************* > > > IMKeyParser (helper object to parse key symbols > > > *******************************************************************************/ > > > Index: iiimsf/src/ChangeLog > > > =================================================================== > > > --- iiimsf/src/ChangeLog (revision 2747) > > > +++ iiimsf/src/ChangeLog (revision 2748) > > > @@ -1,3 +1,19 @@ > > > +2005-07-08 AShiZaWa KaZuNoRi <[email protected]> > > > + > > > + * IIIMP_hotkey_profile.cpp (get_super_hotkeys): remove keytype for key release > > > + * IIIMP_IMState.cpp (send_trigger_keys): remove keytype for key release > > > + (set_data_to_client): add capability > > > + * IIIMP_hotkey.cpp: IIIMP_hotkey::forward_hotkey_to_LE() > > > + remove keytype for key release > > > + * IMKeyUtils.hh (class IMKeySpec): remove keytype for key release > > > + * IMKeyUtils.cpp (IMKeySpec): remove keytype for key release > > > + * IIIMP_ICState.cpp: remove keytype for key release > > > + * LE.cpp: LEContext::send_event() > > > + pkey = ((IMKeyListEvent *)pimevent)->keylist; > > > + if ((pkey && pkey->keyType == IM_KEY_PRESS) || pbase->iml_if->need_keyrelease) > > > + The code processes only key events, and ignores other events such > > > + as aux events. Breaks AUX. > > > + > > > 2005-07-07 AShiZaWa KaZuNoRi <[email protected]> > > > > > > * IIIMP_IMState.cpp (create_input_method_descriptors): call > > > Index: iiimsf/src/IMKeyUtils.hh > > > =================================================================== > > > --- iiimsf/src/IMKeyUtils.hh (revision 2747) > > > +++ iiimsf/src/IMKeyUtils.hh (revision 2748) > > > @@ -51,7 +51,6 @@ > > > int keychar; > > > int modifier; > > > int timestamp; > > > - int keytype; > > > public: > > > int get_keycode() const > > > { return keycode; } > > > @@ -61,21 +60,12 @@ > > > { return modifier; } > > > int get_timestamp() const > > > { return timestamp; } > > > - int get_keytype() const > > > - { return keytype; } > > > IMKeySpec( > > > int keycode, > > > int keychar, > > > int modifier, > > > int timestamp > > > ); > > > - IMKeySpec( > > > - int keycode, > > > - int keychar, > > > - int modifier, > > > - int timestamp, > > > - int keytype > > > - ); > > > }; > > > > > > typedef std::list<IMKeySpec> IMKeySpecList; > > > Index: iiimsf/src/IIIMP_hotkey.cpp > > > =================================================================== > > > --- iiimsf/src/IIIMP_hotkey.cpp (revision 2747) > > > +++ iiimsf/src/IIIMP_hotkey.cpp (revision 2748) > > > @@ -110,7 +110,6 @@ > > > kev.keyChar = it3->get_keychar(); > > > kev.modifier = it3->get_modifier(); > > > kev.time_stamp = it3->get_timestamp(); > > > - kev.keyType = it3->get_keytype(); > > > keyvec.push_back(kev); > > > > > > IMKeyListEvent *pimkey = &ev.keylist; > > > Index: iiimsf/src/IIIMP_IMState.cpp > > > =================================================================== > > > --- iiimsf/src/IIIMP_IMState.cpp (revision 2747) > > > +++ iiimsf/src/IIIMP_IMState.cpp (revision 2748) > > > @@ -114,7 +114,6 @@ > > > keys[i].keychar = it->get_keychar(); > > > keys[i].modifier = it->get_modifier(); > > > keys[i].time_stamp = it->get_timestamp(); > > > - keys[i].keytype = it->get_keytype(); > > > } > > > pion = iiimp_keyevent_list_new(pdata_s, i, keys); > > > pioff = iiimp_keyevent_list_new(pdata_s, i, keys); > > > @@ -614,7 +613,9 @@ > > > IIIMP_IMState_Identified:: > > > set_data_to_client() > > > { > > > - IIIMP_imattribute *pima, *pima_objdesc, *pima_imdesc; > > > + IIIMP_imattribute *pima, *pima_objdesc, *pima_imdesc, *pima_capability; > > > + IIIMP_card32_list * capability; > > > + IIIMP_card32 ca[1]; > > > > > > pima_objdesc = create_object_descriptors(); > > > > > > @@ -631,6 +632,20 @@ > > > pima = pima_imdesc; > > > } > > > > > > + ca[0] = 0; > > > + ca[0] |= IIIMP_CAPABILITY_FILE_OPERATION; > > > + ca[0] |= IIIMP_CAPABILITY_KEY_RELEASE; > > > + capability = iiimp_card32_list_new(get_iiimptrans()->get_data_s(), 1, ca); > > > + pima_capability = > > > + iiimp_imattribute_capability_new( > > > + get_iiimptrans()->get_data_s(), IIIMP_IMATTRIBUTE_CAPABILITY, > > > + 0, capability); > > > + if (NULL == pima) { > > > + pima = pima_capability; > > > + } else { > > > + pima->next = pima_capability; > > > + } > > > + > > > if (!send(iiimp_setimvalues_new(get_iiimptrans()->get_data_s(), > > > get_im_id(), pima), true)) > > > return false; > > > Index: iiimsf/src/IIIMP_hotkey_profile.cpp > > > =================================================================== > > > --- iiimsf/src/IIIMP_hotkey_profile.cpp (revision 2747) > > > +++ iiimsf/src/IIIMP_hotkey_profile.cpp (revision 2748) > > > @@ -79,13 +79,11 @@ > > > kev[n_keys].keyChar = 0; > > > kev[n_keys].modifier = IM_CTRL_MASK|IM_ALT_MASK; > > > kev[n_keys].time_stamp = 0; > > > - kev[n_keys].keyType = IM_KEY_PRESS; > > > n_keys++; > > > kev[n_keys].keyCode = IM_VK_SPACE; > > > kev[n_keys].keyChar = 0; > > > kev[n_keys].modifier = IM_CTRL_MASK|IM_SHIFT_MASK; > > > kev[n_keys].time_stamp = 0; > > > - kev[n_keys].keyType = IM_KEY_PRESS; > > > n_keys++; > > > > > > hks[n_hotkeys].label = strdup("LE SWITCH"); > > > @@ -103,7 +101,6 @@ > > > kev[n_keys].keyChar = it->get_keychar(); > > > kev[n_keys].modifier = it->get_modifier(); > > > kev[n_keys].time_stamp = it->get_timestamp(); > > > - kev[n_keys].keyType = it->get_keytype(); > > > } > > > > > > hks[n_hotkeys].label = strdup("TRIGGER KEYS"); > > > @@ -120,7 +117,6 @@ > > > kev[n_keys].keyChar = 0; > > > kev[n_keys].modifier = IM_SHIFT_MASK|IM_CTRL_MASK; > > > kev[n_keys].time_stamp = 0; > > > - kev[n_keys].keyType = IM_KEY_PRESS; > > > n_keys++; > > > > > > hks[n_hotkeys].label = strdup("CYCLE LE SWITCH"); > > > @@ -137,7 +133,6 @@ > > > kev[n_keys].keyChar = 0; > > > kev[n_keys].modifier = IM_SHIFT_MASK|IM_CTRL_MASK; > > > kev[n_keys].time_stamp = 0; > > > - kev[n_keys].keyType = IM_KEY_PRESS; > > > n_keys++; > > > > > > hks[n_hotkeys].label = strdup("CYCLE LE SWITCH(reverse)"); > > > @@ -356,7 +351,6 @@ > > > keys[j].keychar = it3->get_keychar(); > > > keys[j].modifier = it3->get_modifier(); > > > keys[j].time_stamp = it3->get_timestamp(); > > > - keys[j].keytype = it3->get_keytype(); > > > } > > > hk[i].hotkeylist = iiimp_keyevent_list_new(pdata_s, keylist->size(), keys); > > > delete[] keys; > > > Index: include/IMProtocolStruct.h > > > =================================================================== > > > --- include/IMProtocolStruct.h (revision 2747) > > > +++ include/IMProtocolStruct.h (revision 2748) > > > @@ -197,12 +197,13 @@ > > > #define IM_KEY_PRESS 1 > > > #define IM_KEY_RELEASE 0 > > > > > > +#define IM_KEY_RELEASE_MASK (0x80000000) > > > + > > > typedef struct _IMKeyEventStruct { > > > int keyCode; > > > int keyChar; > > > int modifier; > > > int time_stamp; > > > - int keyType; /* For Key Release Event Support */ > > > } IMKeyEventStruct, *IMKeyList; > > > > > > /* > > > Index: include/iiimcf.h > > > =================================================================== > > > --- include/iiimcf.h (revision 2747) > > > +++ include/iiimcf.h (revision 2748) > > > @@ -188,7 +188,6 @@ > > > IIIMP_int32 keychar; > > > IIIMP_int32 modifier; > > > IIIMP_int32 time_stamp; > > > - IIIMP_int32 keytype; /* For Key Release Event Support */ > > > }; > > > > > > /* Hotkeys */ > > > Index: include/ChangeLog > > > =================================================================== > > > --- include/ChangeLog (revision 2747) > > > +++ include/ChangeLog (revision 2748) > > > @@ -1,3 +1,17 @@ > > > +2005-07-08 AShiZaWa KaZuNoRi <[email protected]> > > > + > > > + * iiimp/iiimp-data.h (IIIMP_imattribute_value): remove keytype for key release > > > + (IIIMP_keyevent): remove keytype for key release > > > + (iiimp_imattribute_capability_new()): new > > > + (IIIMP_IMATTRIBUTE_CAPABILITY): new > > > + (IIIMP_CAPABILITY_ERROR): new > > > + (IIIMP_CAPABILITY_FILE_OPERATION): new > > > + (IIIMP_CAPABILITY_KEY_RELEASE): new > > > + > > > + * iiimcf.h (IIIMCF_keyevent): remove keytype for key release > > > + * IMProtocolStruct.h (IM_KEY_RELEASE_MASK): new > > > + (IMKeyEventStruct): remove keytype for key release > > > + > > > 2005-07-07 AShiZaWa KaZuNoRi <[email protected]> > > > > > > * iiimp/iiimp-data.h: IIIMP_imeinfo - editorial change > > > Index: include/iiimp/iiimp-data.h > > > =================================================================== > > > --- include/iiimp/iiimp-data.h (revision 2747) > > > +++ include/iiimp/iiimp-data.h (revision 2748) > > > @@ -216,6 +216,7 @@ > > > IIIMP_ccdef * ccdef; > > > IIIMP_jarfile_object * jarfile_object; > > > IIIMP_binaryfile_object * binaryfile_object; > > > + IIIMP_card32_list * capability; > > > } IIIMP_imattribute_value; > > > > > > struct iiimp_imattribute { > > > @@ -250,7 +251,6 @@ > > > IIIMP_int32 keychar; > > > IIIMP_int32 modifier; > > > IIIMP_int32 time_stamp; > > > - IIIMP_int32 keytype; /* For Key Release Event Support */ > > > } IIIMP_keyevent; > > > > > > typedef struct { > > > @@ -1754,6 +1754,13 @@ > > > IIIMP_card16 id_dyn, > > > IIIMP_binaryfile_object * value); > > > > > > +extern IIIMP_imattribute * > > > +iiimp_imattribute_capability_new( > > > + IIIMP_data_s * data_s, > > > + IIIMP_card16 id, > > > + IIIMP_card16 id_dyn, > > > + IIIMP_card32_list * value); > > > + > > > extern IIIMP_icattribute * > > > iiimp_icattribute_input_language_new( > > > IIIMP_data_s * data_s, > > > @@ -2871,8 +2878,16 @@ > > > #define IIIMP_IMATTRIBUTE_BINARY_LIGHT_WEIGHT_ENGINE_OBJECT (0x1034) > > > #define IIIMP_IMATTRIBUTE_SCRIPT_GUI_OBJECT (0x1035) > > > #define IIIMP_IMATTRIBUTE_SCRIPT_LIGHT_WEIGHT_ENGINE_OBJECT (0x1036) > > > +#define IIIMP_IMATTRIBUTE_CAPABILITY (0x1051) > > > > > > > > > +/* IIIMP capability */ > > > + > > > +#define IIIMP_CAPABILITY_ERROR (0x00000001) > > > +#define IIIMP_CAPABILITY_FILE_OPERATION (0x00000002) > > > +#define IIIMP_CAPABILITY_KEY_RELEASE (0x00000004) > > > + > > > + > > > /* IIIMP IM_LOOKUP_CHOICE_START */ > > > > > > /* lookup choice master */ > > > Index: lib/iiimcf/iiimcf.c > > > =================================================================== > > > --- lib/iiimcf/iiimcf.c (revision 2747) > > > +++ lib/iiimcf/iiimcf.c (revision 2748) > > > @@ -235,7 +235,6 @@ > > > pkev->keychar = pimk->keychar; > > > pkev->modifier = pimk->modifier; > > > pkev->time_stamp = pimk->time_stamp; > > > - pkev->keytype = pimk->keytype; > > > } > > > > > > ph->num_on_keys = i; > > > @@ -259,7 +258,6 @@ > > > pkev->keychar = pimk->keychar; > > > pkev->modifier = pimk->modifier; > > > pkev->time_stamp = pimk->time_stamp; > > > - pkev->keytype = pimk->keytype; > > > } > > > > > > ph->num_off_keys = i; > > > Index: lib/iiimcf/ChangeLog > > > =================================================================== > > > --- lib/iiimcf/ChangeLog (revision 2747) > > > +++ lib/iiimcf/ChangeLog (revision 2748) > > > @@ -1,3 +1,9 @@ > > > +2005-07-08 AShiZaWa KaZuNoRi <[email protected]> > > > + > > > + * event.c (forward_keyevent()): remove keytype for key release > > > + (iiimcf_receive_forwarded_event()): remove keytype for key release > > > + * iiimcf.c (iiimcf_register_trigger_keys()): remove keytype for key release > > > + > > > 2005-06-30 Federic Zhang <[email protected]> > > > > > > Enable Input Method Engine (IME) switching and display IME list in the language submenu of GIMLET > > > Index: lib/iiimcf/event.c > > > =================================================================== > > > --- lib/iiimcf/event.c (revision 2747) > > > +++ lib/iiimcf/event.c (revision 2748) > > > @@ -405,7 +405,6 @@ > > > ikev.keychar = pk->keychar; > > > ikev.modifier = pk->modifier; > > > ikev.time_stamp = pk->time_stamp; > > > - ikev.keytype = pk->keytype; > > > > > > pikl = iiimp_keyevent_list_new(pds, 1, &ikev); > > > if (!pikl) return IIIMF_STATUS_MALLOC; > > > @@ -567,7 +566,6 @@ > > > kev.keychar = pimkev->keychar; > > > kev.modifier = pimkev->modifier; > > > kev.time_stamp = pimkev->time_stamp; > > > - kev.keytype = pimkev->keytype; > > > st = iiimcf_create_keyevent(&kev, (IIIMCF_event*) &pev); > > > if (st != IIIMF_STATUS_SUCCESS) return st; > > > st = iiimcf_store_event(pc, pev); > > > Index: lib/iiimp/ChangeLog > > > =================================================================== > > > --- lib/iiimp/ChangeLog (revision 2747) > > > +++ lib/iiimp/ChangeLog (revision 2748) > > > @@ -1,3 +1,17 @@ > > > +2005-07-08 AShiZaWa KaZuNoRi <[email protected]> > > > + > > > + * data/comp-keyevent.c (iiimp_keyevent_list_new): revert keytype > > > + (iiimp_keyevent_list_pack): remove keytype for key release > > > + (iiimp_keyevent_list_unpack): remove keytype for key release > > > + * data/comp-imattribute.c (iiimp_imattribute_new): add capability > > > + (iiimp_imattribute_delete): add capability > > > + (iiimp_imattribute_capability_new): new > > > + (iiimp_imattribute_pack): add capability > > > + (iiimp_imattribute_unpack): add capability > > > + (iiimp_imattribute_print): add capability > > > + * data/iiimp-dataP.h (KEY_EVENT_OBJECT_SIZE): revert > > > + editorial change > > > + > > > 2005-07-07 AShiZaWa KaZuNoRi <[email protected]> > > > > > > * data/comp-inputmethod-descriptor.c > > > Index: lib/iiimp/data/iiimp-dataP.h > > > =================================================================== > > > --- lib/iiimp/data/iiimp-dataP.h (revision 2747) > > > +++ lib/iiimp/data/iiimp-dataP.h (revision 2748) > > > @@ -367,7 +367,7 @@ > > > } while(0) > > > > > > > > > -#define KEY_EVENT_OBJECT_SIZE (4 * 5) /* Additional one for the new keytype member */ > > > +#define KEY_EVENT_OBJECT_SIZE (4 * 4) > > > > > > > > > typedef struct iiimp_attribute_id { > > > @@ -376,6 +376,7 @@ > > > struct iiimp_attribute_id * next; > > > } IIIMP_attribute_id; > > > > > > + > > > struct iiimp_data_s { > > > int byte_swap; > > > IIIMP_attribute_id * attribute_id; > > > Index: lib/iiimp/data/comp-imattribute.c > > > =================================================================== > > > --- lib/iiimp/data/comp-imattribute.c (revision 2747) > > > +++ lib/iiimp/data/comp-imattribute.c (revision 2748) > > > @@ -73,6 +73,9 @@ > > > case IIIMP_IMATTRIBUTE_SCRIPT_LIGHT_WEIGHT_ENGINE_OBJECT: > > > attr->value_nbyte = attr->value.binaryfile_object->nbyte; > > > break; > > > + case IIIMP_IMATTRIBUTE_CAPABILITY: > > > + attr->value_nbyte = attr->value.capability->nbyte; > > > + break; > > > } > > > > > > attr->nbyte += (attr->value_nbyte + PAD(attr->value_nbyte)); > > > @@ -109,6 +112,9 @@ > > > case IIIMP_IMATTRIBUTE_SCRIPT_LIGHT_WEIGHT_ENGINE_OBJECT: > > > iiimp_binaryfile_object_delete(data_s, attr->value.binaryfile_object); > > > break; > > > + case IIIMP_IMATTRIBUTE_CAPABILITY: > > > + iiimp_card32_list_delete(data_s, attr->value.capability); > > > + break; > > > } > > > free(attr); > > > > > > @@ -258,6 +264,19 @@ > > > } > > > > > > > > > +IIIMP_imattribute * > > > +iiimp_imattribute_capability_new( > > > + IIIMP_data_s * data_s, > > > + IIIMP_card16 id, > > > + IIIMP_card16 id_dyn, > > > + IIIMP_card32_list * value) > > > +{ > > > + return iiimp_imattribute_new(data_s, id, > > > + IIIMP_IMATTRIBUTE_CAPABILITY, > > > + id_dyn, (void *)value); > > > +} > > > + > > > + > > > void > > > iiimp_imattribute_pack( > > > IIIMP_data_s * data_s, > > > @@ -304,6 +323,9 @@ > > > iiimp_binaryfile_object_pack(data_s, m->value.binaryfile_object, > > > &rest, &p); > > > break; > > > + case IIIMP_IMATTRIBUTE_CAPABILITY: > > > + iiimp_card32_list_pack(data_s, m->value.capability, &rest, &p); > > > + break; > > > } > > > > > > *nbyte = rest; > > > @@ -423,6 +445,10 @@ > > > attr->value.binaryfile_object = > > > iiimp_binaryfile_object_unpack(data_s, &rest2, &p, rest2); > > > break; > > > + case IIIMP_IMATTRIBUTE_CAPABILITY: > > > + attr->value.capability = iiimp_card32_list_unpack(data_s, &rest2, > > > + &p, rest2); > > > + break; > > > default: > > > attr->value.any = NULL; > > > data_s->status = IIIMP_DATA_INVALID; > > > @@ -541,6 +567,10 @@ > > > "\tSCRIPT Light Weight Engine Object:\n"); > > > iiimp_binaryfile_object_print(data_s, m->value.binaryfile_object); > > > break; > > > + case IIIMP_IMATTRIBUTE_CAPABILITY: > > > + (void)fprintf(data_s->print_fp, "\tCapability:\n"); > > > + iiimp_card32_list_print(data_s, m->value.capability); > > > + break; > > > } > > > } > > > > > > Index: lib/iiimp/data/comp-keyevent.c > > > =================================================================== > > > --- lib/iiimp/data/comp-keyevent.c (revision 2747) > > > +++ lib/iiimp/data/comp-keyevent.c (revision 2748) > > > @@ -26,7 +26,7 @@ > > > return NULL; > > > } > > > > > > - nbyte = ((4 + 4 + 4 + 4 + 4) * count); /* keytype is expected */ > > > + nbyte = ((4 + 4 + 4 + 4) * count); > > > > > > data->nbyte = nbyte; > > > data->count = count; > > > @@ -81,7 +81,6 @@ > > > PUT32((m->keyevent + i)->keychar, rest, p, data_s->byte_swap); > > > PUT32((m->keyevent + i)->modifier, rest, p, data_s->byte_swap); > > > PUT32((m->keyevent + i)->time_stamp, rest, p, data_s->byte_swap); > > > - PUT32((m->keyevent + i)->keytype, rest, p, data_s->byte_swap); > > > } > > > > > > *nbyte = rest; > > > @@ -143,7 +142,6 @@ > > > GET32((l->keyevent + i)->keychar, rest, p, data_s->byte_swap); > > > GET32((l->keyevent + i)->modifier, rest, p, data_s->byte_swap); > > > GET32((l->keyevent + i)->time_stamp, rest, p, data_s->byte_swap); > > > - GET32((l->keyevent + i)->keytype, rest, p, data_s->byte_swap); > > > } > > > > > > /* This failed for the scenario of having multiple HOTKEYS and each > > > Index: iiimgcf/ChangeLog > > > =================================================================== > > > --- iiimgcf/ChangeLog (revision 2747) > > > +++ iiimgcf/ChangeLog (revision 2748) > > > @@ -1,3 +1,8 @@ > > > +2005-07-08 AShiZaWa KaZuNoRi <[email protected]> > > > + > > > + * IIIMGdkEventKey.c (convert_GdkEventKey_to_IIIMCF_keyevent): > > > + remove keytype for key release > > > + > > > 2005-06-30 Federic Zhang <[email protected]> > > > > > > Enable Input Method Engine (IME) switching and display IME list in the language submenu of GIMLET. > > > Index: iiimgcf/IIIMGdkEventKey.c > > > =================================================================== > > > --- iiimgcf/IIIMGdkEventKey.c (revision 2747) > > > +++ iiimgcf/IIIMGdkEventKey.c (revision 2748) > > > @@ -817,8 +817,9 @@ > > > { > > > int c; > > > guint keyval; > > > + int key_release; > > > > > > - pkev->keytype = e->type == GDK_KEY_PRESS; > > > + key_release = ((e->type == GDK_KEY_PRESS) ? 0 : 0x80000000); > > > > > > #if USE_KANA_TABLE > > > gint kanaflag; > > > @@ -844,7 +845,7 @@ > > > pkev->keychar = kana_shift_keymapTable[i].iiimf_keychar; > > > if (pkev->keycode) > > > { > > > - pkev->modifier = modifier (e->state); > > > + pkev->modifier = (modifier (e->state) | key_release); > > > pkev->time_stamp = e->time; > > > return IIIMF_STATUS_SUCCESS; > > > } > > > @@ -861,7 +862,7 @@ > > > pkev->keychar = kana_normal_keymapTable[i].iiimf_keychar; > > > if (pkev->keycode) > > > { > > > - pkev->modifier = modifier (e->state); > > > + pkev->modifier = (modifier (e->state) | key_release); > > > pkev->time_stamp = e->time; > > > return IIIMF_STATUS_SUCCESS; > > > } > > > @@ -877,7 +878,7 @@ > > > pkev->keychar = kana_shift_keymapTable[i].iiimf_keychar; > > > if (pkev->keycode) > > > { > > > - pkev->modifier = modifier (e->state); > > > + pkev->modifier = (modifier (e->state) | key_release); > > > pkev->time_stamp = e->time; > > > return IIIMF_STATUS_SUCCESS; > > > } > > > @@ -895,7 +896,7 @@ > > > pkev->keychar = kana_normal_keymapTable[i].iiimf_keychar; > > > if (pkev->keycode) > > > { > > > - pkev->modifier = modifier (e->state); > > > + pkev->modifier = (modifier (e->state) | key_release); > > > pkev->time_stamp = e->time; > > > return IIIMF_STATUS_SUCCESS; > > > } > > > @@ -911,7 +912,7 @@ > > > pkev->keychar = kana_normal_keymapTable[i].iiimf_keychar; > > > if (pkev->keycode) > > > { > > > - pkev->modifier = modifier (e->state); > > > + pkev->modifier = (modifier (e->state) | key_release); > > > pkev->time_stamp = e->time; > > > return IIIMF_STATUS_SUCCESS; > > > } > > > @@ -958,7 +959,7 @@ > > > pkev->keychar = gdk_keyval_to_unicode (e->keyval); > > > pkev->keycode = c; > > > } > > > - pkev->modifier = modifier (e->state); > > > + pkev->modifier = (modifier (e->state) | key_release); > > > > > > pkev->time_stamp = e->time;