| Index: src/IBusChewingEngine-keys.c
|
| diff --git a/src/IBusChewingEngine-keys.c b/src/IBusChewingEngine-keys.c
|
| index e9d52354b65c1ad842fa826fcb89df0935f2dba3..98d4e1bbbbc3d891d156e764f459cdac2f3df721 100644
|
| --- a/src/IBusChewingEngine-keys.c
|
| +++ b/src/IBusChewingEngine-keys.c
|
| @@ -41,13 +41,19 @@ gboolean ibus_chewing_engine_process_key_event(IBusEngine *engine,
|
| chewing_handle_Enter(self->context);
|
| break;
|
| case IBUS_Escape:
|
| + if (self->inputMode==CHEWING_INPUT_MODE_BYPASS)
|
| + return FALSE;
|
| chewing_handle_Esc(self->context);
|
| break;
|
| case IBUS_BackSpace:
|
| + if (self->inputMode==CHEWING_INPUT_MODE_BYPASS)
|
| + return FALSE;
|
| chewing_handle_Backspace(self->context);
|
| break;
|
| case IBUS_Delete:
|
| case IBUS_KP_Delete:
|
| + if (self->inputMode==CHEWING_INPUT_MODE_BYPASS)
|
| + return FALSE;
|
| chewing_handle_Del(self->context);
|
| break;
|
| case IBUS_space:
|
| @@ -56,7 +62,8 @@ gboolean ibus_chewing_engine_process_key_event(IBusEngine *engine,
|
| * Fix for space in Temporary mode.
|
| */
|
| chewing_handle_Space(self->context);
|
| - if (self->inputMode==CHEWING_INPUT_MODE_SELECTING_DONE)
|
| + if (self->inputMode==CHEWING_INPUT_MODE_SELECTING_DONE ||
|
| + self->inputMode==CHEWING_INPUT_MODE_BYPASS )
|
| ibus_chewing_engine_set_status_flag(self,ENGINE_STATUS_NEED_COMMIT);
|
| break;
|
| case IBUS_Page_Up:
|
| @@ -113,6 +120,12 @@ gboolean ibus_chewing_engine_process_key_event(IBusEngine *engine,
|
| chewing_handle_Tab(self->context);
|
| break;
|
| case IBUS_Caps_Lock:
|
| + /* When Chi->Eng with incomplete character */
|
| + if (chewing_get_ChiEngMode(self->context) && !chewing_zuin_Check(self->context)){
|
| + /* chewing_zuin_Check==0 means incomplete character */
|
| + /* Send a space to finish the character */
|
| + chewing_handle_Space(self->context);
|
| + }
|
| chewing_handle_Capslock(self->context);
|
| self_refresh_property(self,"chewing_chieng_prop");
|
| break;
|
| @@ -146,8 +159,17 @@ gboolean ibus_chewing_engine_process_key_event(IBusEngine *engine,
|
| chewing_handle_ShiftRight(self->context);
|
| break;
|
| case IBUS_Up:
|
| - return FALSE;
|
| + case IBUS_KP_Up:
|
| case IBUS_Down:
|
| + case IBUS_KP_Down:
|
| + case IBUS_Page_Up:
|
| + case IBUS_KP_Page_Up:
|
| + case IBUS_Page_Down:
|
| + case IBUS_KP_Page_Down:
|
| + case IBUS_Home:
|
| + case IBUS_End:
|
| + if (self->_priv->statusFlags & ENGINE_STATUS_NEED_COMMIT)
|
| + self_force_commit(self);
|
| return FALSE;
|
| case IBUS_space:
|
| case IBUS_KP_Space:
|
| @@ -176,4 +198,3 @@ gboolean ibus_chewing_engine_process_key_event(IBusEngine *engine,
|
| }
|
| return self_update(self);
|
| }
|
| -
|
|
|