}
}
+static bool _check_remote_input_finished (const uint32 keycode, const bool pressed, const bool fake)
+{
+ if (pressed == false && fake == true && (keycode == SCIM_KEY_Select || keycode == SCIM_KEY_Cancel)) {
+ return true;
+ }
+ return false;
+}
+
static void send_wl_key_event (WSCContextISF *ic, const KeyEvent &key, bool fake)
{
SCIM_DEBUG_FRONTEND (1) << __FUNCTION__ << "...\n";
_keyname_to_keysym (key.code, &modifiers);
- if (ic)
+ if (ic) {
wsc_context_send_key (ic, key.code, modifiers, time, key.is_key_press ());
+ if (_check_remote_input_finished (key.code, key.is_key_press (), fake))
+ ic->impl->input_resource = INPUT_RESOURCE_NONE;
+ }
}
static void