static IMEngineFactoryPointer _fallback_factory;
static IMEngineInstancePointer _fallback_instance;
-static PanelClient _panel_client;
+PanelClient _panel_client;
static int _panel_client_id = 0;
static Ecore_Fd_Handler *_panel_iochannel_read_handler = 0;
#define SHIFT_MODE_ENABLE 0x9fe7
#define SHIFT_MODE_DISABLE 0x9fe8
-extern Ecore_IMF_Context *input_panel_ctx;
+extern Ecore_IMF_Input_Panel_State input_panel_state;
+extern Ecore_IMF_Context *input_panel_ctx;
// A hack to shutdown the immodule cleanly even if im_module_exit () is not called when exiting.
class FinalizeHandler
input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
ecore_imf_context_input_panel_hide (ctx);
input_panel_event_callback_call (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_HIDE);
- isf_imf_context_input_panel_send_will_hide_ack ();
+ isf_imf_context_input_panel_send_will_hide_ack (ctx);
}
}
if (context_scim && context_scim->impl) {
_focused_ic = context_scim;
- isf_imf_context_control_focus_in (ctx);
_panel_client.send ();
caps_mode_check (ctx, EINA_FALSE, EINA_TRUE);
ret = EINA_TRUE;
}
- }
- else {
+ } else {
if (key.code == SCIM_KEY_space ||
key.code == SCIM_KEY_KP_Space)
autoperiod_insert (ctx);
}
static void
-panel_slot_update_client_id (int context, int client_id)
+panel_slot_update_ise_input_context (int context, int type, int value)
+{
+ SCIM_DEBUG_FRONTEND(1) << __FUNCTION__ << "...\n";
+
+ process_update_input_context (type, value);
+}
+
+static void
+panel_slot_update_isf_candidate_panel (int context, int type, int value)
{
- SCIM_DEBUG_FRONTEND(1) << __FUNCTION__ << " context=" << context << " client_id=" << client_id << "\n";
+ SCIM_DEBUG_FRONTEND(1) << __FUNCTION__ << "...\n";
- _panel_client_id = client_id;
+ process_update_input_context (type, value);
}
/* Panel Requestion functions. */
}
if (_panel_client.open_connection (_config->get_name (), display_name) >= 0) {
+ if (_panel_client.get_client_id (_panel_client_id)) {
+ _panel_client.prepare (0);
+ _panel_client.register_client (_panel_client_id);
+ _panel_client.send ();
+ }
+
int fd = _panel_client.get_connection_number ();
_panel_iochannel_read_handler = ecore_main_fd_handler_add (fd, ECORE_FD_READ, panel_iochannel_handler, NULL, NULL, NULL);
}
if (_focused_ic) {
- _panel_client.prepare (_focused_ic->id);
- panel_req_focus_in (_focused_ic);
- _panel_client.send ();
+ scim_usleep (2000000); // Wait for ISE ready
+ Ecore_IMF_Context *ctx = _focused_ic->ctx;
+ _focused_ic = 0;
+ if (input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
+ input_panel_state = ECORE_IMF_INPUT_PANEL_STATE_HIDE;
+ isf_imf_context_focus_in (ctx);
+ ecore_imf_context_input_panel_show (ctx);
+ } else {
+ isf_imf_context_focus_in (ctx);
+ }
}
return true;
bool socket = true;
String config_module_name = "simple";
- SCIM_DEBUG_FRONTEND(1) << "Initializing Ecore ISF IMModule...\n";
+ LOGD ("Initializing Ecore ISF IMModule...\n");
// Get system language.
_language = scim_get_locale_language (scim_get_current_locale ());
_panel_client.signal_connect_candidate_more_window_show (slot (panel_slot_candidate_more_window_show));
_panel_client.signal_connect_candidate_more_window_hide (slot (panel_slot_candidate_more_window_hide));
_panel_client.signal_connect_longpress_candidate (slot (panel_slot_longpress_candidate));
- _panel_client.signal_connect_update_client_id (slot (panel_slot_update_client_id));
+ _panel_client.signal_connect_update_ise_input_context (slot (panel_slot_update_ise_input_context));
+ _panel_client.signal_connect_update_isf_candidate_panel (slot (panel_slot_update_isf_candidate_panel));
if (!panel_initialize ()) {
std::cerr << "Ecore IM Module: Cannot connect to Panel!\n";
static void
finalize (void)
{
- SCIM_DEBUG_FRONTEND(1) << "Finalizing Ecore ISF IMModule...\n";
+ LOGD ("Finalizing Ecore ISF IMModule...\n");
// Reset this first so that the shared instance could be released correctly afterwards.
_default_instance.reset ();
}
converted[0] = utf8_wcstombs (str).at (0);
if (uppercase) {
- if(converted[0] >= 'a' && converted[0] <= 'z')
+ if (converted[0] >= 'a' && converted[0] <= 'z')
converted[0] -= 32;
} else {
- if(converted[0] >= 'A' && converted[0] <= 'Z')
+ if (converted[0] >= 'A' && converted[0] <= 'Z')
converted[0] += 32;
}
#define Uses_SCIM_TRANSACTION
#define Uses_ISF_IMCONTROL_CLIENT
+#define Uses_SCIM_PANEL_CLIENT
#include <stdio.h>
#include <Ecore.h>
#define IMFCONTROLERR(str...) printf(str)
-static Ecore_Fd_Handler *_read_handler = 0;
-static IMControlClient _imcontrol_client;
+extern PanelClient _panel_client;
-extern void ecore_ise_process_data (Transaction &trans, int cmd);
-
-
-static int isf_socket_wait_for_data_internal (int socket_id, int timeout)
-{
- fd_set fds;
- struct timeval tv;
- struct timeval begin_tv;
- int ret;
-
- int m_id = socket_id;
-
- if (timeout >= 0) {
- gettimeofday (&begin_tv, 0);
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
- }
-
- while (1) {
- FD_ZERO (&fds);
- FD_SET (m_id, &fds);
-
- ret = select (m_id + 1, &fds, NULL, NULL, (timeout >= 0) ? &tv : NULL);
- if (timeout > 0) {
- int elapsed;
- struct timeval cur_tv;
- gettimeofday (&cur_tv, 0);
- elapsed = (cur_tv.tv_sec - begin_tv.tv_sec) * 1000 +
- (cur_tv.tv_usec - begin_tv.tv_usec) / 1000;
- timeout = timeout - elapsed;
- if (timeout > 0) {
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
- } else {
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- timeout = 0;
- }
- }
- if (ret > 0) {
- return ret;
- } else if (ret == 0) {
- if (timeout == 0)
- return ret;
- else
- continue;
- }
-
- if (errno == EINTR)
- continue;
-
- return ret;
- }
-}
-
-static Eina_Bool ecore_ise_input_handler (void *data, Ecore_Fd_Handler *fd_handler)
-{
- int cmd;
- int timeout = 0;
- Transaction trans;
-
- if (fd_handler == NULL)
- return ECORE_CALLBACK_RENEW;
-
- int fd = ecore_main_fd_handler_fd_get (fd_handler);
- if (_imcontrol_client.is_connected () &&
- isf_socket_wait_for_data_internal (fd, timeout) > 0) {
- trans.clear ();
- if (!trans.read_from_socket (fd, timeout)) {
- IMFCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
- _isf_imf_control_finalize ();
- return ECORE_CALLBACK_CANCEL;
- }
-
- if (trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REQUEST) {
- while (trans.get_command (cmd)) {
- ecore_ise_process_data (trans, cmd);
- }
- }
- return ECORE_CALLBACK_RENEW;
- }
- IMFCONTROLERR ("ecore_ise_input_handler is failed!!!\n");
- _isf_imf_control_finalize ();
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void connect_panel (void)
-{
- if (!_imcontrol_client.is_connected ()) {
- _imcontrol_client.open_connection ();
- int fd = _imcontrol_client.get_panel2imclient_connection_number ();
- if (fd > 0) {
- _read_handler = ecore_main_fd_handler_add (fd, ECORE_FD_READ, ecore_ise_input_handler, NULL, NULL, NULL);
- }
- }
-}
-
-void _isf_imf_control_finalize (void)
-{
- IMFCONTROLDBG ("%s ...\n", __FUNCTION__);
-
- _imcontrol_client.close_connection ();
-
- if (_read_handler) {
- ecore_main_fd_handler_del (_read_handler);
- _read_handler = 0;
- }
-}
-
int _isf_imf_context_input_panel_show (int client_id, int context, void *data, int length, bool &input_panel_show)
{
int temp = 0;
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.show_ise (client_id, context, data, length, &temp);
+ _panel_client.prepare (context);
+ _panel_client.show_ise (client_id, context, data, length, &temp);
input_panel_show = (bool)temp;
return 0;
}
int _isf_imf_context_input_panel_hide (int client_id, int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.hide_ise (client_id, context);
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.hide_ise (client_id, context);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_control_panel_show (void)
+int _isf_imf_context_control_panel_show (int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.show_control_panel ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.show_control_panel ();
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_control_panel_hide (void)
+int _isf_imf_context_control_panel_hide (int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.hide_control_panel ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.hide_control_panel ();
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_language_set (Ecore_IMF_Input_Panel_Lang lang)
+int _isf_imf_context_input_panel_language_set (int context, Ecore_IMF_Input_Panel_Lang lang)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.set_ise_language (lang);
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.set_ise_language (lang);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_language_locale_get (char **locale)
+int _isf_imf_context_input_panel_language_locale_get (int context, char **locale)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_ise_language_locale (locale);
+ _panel_client.prepare (context);
+ _panel_client.get_ise_language_locale (locale);
return 0;
}
-int _isf_imf_context_input_panel_imdata_set (const void *data, int len)
+int _isf_imf_context_input_panel_imdata_set (int context, const void *data, int len)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.set_imdata ((const char *)data, len);
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.set_imdata ((const char *)data, len);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_imdata_get (void *data, int *len)
+int _isf_imf_context_input_panel_imdata_get (int context, void *data, int *len)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_imdata ((char *)data, len);
+ _panel_client.prepare (context);
+ _panel_client.get_imdata ((char *)data, len);
return 0;
}
-int _isf_imf_context_input_panel_geometry_get (int *x, int *y, int *w, int *h)
+int _isf_imf_context_input_panel_geometry_get (int context, int *x, int *y, int *w, int *h)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_ise_window_geometry (x, y, w, h);
+ _panel_client.prepare (context);
+ _panel_client.get_ise_window_geometry (x, y, w, h);
return 0;
}
-int _isf_imf_context_input_panel_return_key_type_set (Ecore_IMF_Input_Panel_Return_Key_Type type)
+int _isf_imf_context_input_panel_return_key_type_set (int context, Ecore_IMF_Input_Panel_Return_Key_Type type)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.set_return_key_type ((int)type);
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.set_return_key_type ((int)type);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_return_key_type_get (Ecore_IMF_Input_Panel_Return_Key_Type &type)
+int _isf_imf_context_input_panel_return_key_type_get (int context, Ecore_IMF_Input_Panel_Return_Key_Type &type)
{
int temp = 0;
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_return_key_type (temp);
+ _panel_client.prepare (context);
+ _panel_client.get_return_key_type (temp);
type = (Ecore_IMF_Input_Panel_Return_Key_Type)temp;
return 0;
}
-int _isf_imf_context_input_panel_return_key_disabled_set (Eina_Bool disabled)
+int _isf_imf_context_input_panel_return_key_disabled_set (int context, Eina_Bool disabled)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.set_return_key_disable ((int)disabled);
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.set_return_key_disable ((int)disabled);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_return_key_disabled_get (Eina_Bool &disabled)
+int _isf_imf_context_input_panel_return_key_disabled_get (int context, Eina_Bool &disabled)
{
int temp = 0;
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_return_key_disable (temp);
+ _panel_client.prepare (context);
+ _panel_client.get_return_key_disable (temp);
disabled = (Eina_Bool)temp;
return 0;
}
-int _isf_imf_context_input_panel_layout_set (Ecore_IMF_Input_Panel_Layout layout)
+int _isf_imf_context_input_panel_layout_set (int context, Ecore_IMF_Input_Panel_Layout layout)
{
- int layout_temp = layout;
-
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.set_layout (layout_temp);
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.set_layout (layout);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_layout_get (Ecore_IMF_Input_Panel_Layout *layout)
+int _isf_imf_context_input_panel_layout_get (int context, Ecore_IMF_Input_Panel_Layout *layout)
{
int layout_temp;
-
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_layout (&layout_temp);
+ _panel_client.prepare (context);
+ _panel_client.get_layout (&layout_temp);
*layout = (Ecore_IMF_Input_Panel_Layout)layout_temp;
return 0;
}
-int _isf_imf_context_input_panel_caps_mode_set (unsigned int mode)
-{
- connect_panel ();
-
- _imcontrol_client.prepare ();
- _imcontrol_client.set_caps_mode (mode);
- _imcontrol_client.send ();
- return 0;
-}
-
-int _isf_imf_context_candidate_window_geometry_get (int *x, int *y, int *w, int *h)
+int _isf_imf_context_input_panel_caps_mode_set (int context, unsigned int mode)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.get_candidate_window_geometry (x, y, w, h);
+ _panel_client.prepare (context);
+ _panel_client.set_caps_mode (mode);
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_control_focus_in (void)
+int _isf_imf_context_candidate_window_geometry_get (int context, int *x, int *y, int *w, int *h)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.focus_in ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.get_candidate_window_geometry (x, y, w, h);
return 0;
}
-int _isf_imf_context_control_focus_out (void)
+int _isf_imf_context_input_panel_send_will_show_ack (int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.focus_out ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.send_will_show_ack ();
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_send_will_show_ack (void)
+int _isf_imf_context_input_panel_send_will_hide_ack (int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.send_will_show_ack ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.send_will_hide_ack ();
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_send_will_hide_ack (void)
+int _isf_imf_context_set_hardware_keyboard_mode (int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.send_will_hide_ack ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.set_hardware_keyboard_mode ();
+ _panel_client.send ();
return 0;
}
-int _isf_imf_context_input_panel_send_candidate_will_hide_ack (void)
+int _isf_imf_context_input_panel_send_candidate_will_hide_ack (int context)
{
- connect_panel ();
- _imcontrol_client.prepare ();
- _imcontrol_client.send_candidate_will_hide_ack ();
- _imcontrol_client.send ();
+ _panel_client.prepare (context);
+ _panel_client.send_candidate_will_hide_ack ();
+ _panel_client.send ();
return 0;
}
{
#endif /* __cplusplus */
- /* non UI related works */
- void _isf_imf_control_finalize (void);
-
int _isf_imf_context_input_panel_show (int client_id, int context, void *data, int length, bool &input_panel_show);
int _isf_imf_context_input_panel_hide (int client_id, int context);
- int _isf_imf_context_control_panel_show (void);
- int _isf_imf_context_control_panel_hide (void);
+ int _isf_imf_context_control_panel_show (int context);
+ int _isf_imf_context_control_panel_hide (int context);
- int _isf_imf_context_input_panel_language_set (Ecore_IMF_Input_Panel_Lang lang);
- int _isf_imf_context_input_panel_language_locale_get (char **locale);
+ int _isf_imf_context_input_panel_language_set (int context, Ecore_IMF_Input_Panel_Lang lang);
+ int _isf_imf_context_input_panel_language_locale_get (int context, char **locale);
- int _isf_imf_context_input_panel_imdata_set (const void *data, int len);
- int _isf_imf_context_input_panel_imdata_get (void *data, int *len);
- int _isf_imf_context_input_panel_geometry_get (int *x, int *y, int *w, int *h);
- int _isf_imf_context_input_panel_layout_set (Ecore_IMF_Input_Panel_Layout layout);
- int _isf_imf_context_input_panel_layout_get (Ecore_IMF_Input_Panel_Layout *layout);
- int _isf_imf_context_input_panel_return_key_type_set (Ecore_IMF_Input_Panel_Return_Key_Type type);
- int _isf_imf_context_input_panel_return_key_type_get (Ecore_IMF_Input_Panel_Return_Key_Type &type);
- int _isf_imf_context_input_panel_return_key_disabled_set (Eina_Bool disabled);
- int _isf_imf_context_input_panel_return_key_disabled_get (Eina_Bool &disabled);
- int _isf_imf_context_input_panel_caps_mode_set (unsigned int mode);
+ int _isf_imf_context_input_panel_imdata_set (int context, const void *data, int len);
+ int _isf_imf_context_input_panel_imdata_get (int context, void *data, int *len);
+ int _isf_imf_context_input_panel_geometry_get (int context, int *x, int *y, int *w, int *h);
+ int _isf_imf_context_input_panel_layout_set (int context, Ecore_IMF_Input_Panel_Layout layout);
+ int _isf_imf_context_input_panel_layout_get (int context, Ecore_IMF_Input_Panel_Layout *layout);
+ int _isf_imf_context_input_panel_return_key_type_set (int context, Ecore_IMF_Input_Panel_Return_Key_Type type);
+ int _isf_imf_context_input_panel_return_key_type_get (int context, Ecore_IMF_Input_Panel_Return_Key_Type &type);
+ int _isf_imf_context_input_panel_return_key_disabled_set (int context, Eina_Bool disabled);
+ int _isf_imf_context_input_panel_return_key_disabled_get (int context, Eina_Bool &disabled);
+ int _isf_imf_context_input_panel_caps_mode_set (int context, unsigned int mode);
- int _isf_imf_context_candidate_window_geometry_get (int *x, int *y, int *w, int *h);
+ int _isf_imf_context_candidate_window_geometry_get (int context, int *x, int *y, int *w, int *h);
- int _isf_imf_context_control_focus_in (void);
- int _isf_imf_context_control_focus_out (void);
+ int _isf_imf_context_input_panel_send_will_show_ack (int context);
+ int _isf_imf_context_input_panel_send_will_hide_ack (int context);
- int _isf_imf_context_input_panel_send_will_show_ack (void);
- int _isf_imf_context_input_panel_send_will_hide_ack (void);
+ int _isf_imf_context_set_hardware_keyboard_mode (int context);
- int _isf_imf_context_input_panel_send_candidate_will_hide_ack (void);
+ int _isf_imf_context_input_panel_send_candidate_will_hide_ack (int context);
#ifdef __cplusplus
}
static unsigned int hw_kbd_num = 0;
static Ecore_Timer *hide_timer = NULL;
static Ecore_Timer *will_show_timer = NULL;
-static Ecore_IMF_Input_Panel_State input_panel_state = ECORE_IMF_INPUT_PANEL_STATE_HIDE;
+Ecore_IMF_Input_Panel_State input_panel_state = ECORE_IMF_INPUT_PANEL_STATE_HIDE;
static Ecore_IMF_Input_Panel_State notified_state = ECORE_IMF_INPUT_PANEL_STATE_HIDE;
static int hide_context_id = -1;
static Evas *active_context_canvas = NULL;
static void _send_input_panel_hide_request ();
+static Ecore_IMF_Context *_get_using_ic (Ecore_IMF_Input_Panel_Event type, int value) {
+ Ecore_IMF_Context *using_ic = NULL;
+ if (show_req_ic)
+ using_ic = show_req_ic;
+ else if (get_focused_ic ())
+ using_ic = get_focused_ic ()->ctx;
+
+ if (type == ECORE_IMF_INPUT_PANEL_STATE_EVENT &&
+ value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
+ if (hide_req_ic) {
+ using_ic = hide_req_ic;
+ }
+ }
+ return using_ic;
+}
+
static void _render_post_cb (void *data, Evas *e, void *event_info)
{
+ LOGD ("[_render_post_cb]\n");
evas_event_callback_del_full (e, EVAS_CALLBACK_RENDER_POST, _render_post_cb, NULL);
conformant_reset_done = EINA_TRUE;
- isf_imf_context_input_panel_send_will_hide_ack ();
+ isf_imf_context_input_panel_send_will_hide_ack (_get_using_ic (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_SHOW));
}
static void _candidate_render_post_cb (void *data, Evas *e, void *event_info)
{
+ LOGD ("[%s]\n", __func__);
evas_event_callback_del_full (e, EVAS_CALLBACK_RENDER_POST, _candidate_render_post_cb, NULL);
- isf_imf_context_input_panel_send_candidate_will_hide_ack ();
+ isf_imf_context_input_panel_send_candidate_will_hide_ack (_get_using_ic (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_SHOW));
}
static void _clear_will_show_timer ()
conformant_reset_done = EINA_FALSE;
LOGD ("[ECORE_X_VIRTUAL_KEYBOARD_STATE_ON] geometry x : %d, y : %d, w : %d, h : %d\n", sx, sy, sw, sh);
}
- }
- else {
+ } else {
if (event->win != _rootwin) return ECORE_CALLBACK_PASS_ON;
if (event->atom != prop_x_ext_keyboard_exist) return ECORE_CALLBACK_PASS_ON;
-
if (!ecore_x_window_prop_card32_get (event->win, prop_x_ext_keyboard_exist, &val, 1) > 0)
return ECORE_CALLBACK_PASS_ON;
static void _event_callback_call (Ecore_IMF_Input_Panel_Event type, int value)
{
- Ecore_IMF_Context *using_ic = NULL;
-
- if (show_req_ic)
- using_ic = show_req_ic;
- else if (get_focused_ic ())
- using_ic = get_focused_ic ()->ctx;
-
- if (type == ECORE_IMF_INPUT_PANEL_STATE_EVENT &&
- value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
- if (hide_req_ic) {
- using_ic = hide_req_ic;
- }
- }
+ Ecore_IMF_Context *using_ic = _get_using_ic (type, value);
switch (type) {
case ECORE_IMF_INPUT_PANEL_STATE_EVENT:
if (type == ECORE_IMF_INPUT_PANEL_STATE_EVENT &&
value == ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW) {
- isf_imf_context_input_panel_send_will_show_ack ();
+ isf_imf_context_input_panel_send_will_show_ack (using_ic);
}
if (type == ECORE_IMF_CANDIDATE_PANEL_STATE_EVENT &&
if (active_context_canvas && _conformant_get ())
evas_event_callback_add (active_context_canvas, EVAS_CALLBACK_RENDER_POST, _candidate_render_post_cb, NULL);
else
- isf_imf_context_input_panel_send_candidate_will_hide_ack ();
+ isf_imf_context_input_panel_send_candidate_will_hide_ack (using_ic);
}
}
if (IfInitContext == false) {
_isf_imf_context_init ();
}
- _isf_imf_context_control_panel_show ();
+ _isf_imf_context_control_panel_show (_get_context_id (ctx));
}
void isf_imf_context_control_panel_hide (Ecore_IMF_Context *ctx)
if (IfInitContext == false) {
_isf_imf_context_init ();
}
- _isf_imf_context_control_panel_hide ();
+ _isf_imf_context_control_panel_hide (_get_context_id (ctx));
}
void isf_imf_input_panel_init (void)
_clear_will_show_timer ();
_clear_hide_timer ();
-
- _isf_imf_control_finalize ();
}
void isf_imf_context_input_panel_show (Ecore_IMF_Context* ctx)
if (context_scim == get_focused_ic ()) {
LOGD ("language mode : %d\n", language);
- _isf_imf_context_input_panel_language_set (language);
+ _isf_imf_context_input_panel_language_set (_get_context_id (ctx), language);
}
}
_isf_imf_context_init ();
if (locale)
- _isf_imf_context_input_panel_language_locale_get (locale);
+ _isf_imf_context_input_panel_language_locale_get (_get_context_id (ctx), locale);
}
void isf_imf_context_input_panel_caps_mode_set (Ecore_IMF_Context *ctx, unsigned int mode)
if (!IfInitContext)
_isf_imf_context_init ();
LOGD ("ctx : %p, mode : %d\n", ctx, mode);
- _isf_imf_context_input_panel_caps_mode_set (mode);
+ _isf_imf_context_input_panel_caps_mode_set (_get_context_id (ctx), mode);
}
void isf_imf_context_input_panel_caps_lock_mode_set (Ecore_IMF_Context *ctx, Eina_Bool mode)
EcoreIMFContextISF *context_scim = (EcoreIMFContextISF *)ecore_imf_context_data_get (ctx);
if (context_scim == get_focused_ic ())
- _isf_imf_context_input_panel_imdata_set (data, length);
+ _isf_imf_context_input_panel_imdata_set (_get_context_id (ctx), data, length);
}
/**
{
if (!IfInitContext)
_isf_imf_context_init ();
- _isf_imf_context_input_panel_imdata_get (data, length);
+ _isf_imf_context_input_panel_imdata_get (_get_context_id (ctx), data, length);
}
/**
{
if (!IfInitContext)
_isf_imf_context_init ();
- _isf_imf_context_input_panel_geometry_get (x, y, w, h);
+ _isf_imf_context_input_panel_geometry_get (_get_context_id (ctx), x, y, w, h);
LOGD ("ctx : %p, x : %d, y : %d, w : %d, h : %d\n", ctx, *x, *y, *w, *h);
}
if (context_scim == get_focused_ic ()) {
LOGD ("Return key type : %d\n", type);
- _isf_imf_context_input_panel_return_key_type_set (type);
+ _isf_imf_context_input_panel_return_key_type_set (_get_context_id (ctx), type);
}
}
Ecore_IMF_Input_Panel_Return_Key_Type type = ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT;
if (context_scim == get_focused_ic ())
- _isf_imf_context_input_panel_return_key_type_get (type);
+ _isf_imf_context_input_panel_return_key_type_get (_get_context_id (ctx), type);
return type;
}
if (context_scim == get_focused_ic ()) {
LOGD ("Return key disabled : %d\n", disabled);
- _isf_imf_context_input_panel_return_key_disabled_set (disabled);
+ _isf_imf_context_input_panel_return_key_disabled_set (_get_context_id (ctx), disabled);
}
}
Eina_Bool disabled = EINA_FALSE;
if (context_scim == get_focused_ic ())
- _isf_imf_context_input_panel_return_key_disabled_get (disabled);
+ _isf_imf_context_input_panel_return_key_disabled_get (_get_context_id (ctx), disabled);
return disabled;
}
if (context_scim == get_focused_ic ()) {
LOGD ("layout type : %d\n", layout);
- _isf_imf_context_input_panel_layout_set (layout);
+ _isf_imf_context_input_panel_layout_set (_get_context_id (ctx), layout);
imengine_layout_set (ctx, layout);
}
}
Ecore_IMF_Input_Panel_Layout layout;
if (!IfInitContext)
_isf_imf_context_init ();
- _isf_imf_context_input_panel_layout_get (&layout);
+ _isf_imf_context_input_panel_layout_get (_get_context_id (ctx), &layout);
return layout;
}
{
if (!IfInitContext)
_isf_imf_context_init ();
- _isf_imf_context_candidate_window_geometry_get (x, y, w, h);
+ _isf_imf_context_candidate_window_geometry_get (_get_context_id (ctx), x, y, w, h);
LOGD ("ctx : %p, x : %d, y : %d, w : %d, h : %d\n", ctx, *x, *y, *w, *h);
}
-/**
- * This method should be called when focus in
- *
- * @param[in] ctx a #Ecore_IMF_Context
- */
-void isf_imf_context_control_focus_in (Ecore_IMF_Context *ctx)
+void isf_imf_context_input_panel_send_will_show_ack (Ecore_IMF_Context *ctx)
{
if (IfInitContext == false) {
_isf_imf_context_init ();
}
- /* Set the current XID of the active window into the root window property */
- _save_current_xid (ctx);
- _isf_imf_context_control_focus_in ();
-}
-/**
- * This method should be called when focus out
- *
- * @param[in] ctx a #Ecore_IMF_Context
- */
-void isf_imf_context_control_focus_out (Ecore_IMF_Context *ctx)
-{
- if (IfInitContext == false) {
- _isf_imf_context_init ();
- }
- _isf_imf_context_control_focus_out ();
-}
-
-void isf_imf_context_input_panel_send_will_show_ack ()
-{
- if (IfInitContext == false) {
- _isf_imf_context_init ();
- }
-
- _isf_imf_context_input_panel_send_will_show_ack ();
+ _isf_imf_context_input_panel_send_will_show_ack (_get_context_id (ctx));
}
-void isf_imf_context_input_panel_send_will_hide_ack ()
+void isf_imf_context_input_panel_send_will_hide_ack (Ecore_IMF_Context *ctx)
{
if (IfInitContext == false) {
_isf_imf_context_init ();
if (_conformant_get ()) {
if (conformant_reset_done && received_will_hide_event) {
LOGD ("Send will hide ack\n");
- _isf_imf_context_input_panel_send_will_hide_ack ();
+ _isf_imf_context_input_panel_send_will_hide_ack (_get_context_id (ctx));
conformant_reset_done = EINA_FALSE;
received_will_hide_event = EINA_FALSE;
}
- }
- else {
- _isf_imf_context_input_panel_send_will_hide_ack ();
+ } else {
+ _isf_imf_context_input_panel_send_will_hide_ack (_get_context_id (ctx));
}
}
-void isf_imf_context_input_panel_send_candidate_will_hide_ack ()
+void isf_imf_context_set_hardware_keyboard_mode (Ecore_IMF_Context *ctx)
{
if (IfInitContext == false) {
_isf_imf_context_init ();
}
- LOGD ("Send candidate will hide ack\n");
- _isf_imf_context_input_panel_send_candidate_will_hide_ack ();
+ hw_kbd_num = 1;
+ SECURE_LOGD ("The number of connected H/W keyboard : %d\n", hw_kbd_num);
+ _isf_imf_context_set_hardware_keyboard_mode (_get_context_id (ctx));
+}
+
+void isf_imf_context_input_panel_send_candidate_will_hide_ack (Ecore_IMF_Context *ctx)
+{
+ if (IfInitContext == false) {
+ _isf_imf_context_init ();
+ }
+ _isf_imf_context_input_panel_send_candidate_will_hide_ack (_get_context_id (ctx));
}
/**
- * process command message, ISM_TRANS_CMD_ISE_PANEL_SHOWED of ecore_ise_process_event ()
+ * process input panel show message
*/
static bool _process_ise_panel_showed (void)
{
}
/**
- * process command message, ISM_TRANS_CMD_ISE_PANEL_HIDED of ecore_ise_process_event ()
+ * process input panel hide message
*/
static bool _process_ise_panel_hided (void)
{
_event_callback_call (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_HIDE);
received_will_hide_event = EINA_TRUE;
- isf_imf_context_input_panel_send_will_hide_ack ();
+ isf_imf_context_input_panel_send_will_hide_ack (_get_using_ic (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_HIDE));
return true;
}
/**
- * process command message, ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT of gtk_ise_process_event ()
+ * process input panel related message
*/
-static bool _process_update_input_context (Transaction &trans)
+bool process_update_input_context (int type, int value)
{
- uint32 type;
- uint32 value;
-
- if (!(trans.get_data (type) && trans.get_data (value)))
- return false;
-
if (type == (uint32)ECORE_IMF_INPUT_PANEL_STATE_EVENT) {
switch (value) {
case ECORE_IMF_INPUT_PANEL_STATE_HIDE:
_event_callback_call ((Ecore_IMF_Input_Panel_Event)type, (int)value);
- if (type == ECORE_IMF_INPUT_PANEL_STATE_EVENT &&
- value == ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW) {
- isf_imf_context_input_panel_send_will_show_ack ();
- }
-
return true;
}
-/**
- * process ISE data of command message with ISF
- *
- * @param[in] trans packet data to be processed
- * @param[in] cmd command ID that defines with ISF
- */
-void ecore_ise_process_data (Transaction &trans, int cmd)
-{
- switch (cmd) {
- case ISM_TRANS_CMD_ISE_PANEL_SHOWED : {
- _process_ise_panel_showed ();
- break;
- }
- case ISM_TRANS_CMD_ISE_PANEL_HIDED : {
- _process_ise_panel_hided ();
- break;
- }
- case ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT : {
- _process_update_input_context (trans);
- break;
- }
- case ISM_TRANS_CMD_UPDATE_ISF_CANDIDATE_PANEL : {
- _process_update_input_context (trans);
- break;
- }
- default :
- break;
- }
-}
-
{
#endif /* __cplusplus */
void input_panel_event_callback_call (Ecore_IMF_Input_Panel_Event type, int value);
- int hw_keyboard_num_get ();
+ int hw_keyboard_num_get ();
+ bool process_update_input_context (int type, int value);
- /* non UI related works */
void isf_imf_input_panel_init ();
void isf_imf_input_panel_shutdown ();
void isf_imf_context_input_panel_show (Ecore_IMF_Context *ctx);
void isf_imf_context_input_panel_caps_lock_mode_set (Ecore_IMF_Context *ctx, Eina_Bool mode);
void isf_imf_context_candidate_window_geometry_get (Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
- void isf_imf_context_control_focus_in (Ecore_IMF_Context *ctx);
- void isf_imf_context_control_focus_out (Ecore_IMF_Context *ctx);
- void isf_imf_context_input_panel_send_will_show_ack ();
- void isf_imf_context_input_panel_send_will_hide_ack ();
- void isf_imf_context_input_panel_send_candidate_will_hide_ack ();
+ void isf_imf_context_input_panel_send_will_show_ack (Ecore_IMF_Context *ctx);
+ void isf_imf_context_input_panel_send_will_hide_ack (Ecore_IMF_Context *ctx);
+ void isf_imf_context_set_hardware_keyboard_mode (Ecore_IMF_Context *ctx);
+
+ void isf_imf_context_input_panel_send_candidate_will_hide_ack (Ecore_IMF_Context *ctx);
#ifdef __cplusplus
}
return false;
}
-
- void show_ise (int client_id, int context, void *data, int length, int *input_panel_show) {
- int cmd;
- uint32 temp;
- m_trans.put_command (ISM_TRANS_CMD_SHOW_ISE_PANEL);
- m_trans.put_data ((uint32)client_id);
- m_trans.put_data ((uint32)context);
- m_trans.put_data ((const char *)data, (size_t)length);
- m_trans.write_to_socket (m_socket_imclient2panel);
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (temp)) {
- if (input_panel_show)
- *input_panel_show = temp;
- } else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
- if (input_panel_show)
- *input_panel_show = false;
- }
- }
-
- void hide_ise (int client_id, int context) {
- m_trans.put_command (ISM_TRANS_CMD_HIDE_ISE_PANEL);
- m_trans.put_data ((uint32)client_id);
- m_trans.put_data ((uint32)context);
- }
-
- void show_control_panel (void) {
- m_trans.put_command (ISM_TRANS_CMD_SHOW_ISF_CONTROL);
- }
-
- void hide_control_panel (void) {
- m_trans.put_command (ISM_TRANS_CMD_HIDE_ISF_CONTROL);
- }
-
- void set_mode (int mode) {
- m_trans.put_command (ISM_TRANS_CMD_SET_ISE_MODE);
- m_trans.put_data (mode);
- }
-
- void set_imdata (const char* data, int len) {
- m_trans.put_command (ISM_TRANS_CMD_SET_ISE_IMDATA);
- m_trans.put_data (data, len);
- }
-
- void get_imdata (char* data, int* len) {
- int cmd;
- size_t datalen = 0;
- char* data_temp = NULL;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_ISE_IMDATA);
- m_trans.write_to_socket (m_socket_imclient2panel);
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (&data_temp, datalen)) {
- memcpy (data, data_temp, datalen);
- *len = datalen;
- } else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
- }
- delete [] data_temp;
- }
-
- void get_ise_window_geometry (int* x, int* y, int* width, int* height) {
- int cmd;
- uint32 x_temp = 0;
- uint32 y_temp = 0;
- uint32 w_temp = 0;
- uint32 h_temp = 0;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_ACTIVE_ISE_GEOMETRY);
- m_trans.write_to_socket (m_socket_imclient2panel);
-
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (x_temp) &&
- m_trans.get_data (y_temp) &&
- m_trans.get_data (w_temp) &&
- m_trans.get_data (h_temp)) {
- *x = x_temp;
- *y = y_temp;
- *width = w_temp;
- *height = h_temp;
- } else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
- }
- }
-
- void get_candidate_window_geometry (int* x, int* y, int* width, int* height) {
- int cmd;
- uint32 x_temp = 0;
- uint32 y_temp = 0;
- uint32 w_temp = 0;
- uint32 h_temp = 0;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_CANDIDATE_GEOMETRY);
- m_trans.write_to_socket (m_socket_imclient2panel);
-
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s::read_from_socket () may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (x_temp) &&
- m_trans.get_data (y_temp) &&
- m_trans.get_data (w_temp) &&
- m_trans.get_data (h_temp)) {
- *x = x_temp;
- *y = y_temp;
- *width = w_temp;
- *height = h_temp;
- } else {
- IMCONTROLERR ("%s::get_command () or get_data () is failed!!!\n", __FUNCTION__);
- }
- }
-
- void get_ise_language_locale (char **locale) {
- int cmd;
- size_t datalen = 0;
- char *data = NULL;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_ISE_LANGUAGE_LOCALE);
- m_trans.write_to_socket (m_socket_imclient2panel);
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s::read_from_socket () may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (&data, datalen)) {
- if (locale)
- *locale = strndup (data, datalen);
- } else {
- IMCONTROLERR ("%s::get_command () or get_data () is failed!!!\n", __FUNCTION__);
- if (locale)
- *locale = strdup ("");
- }
- if (data)
- delete [] data;
- }
-
- void set_return_key_type (int type) {
- m_trans.put_command (ISM_TRANS_CMD_SET_RETURN_KEY_TYPE);
- m_trans.put_data (type);
- }
-
- void get_return_key_type (int &type) {
- int cmd;
- uint32 temp;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_RETURN_KEY_TYPE);
- m_trans.write_to_socket (m_socket_imclient2panel);
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (temp)) {
- type = temp;
- } else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
- }
- }
-
- void set_return_key_disable (int disabled) {
- m_trans.put_command (ISM_TRANS_CMD_SET_RETURN_KEY_DISABLE);
- m_trans.put_data (disabled);
- }
-
- void get_return_key_disable (int &disabled) {
- int cmd;
- uint32 temp;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE);
- m_trans.write_to_socket (m_socket_imclient2panel);
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (temp)) {
- disabled = temp;
- } else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
- }
- }
-
- void set_layout (int layout) {
- m_trans.put_command (ISM_TRANS_CMD_SET_LAYOUT);
- m_trans.put_data (layout);
- }
-
- void get_layout (int* layout) {
- int cmd;
- uint32 layout_temp;
-
- m_trans.put_command (ISM_TRANS_CMD_GET_LAYOUT);
- m_trans.write_to_socket (m_socket_imclient2panel);
- if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
-
- if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
- m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
- m_trans.get_data (layout_temp)) {
- *layout = layout_temp;
- } else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
- }
- }
-
- void set_ise_language (int language) {
- m_trans.put_command (ISM_TRANS_CMD_SET_ISE_LANGUAGE);
- m_trans.put_data (language);
- }
-
void set_active_ise_by_uuid (const char* uuid) {
int cmd;
m_trans.put_command (ISM_TRANS_CMD_SET_ACTIVE_ISE_BY_UUID);
m_trans.put_data (uuid, strlen(uuid)+1);
m_trans.write_to_socket (m_socket_imclient2panel);
if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK) {
} else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
}
}
m_trans.put_command (ISM_TRANS_CMD_GET_ACTIVE_ISE);
m_trans.write_to_socket (m_socket_imclient2panel);
if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
m_trans.get_data (strTemp)) {
uuid = strTemp;
} else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
}
}
m_trans.put_command (ISM_TRANS_CMD_GET_ISE_LIST);
m_trans.write_to_socket (m_socket_imclient2panel);
if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
*count = count_temp;
} else {
*count = 0;
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
}
if (count_temp > 0) {
m_trans.put_data (String (uuid));
m_trans.write_to_socket (m_socket_imclient2panel);
if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
type = tmp_type;
option = tmp_option;
} else {
- IMCONTROLERR ("%s:: get_command() or get_data() may fail!!!\n", __FUNCTION__);
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
}
}
m_trans.put_command (ISM_TRANS_CMD_RESET_ISE_OPTION);
m_trans.write_to_socket (m_socket_imclient2panel);
if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
- IMCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK) {
;
} else {
- IMCONTROLERR ("%s:: get_command() is failed!!!\n", __FUNCTION__);
+ std::cerr << __func__ << " get_command() is failed!!!\n";
}
}
- void set_caps_mode (int mode) {
- m_trans.put_command (ISM_TRANS_CMD_SET_CAPS_MODE);
- m_trans.put_data (mode);
- }
-
- void focus_in (void) {
- m_trans.put_command (SCIM_TRANS_CMD_FOCUS_IN);
- }
-
- void focus_out (void) {
- m_trans.put_command (SCIM_TRANS_CMD_FOCUS_OUT);
- }
-
- void send_will_show_ack (void) {
- m_trans.put_command (ISM_TRANS_CMD_SEND_WILL_SHOW_ACK);
- }
-
- void send_will_hide_ack (void) {
- m_trans.put_command (ISM_TRANS_CMD_SEND_WILL_HIDE_ACK);
- }
-
void set_active_ise_to_default (void) {
m_trans.put_command (ISM_TRANS_CMD_RESET_DEFAULT_ISE);
}
return m_impl->send ();
}
-void IMControlClient::show_ise (int client_id, int context, void *data, int length, int *input_panel_show)
-{
- m_impl->show_ise (client_id, context, data,length, input_panel_show);
-}
-
-void IMControlClient::hide_ise (int client_id, int context)
-{
- m_impl->hide_ise (client_id, context);
-}
-
-void IMControlClient::show_control_panel (void)
-{
- m_impl->show_control_panel ();
-}
-
-void IMControlClient::hide_control_panel (void)
-{
- m_impl->hide_control_panel ();
-}
-
-void IMControlClient::set_mode (int mode)
-{
- m_impl->set_mode (mode);
-}
-
-void IMControlClient::set_imdata (const char* data, int len)
-{
- m_impl->set_imdata (data, len);
-}
-
-void IMControlClient::get_imdata (char* data, int* len)
-{
- m_impl->get_imdata (data, len);
-}
-
-void IMControlClient::get_ise_window_geometry (int* x, int* y, int* width, int* height)
-{
- m_impl->get_ise_window_geometry (x, y, width, height);
-}
-
-void IMControlClient::get_candidate_window_geometry (int* x, int* y, int* width, int* height)
-{
- m_impl->get_candidate_window_geometry (x, y, width, height);
-}
-
-void IMControlClient::get_ise_language_locale (char **locale)
-{
- m_impl->get_ise_language_locale (locale);
-}
-
-void IMControlClient::set_return_key_type (int type)
-{
- m_impl->set_return_key_type (type);
-}
-
-void IMControlClient::get_return_key_type (int &type)
-{
- m_impl->get_return_key_type (type);
-}
-
-void IMControlClient::set_return_key_disable (int disabled)
-{
- m_impl->set_return_key_disable (disabled);
-}
-
-void IMControlClient::get_return_key_disable (int &disabled)
-{
- m_impl->get_return_key_disable (disabled);
-}
-
-void IMControlClient::set_layout (int layout)
-{
- m_impl->set_layout (layout);
-}
-
-void IMControlClient::get_layout (int* layout)
-{
- m_impl->get_layout (layout);
-}
-
-void IMControlClient::set_ise_language (int language)
-{
- m_impl->set_ise_language (language);
-}
-
void IMControlClient::set_active_ise_by_uuid (const char* uuid)
{
m_impl->set_active_ise_by_uuid (uuid);
m_impl->reset_ise_option ();
}
-void IMControlClient::set_caps_mode (int mode)
-{
- m_impl->set_caps_mode (mode);
-}
-
-void IMControlClient::focus_in (void)
-{
- m_impl->focus_in ();
-}
-
-void IMControlClient::focus_out (void)
-{
- m_impl->focus_out ();
-}
-
-void IMControlClient::send_will_show_ack (void)
-{
- m_impl->send_will_show_ack ();
-}
-
-void IMControlClient::send_will_hide_ack (void)
-{
- m_impl->send_will_hide_ack ();
-}
-
void IMControlClient::set_active_ise_to_default (void)
{
m_impl->set_active_ise_to_default ();
{
m_impl->send_candidate_will_hide_ack ();
}
-
};
/*
bool prepare (void);
bool send (void);
- void show_ise (int client_id, int context, void *data, int length, int *input_panel_show);
- void hide_ise (int client_id, int context);
- void show_control_panel (void);
- void hide_control_panel (void);
- void set_mode (int mode);
-
- void set_imdata (const char* data, int len);
- void get_imdata (char* data, int* len);
- void get_ise_window_geometry (int* x, int* y, int* width, int* height);
- void get_candidate_window_geometry (int* x, int* y, int* width, int* height);
- void get_ise_language_locale (char **locale);
- void set_return_key_type (int type);
- void get_return_key_type (int &type);
- void set_return_key_disable (int disabled);
- void get_return_key_disable (int &disabled);
- void set_layout (int layout);
- void get_layout (int* layout);
- void set_ise_language (int language);
void set_active_ise_by_uuid (const char* uuid);
void get_active_ise (String &uuid);
void get_ise_list (int* count, char*** iselist);
void get_ise_info (const char* uuid, String &name, String &language, int &type, int &option);
void reset_ise_option (void);
- void set_caps_mode (int mode);
- void focus_in (void);
- void focus_out (void);
- void send_will_show_ack (void);
- void send_will_hide_ack (void);
void set_active_ise_to_default (void);
void send_candidate_will_hide_ack (void);
};
enum ClientType {
UNKNOWN_CLIENT,
FRONTEND_CLIENT,
+ FRONTEND_ACT_CLIENT,
HELPER_CLIENT,
HELPER_ACT_CLIENT,
IMCONTROL_ACT_CLIENT,
String m_last_helper_uuid;
String m_current_ise_name;
uint32 m_current_ise_style;
- int m_current_active_imcontrol_id;
int m_pending_active_imcontrol_id;
- int m_show_request_imcontrol_id;
+ int m_show_request_client_id;
+ int m_active_client_id;
+ IntIntRepository m_panel_client_map;
IntIntRepository m_imcontrol_map;
bool m_should_shared_ise;
bool m_ise_exiting;
PanelAgentSignalStringVector m_signal_get_language_list;
PanelAgentSignalStringVector m_signal_get_all_language;
PanelAgentSignalStrStringVector m_signal_get_ise_language;
- PanelAgentSignalString m_signal_set_isf_language;
PanelAgentSignalStringISEINFO m_signal_get_ise_info_by_uuid;
PanelAgentSignalKeyEvent m_signal_send_key_event;
PanelAgentSignalVoid m_signal_will_show_ack;
PanelAgentSignalVoid m_signal_will_hide_ack;
+
+ PanelAgentSignalVoid m_signal_set_hardware_keyboard_mode;
+
PanelAgentSignalVoid m_signal_candidate_will_hide_ack;
public:
PanelAgentImpl ()
m_current_socket_client (-1), m_current_client_context (0),
m_current_toolbar_mode (TOOLBAR_KEYBOARD_MODE),
m_current_ise_style (0),
- m_current_active_imcontrol_id (-1), m_pending_active_imcontrol_id (-1),
+ m_pending_active_imcontrol_id (-1),
+ m_active_client_id (-1),
m_should_shared_ise (false),
m_ise_exiting (false), m_is_imengine_aux (false), m_is_imengine_candidate (false),
m_last_socket_client (-1), m_last_client_context (0)
m_current_ise_name = String (_("English Keyboard"));
m_imcontrol_repository.clear ();
m_imcontrol_map.clear ();
+ m_panel_client_map.clear ();
m_socket_server.signal_connect_accept (slot (this, &PanelAgentImpl::socket_accept_callback));
m_socket_server.signal_connect_receive (slot (this, &PanelAgentImpl::socket_receive_callback));
m_socket_server.signal_connect_exception (slot (this, &PanelAgentImpl::socket_exception_callback));
m_current_toolbar_mode = mode;
}
- void update_ise_name (String &name)
- {
- ClientRepository::iterator iter = m_client_repository.begin ();
-
- for (; iter != m_client_repository.end (); iter++) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
-
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- trans.put_command (ISM_TRANS_CMD_ISE_CHANGED);
- trans.put_data (name);
-
- trans.write_to_socket (client_socket);
- break;
- }
- }
- }
-
- void update_ise_style (uint32 &style)
- {
- ClientRepository::iterator iter = m_client_repository.begin ();
-
- for (; iter != m_client_repository.end (); iter++) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
-
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- trans.put_command (ISM_TRANS_CMD_UPDATE_ISE_STYLE);
- trans.put_data (style);
-
- trans.write_to_socket (client_socket);
- break;
- }
- }
- }
-
void update_panel_event (int cmd, uint32 nType, uint32 nValue)
{
- SCIM_DEBUG_MAIN(1) << __func__ << " (" << nType << ", " << nValue << ")\n";
- ClientRepository::iterator iter = m_client_repository.begin ();
-
- for (; iter != m_client_repository.end (); iter++) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
+ int focused_client;
+ uint32 focused_context;
+ get_focused_context (focused_client, focused_context);
+ if (focused_client == -1 && m_active_client_id != -1) {
+ focused_client = m_panel_client_map[m_active_client_id];
+ focused_context = 0;
+ }
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- trans.put_command (cmd);
- trans.put_data (nType);
- trans.put_data (nValue);
+ SCIM_DEBUG_MAIN(1) << __func__ << " (" << nType << ", " << nValue << "), client=" << focused_client << "\n";
- trans.write_to_socket (client_socket);
- break;
- }
+ ClientInfo client_info = socket_get_client_info (focused_client);
+ if (client_info.type == FRONTEND_CLIENT) {
+ Socket client_socket (focused_client);
+ m_send_trans.clear ();
+ m_send_trans.put_command (SCIM_TRANS_CMD_REPLY);
+ m_send_trans.put_data (focused_context);
+ m_send_trans.put_command (cmd);
+ m_send_trans.put_data (nType);
+ m_send_trans.put_data (nValue);
+ m_send_trans.write_to_socket (client_socket);
+ } else {
+ std::cerr << __func__ << " client is not existed!!!" << "\n";
}
}
return client >= 0;
}
- bool update_client_id (int client_id)
- {
- SCIM_DEBUG_MAIN(1) << __func__ << " (" << client_id << ")\n";
-
- if (client_id >= 0) {
- uint32 context = 0;
- Socket client_socket (client_id);
- m_send_trans.clear ();
- m_send_trans.put_command (SCIM_TRANS_CMD_REPLY);
- m_send_trans.put_data (context);
- m_send_trans.put_command (ISM_TRANS_CMD_PANEL_UPDATE_CLIENT_ID);
- m_send_trans.put_data ((uint32)client_id);
- m_send_trans.write_to_socket (client_socket);
- }
-
- return client_id >= 0;
- }
-
bool change_factory (const String &uuid)
{
SCIM_DEBUG_MAIN(1) << "PanelAgent::change_factory (" << uuid << ")\n";
void show_isf_panel (int client_id)
{
SCIM_DEBUG_MAIN(4) << "PanelAgent::show_isf_panel ()\n";
- Transaction trans;
- Socket client_socket (client_id);
-
m_signal_show_panel ();
}
void hide_isf_panel (int client_id)
{
SCIM_DEBUG_MAIN(4) << "PanelAgent::hide_isf_panel ()\n";
- Transaction trans;
- Socket client_socket (client_id);
-
m_signal_hide_panel ();
}
bool ret = false;
Transaction trans;
Socket client_socket (client_id);
- m_current_active_imcontrol_id = client_id;
- m_show_request_imcontrol_id = client_id;
+ m_show_request_client_id = client_id;
+ m_active_client_id = client_id;
uint32 client;
uint32 context;
if (m_recv_trans.get_data (client) && m_recv_trans.get_data (context) && m_recv_trans.get_data (&data, len)) {
SCIM_DEBUG_MAIN(4) << __func__ << " (client:" << client << " context:" << context << ")\n";
if (TOOLBAR_HELPER_MODE == m_current_toolbar_mode) {
- uint32 ctx = get_helper_ic (client, context);
+ int focused_client;
+ uint32 focused_context;
+ get_focused_context (focused_client, focused_context);
+ if (focused_client == -1 && m_active_client_id != -1) {
+ focused_client = m_panel_client_map[m_active_client_id];
+ focused_context = 0;
+ }
+
+ uint32 ctx = get_helper_ic (focused_client, focused_context);
ret = show_helper (m_current_helper_uuid, data, len, ctx);
}
}
uint32 context;
if (m_recv_trans.get_data (client) && m_recv_trans.get_data (context)) {
SCIM_DEBUG_MAIN(4) << __func__ << " (client:" << client << " context:" << context << ")\n";
- if ((client_id == m_current_active_imcontrol_id || client_id == m_show_request_imcontrol_id) && TOOLBAR_HELPER_MODE == mode) {
- uint32 ctx = get_helper_ic (client, context);
+ if ((m_panel_client_map[client_id] == m_current_socket_client || client_id == m_show_request_client_id) && TOOLBAR_HELPER_MODE == mode) {
+ int focused_client;
+ uint32 focused_context;
+ get_focused_context (focused_client, focused_context);
+ if (focused_client == -1 && m_active_client_id != -1) {
+ focused_client = m_panel_client_map[m_active_client_id];
+ focused_context = 0;
+ }
+
+ uint32 ctx = get_helper_ic (focused_client, focused_context);
hide_helper (m_current_helper_uuid, ctx);
}
}
}
}
- void set_isf_language (int client_id)
- {
- SCIM_DEBUG_MAIN(4) << "PanelAgent::set_isf_language ()\n";
- char *buf = NULL;
- size_t len;
-
- if (m_recv_trans.get_data (&buf, len)) {
- String lang (buf);
- m_signal_set_isf_language (lang);
- }
-
- if (NULL != buf)
- delete[] buf;
- }
-
void set_ise_imdata (int client_id)
{
SCIM_DEBUG_MAIN(4) << "PanelAgent::set_ise_imdata ()\n";
size_t len;
Transaction trans;
Socket client_socket (client_id);
- m_current_active_imcontrol_id = client_id;
trans.clear ();
trans.put_command (SCIM_TRANS_CMD_REPLY);
delete[] buf;
}
- void update_isf_control_status (const bool showed)
- {
- for (ClientRepository::iterator iter = m_client_repository.begin ();
- iter != m_client_repository.end (); ++iter) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
-
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- if (showed)
- trans.put_command (ISM_TRANS_CMD_ISF_CONTROL_SHOWED);
- else
- trans.put_command (ISM_TRANS_CMD_ISF_CONTROL_HIDED);
- trans.write_to_socket (client_socket);
- break;
- }
- }
- return;
- }
-
void set_ise_return_key_type (int client_id)
{
SCIM_DEBUG_MAIN(4) << __func__ << "\n";
m_send_trans.put_command (SCIM_TRANS_CMD_RELOAD_CONFIG);
for (ClientRepository::iterator it = m_client_repository.begin (); it != m_client_repository.end (); ++it) {
- if (it->second.type == IMCONTROL_ACT_CLIENT
- || it->second.type == IMCONTROL_CLIENT
- || it->second.type == HELPER_ACT_CLIENT)
- continue;
-
- Socket client_socket (it->first);
- m_send_trans.write_to_socket (client_socket);
+ if (it->second.type == FRONTEND_CLIENT || it->second.type == HELPER_CLIENT) {
+ Socket client_socket (it->first);
+ m_send_trans.write_to_socket (client_socket);
+ }
}
unlock ();
m_signal_will_hide_ack ();
}
- void candidate_will_hide_ack (int client_id)
- {
- SCIM_DEBUG_MAIN(4) << "PanelAgent::will_hide_ack ()\n";
-
- m_signal_candidate_will_hide_ack ();
- }
-
void reset_default_ise (int client_id)
{
SCIM_DEBUG_MAIN(4) << __func__ << "\n";
std::cerr << "Read SCIM_GLOBAL_CONFIG_INITIAL_ISE_UUID is failed!!!\n";
}
+ void set_hardware_keyboard_mode (int client_id)
+ {
+ SCIM_DEBUG_MAIN(4) << "PanelAgent::set_hardware_keyboard_mode ()\n";
+
+ m_signal_set_hardware_keyboard_mode ();
+ }
+
+ void candidate_will_hide_ack (int client_id)
+ {
+ SCIM_DEBUG_MAIN(4) << "PanelAgent::will_hide_ack ()\n";
+
+ m_signal_candidate_will_hide_ack ();
+ }
+
Connection signal_connect_reload_config (PanelAgentSlotVoid *slot)
{
return m_signal_reload_config.connect (slot);
return m_signal_get_ise_language.connect (slot);
}
- Connection signal_connect_set_isf_language (PanelAgentSlotString *slot)
- {
- return m_signal_set_isf_language.connect (slot);
- }
-
Connection signal_connect_get_ise_info_by_uuid (PanelAgentSlotStringISEINFO *slot)
{
return m_signal_get_ise_info_by_uuid.connect (slot);
return m_signal_will_hide_ack.connect (slot);
}
+ Connection signal_connect_set_hardware_keyboard_mode (PanelAgentSlotVoid *slot)
+ {
+ return m_signal_set_hardware_keyboard_mode.connect (slot);
+ }
+
Connection signal_connect_candidate_will_hide_ack (PanelAgentSlotVoid *slot)
{
return m_signal_candidate_will_hide_ack.connect (slot);
}
+
private:
bool socket_check_client_connection (const Socket &client)
{
/* If it's a new client, then request to open the connection first. */
if (client_info.type == UNKNOWN_CLIENT) {
- bool bSuccess = socket_open_connection (server, client);
- if (bSuccess) {
- ClientInfo client_info = socket_get_client_info (client_id);
- if (client_info.type == FRONTEND_CLIENT)
- update_client_id (client_id);
- }
+ socket_open_connection (server, client);
return;
}
!m_recv_trans.get_data (key) || key != (uint32) client_info.key)
return;
- if (client_info.type == FRONTEND_CLIENT) {
+ if (client_info.type == FRONTEND_ACT_CLIENT) {
if (m_recv_trans.get_data (context)) {
SCIM_DEBUG_MAIN (1) << "PanelAgent::FrontEnd Client, context = " << context << "\n";
socket_transaction_start();
while (m_recv_trans.get_command (cmd)) {
SCIM_DEBUG_MAIN (3) << "PanelAgent::cmd = " << cmd << "\n";
+ if (cmd == ISM_TRANS_CMD_REGISTER_PANEL_CLIENT) {
+ uint32 id = 0;
+ if (m_recv_trans.get_data (id)) {
+ SCIM_DEBUG_MAIN(4) << " ISM_TRANS_CMD_REGISTER_PANEL_CLIENT (" << client_id << "," << "," << context << "," << id << ")\n";
+ m_panel_client_map [client_id] = (int)id;
+ }
+ continue;
+ }
+
if (cmd == SCIM_TRANS_CMD_PANEL_REGISTER_INPUT_CONTEXT) {
if (m_recv_trans.get_data (uuid)) {
SCIM_DEBUG_MAIN (2) << "PanelAgent::register_input_context (" << client_id << "," << "," << context << "," << uuid << ")\n";
- uint32 ctx = get_helper_ic (client_id, context);
+ uint32 ctx = get_helper_ic (m_panel_client_map[client_id], context);
m_client_context_uuids [ctx] = uuid;
}
continue;
}
if (cmd == SCIM_TRANS_CMD_PANEL_REMOVE_INPUT_CONTEXT) {
- uint32 ctx = get_helper_ic (client_id, context);
+ SCIM_DEBUG_MAIN(4) << " SCIM_TRANS_CMD_PANEL_REMOVE_INPUT_CONTEXT (" << "client:" << client_id << " context:" << context << ")\n";
+ uint32 ctx = get_helper_ic (m_panel_client_map[client_id], context);
m_client_context_uuids.erase (ctx);
if (ctx == get_helper_ic (m_current_socket_client, m_current_client_context)) {
lock ();
}
if (cmd == SCIM_TRANS_CMD_PANEL_RESET_INPUT_CONTEXT) {
- socket_reset_input_context (client_id, context);
+ socket_reset_input_context (m_panel_client_map[client_id], context);
continue;
}
SCIM_DEBUG_MAIN(4) << " SCIM_TRANS_CMD_FOCUS_IN (" << "client:" << client_id << " context:" << context << ")\n";
m_signal_focus_in ();
if (TOOLBAR_HELPER_MODE == m_current_toolbar_mode)
- focus_in_helper (m_current_helper_uuid, client_id, context);
+ focus_in_helper (m_current_helper_uuid, m_panel_client_map[client_id], context);
if (m_recv_trans.get_data (uuid)) {
SCIM_DEBUG_MAIN (2) << "PanelAgent::focus_in (" << client_id << "," << "," << context << "," << uuid << ")\n";
+ m_active_client_id = client_id;
lock ();
if (m_current_socket_client >= 0) {
m_last_socket_client = m_current_socket_client;
m_last_client_context = m_current_client_context;
m_last_context_uuid = m_current_context_uuid;
}
- m_current_socket_client = client_id;
+ m_current_socket_client = m_panel_client_map[client_id];
m_current_client_context = context;
m_current_context_uuid = uuid;
unlock ();
continue;
}
+ if (cmd == ISM_TRANS_CMD_SHOW_ISF_CONTROL) {
+ show_isf_panel (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_HIDE_ISF_CONTROL) {
+ hide_isf_panel (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SHOW_ISE_PANEL) {
+ show_ise_panel (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_HIDE_ISE_PANEL) {
+ hide_ise_panel (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_ACTIVE_ISE_GEOMETRY) {
+ get_input_panel_geometry (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_CANDIDATE_GEOMETRY) {
+ get_candidate_window_geometry (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_ISE_LANGUAGE_LOCALE) {
+ get_ise_language_locale (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_ISE_LANGUAGE) {
+ set_ise_language (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_ISE_IMDATA) {
+ set_ise_imdata (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_ISE_IMDATA) {
+ get_ise_imdata (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_RETURN_KEY_TYPE) {
+ set_ise_return_key_type (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_RETURN_KEY_TYPE) {
+ get_ise_return_key_type (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_RETURN_KEY_DISABLE) {
+ set_ise_return_key_disable (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE) {
+ get_ise_return_key_disable (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_GET_LAYOUT) {
+ get_ise_layout (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_LAYOUT) {
+ set_ise_layout (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_CAPS_MODE) {
+ set_ise_caps_mode (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SEND_WILL_SHOW_ACK) {
+ will_show_ack (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SEND_WILL_HIDE_ACK) {
+ will_hide_ack (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SET_HARDWARE_KEYBOARD_MODE) {
+ set_hardware_keyboard_mode (client_id);
+ continue;
+ } else if (cmd == ISM_TRANS_CMD_SEND_CANDIDATE_WILL_HIDE_ACK) {
+ candidate_will_hide_ack (client_id);
+ continue;
+ }
+
current = last = false;
uuid.clear ();
/* Get the context uuid from the client context registration table. */
{
- ClientContextUUIDRepository::iterator it = m_client_context_uuids.find (get_helper_ic (client_id, context));
+ ClientContextUUIDRepository::iterator it = m_client_context_uuids.find (get_helper_ic (m_panel_client_map[client_id], context));
if (it != m_client_context_uuids.end ())
uuid = it->second;
}
- if (m_current_socket_client == client_id && m_current_client_context == context) {
+ if (m_current_socket_client == m_panel_client_map[client_id] && m_current_client_context == context) {
current = true;
if (!uuid.length ()) uuid = m_current_context_uuid;
- } else if (m_last_socket_client == client_id && m_last_client_context == context) {
+ } else if (m_last_socket_client == m_panel_client_map[client_id] && m_last_client_context == context) {
last = true;
if (!uuid.length ()) uuid = m_last_context_uuid;
}
}
if (cmd == SCIM_TRANS_CMD_START_HELPER) {
- socket_start_helper (client_id, context, uuid);
+ socket_start_helper (m_panel_client_map[client_id], context, uuid);
continue;
} else if (cmd == SCIM_TRANS_CMD_SEND_HELPER_EVENT) {
- socket_send_helper_event (client_id, context, uuid);
+ socket_send_helper_event (m_panel_client_map[client_id], context, uuid);
continue;
} else if (cmd == SCIM_TRANS_CMD_STOP_HELPER) {
- socket_stop_helper (client_id, context, uuid);
+ socket_stop_helper (m_panel_client_map[client_id], context, uuid);
continue;
}
TOOLBAR_MODE_T mode = m_current_toolbar_mode;
if (TOOLBAR_HELPER_MODE == mode)
- focus_out_helper (m_current_helper_uuid, client_id, context);
+ focus_out_helper (m_current_helper_uuid, m_panel_client_map[client_id], context);
if (m_current_socket_client >= 0) {
m_last_socket_client = m_current_socket_client;
}
socket_transaction_end ();
}
+ } else if (client_info.type == FRONTEND_CLIENT) {
+ if (m_recv_trans.get_data (context)) {
+ SCIM_DEBUG_MAIN (1) << "client_info.type == FRONTEND_CLIENT\n";
+ socket_transaction_start();
+ while (m_recv_trans.get_command (cmd)) {
+ SCIM_DEBUG_MAIN (3) << "PanelAgent::cmd = " << cmd << "\n";
+
+ if (cmd == ISM_TRANS_CMD_GET_PANEL_CLIENT_ID) {
+ Socket client_socket (client_id);
+
+ Transaction trans;
+ trans.clear ();
+ trans.put_command (SCIM_TRANS_CMD_REPLY);
+ trans.put_command (SCIM_TRANS_CMD_OK);
+ trans.put_data (client_id);
+ trans.write_to_socket (client_socket);
+ continue;
+ }
+ }
+ socket_transaction_end ();
+ }
} else if (client_info.type == HELPER_CLIENT) {
socket_transaction_start ();
while (m_recv_trans.get_command (cmd)) {
} else if (cmd == SCIM_TRANS_CMD_RELOAD_CONFIG) {
reload_config ();
m_signal_reload_config ();
- } else if (cmd == ISM_TRANS_CMD_ISE_PANEL_HIDED) {
- socket_helper_update_state_hided (client_id);
- } else if (cmd == ISM_TRANS_CMD_ISE_PANEL_SHOWED) {
- socket_helper_update_state_showed (client_id);
} else if (cmd == ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT) {
socket_helper_update_input_context (client_id);
} else if (cmd == ISM_TRANS_CMD_GET_KEYBOARD_ISE_LIST) {
socket_transaction_start ();
while (m_recv_trans.get_command (cmd)) {
- if (cmd == ISM_TRANS_CMD_SHOW_ISF_CONTROL)
- show_isf_panel (client_id);
- else if (cmd == ISM_TRANS_CMD_HIDE_ISF_CONTROL)
- hide_isf_panel (client_id);
- else if (cmd == ISM_TRANS_CMD_SHOW_ISE_PANEL)
- show_ise_panel (client_id);
- else if (cmd == ISM_TRANS_CMD_HIDE_ISE_PANEL)
- hide_ise_panel (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_ACTIVE_ISE_GEOMETRY)
- get_input_panel_geometry (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_CANDIDATE_GEOMETRY)
- get_candidate_window_geometry (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_ISE_LANGUAGE_LOCALE)
- get_ise_language_locale (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_ISE_MODE)
- set_ise_mode (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_ISE_LANGUAGE)
- set_ise_language (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_ISE_IMDATA)
- set_ise_imdata (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_ISE_IMDATA)
- get_ise_imdata (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_ACTIVE_ISE)
+ if (cmd == ISM_TRANS_CMD_GET_ACTIVE_ISE)
get_active_ise (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_ACTIVE_ISE_BY_UUID)
+ else if (cmd == ISM_TRANS_CMD_SET_ACTIVE_ISE_BY_UUID) {
set_active_ise_by_uuid (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_RETURN_KEY_TYPE)
- set_ise_return_key_type (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_RETURN_KEY_TYPE)
- get_ise_return_key_type (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_RETURN_KEY_DISABLE)
- set_ise_return_key_disable (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE)
- get_ise_return_key_disable (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_LAYOUT)
- get_ise_layout (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_LAYOUT)
- set_ise_layout (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_CAPS_MODE)
- set_ise_caps_mode (client_id);
+ }
else if (cmd == ISM_TRANS_CMD_GET_ISE_LIST)
get_ise_list (client_id);
else if (cmd == ISM_TRANS_CMD_GET_ISE_INFORMATION)
get_ise_information (client_id);
else if (cmd == ISM_TRANS_CMD_RESET_ISE_OPTION)
reset_ise_option (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_LANGUAGE_LIST)
- get_language_list (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_ALL_LANGUAGE_LIST)
- get_all_language (client_id);
- else if (cmd == ISM_TRANS_CMD_GET_ISE_LANGUAGE)
- get_ise_language (client_id);
- else if (cmd == ISM_TRANS_CMD_SET_ISF_LANGUAGE)
- set_isf_language (client_id);
- else if (cmd == ISM_TRANS_CMD_RESET_ISE_CONTEXT)
- reset_ise_context (client_id);
- else if (cmd == SCIM_TRANS_CMD_FOCUS_IN)
- m_current_active_imcontrol_id = client_id;
- else if (cmd == ISM_TRANS_CMD_SEND_WILL_SHOW_ACK)
- will_show_ack (client_id);
- else if (cmd == ISM_TRANS_CMD_SEND_WILL_HIDE_ACK)
- will_hide_ack (client_id);
- else if (cmd == ISM_TRANS_CMD_SEND_CANDIDATE_WILL_HIDE_ACK)
- candidate_will_hide_ack (client_id);
else if (cmd == ISM_TRANS_CMD_RESET_DEFAULT_ISE)
reset_default_ise (client_id);
}
uint32 key;
String type = scim_socket_accept_connection (key,
String ("Panel"),
- String ("FrontEnd,Helper,Helper_Active,IMControl_Active,IMControl_Passive"),
+ String ("FrontEnd,FrontEnd_Active,Helper,Helper_Active,IMControl_Active,IMControl_Passive"),
client,
m_socket_timeout);
ClientInfo info;
info.key = key;
info.type = ((type == "FrontEnd") ? FRONTEND_CLIENT :
+ ((type == "FrontEnd_Active") ? FRONTEND_ACT_CLIENT :
((type == "IMControl_Active") ? IMCONTROL_ACT_CLIENT :
((type == "Helper_Active") ? HELPER_ACT_CLIENT :
- ((type == "IMControl_Passive") ? IMCONTROL_CLIENT : HELPER_CLIENT))));
+ ((type == "IMControl_Passive") ? IMCONTROL_CLIENT : HELPER_CLIENT)))));
SCIM_DEBUG_MAIN (4) << "Add client to repository. Type=" << type << " key=" << key << "\n";
lock ();
SCIM_DEBUG_MAIN(4) << "It's a FrontEnd client.\n";
/* The focused client is closed. */
if (m_current_socket_client == client.get_id ()) {
+ if (TOOLBAR_HELPER_MODE == m_current_toolbar_mode)
+ hide_helper (m_current_helper_uuid);
+
lock ();
m_current_socket_client = -1;
m_current_client_context = 0;
if (!(iter->second.option & ISM_ISE_HIDE_IN_CONTROL_PANEL))
socket_update_control_panel ();
}
+ } else if (client_info.type == FRONTEND_ACT_CLIENT) {
+ SCIM_DEBUG_MAIN(4) << "It's a FRONTEND_ACT_CLIENT client.\n";
+ IntIntRepository::iterator iter2 = m_panel_client_map.find (client.get_id ());
+ if (iter2 != m_panel_client_map.end ())
+ m_panel_client_map.erase (iter2);
} else if (client_info.type == HELPER_CLIENT) {
SCIM_DEBUG_MAIN(4) << "It's a Helper client.\n";
SCIM_DEBUG_MAIN(4) << "It's a IMCONTROL_ACT_CLIENT client.\n";
int client_id = client.get_id ();
- if (client_id == m_current_active_imcontrol_id
- && TOOLBAR_HELPER_MODE == m_current_toolbar_mode)
- hide_helper (m_current_helper_uuid);
-
IMControlRepository::iterator iter = m_imcontrol_repository.find (client_id);
if (iter != m_imcontrol_repository.end ()) {
int size = iter->second.info.size ();
m_send_trans.put_data (icit->second [i].second);
}
m_start_helper_ic_index.erase (icit);
- } else {
- m_send_trans.put_command (SCIM_TRANS_CMD_HELPER_ATTACH_INPUT_CONTEXT);
- uint32 ctx = get_helper_ic (m_current_socket_client, m_current_client_context);
- m_send_trans.put_data (ctx);
- m_send_trans.put_data (info.uuid);
}
m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_SCREEN);
unlock ();
}
- void socket_helper_update_state_hided (int client)
- {
- SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_helper_update_state_hided (" << client << ")\n";
-
- ClientRepository::iterator iter = m_client_repository.begin ();
-
- for (; iter != m_client_repository.end (); iter++) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
-
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- trans.put_command (ISM_TRANS_CMD_ISE_PANEL_HIDED);
-
- trans.write_to_socket (client_socket);
- break;
- }
- }
- }
-
- void socket_helper_update_state_showed (int client)
- {
- SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_helper_update_state_showed (" << client << ")\n";
-
- ClientRepository::iterator iter = m_client_repository.begin ();
-
- for (; iter != m_client_repository.end (); iter++) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
-
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- trans.put_command (ISM_TRANS_CMD_ISE_PANEL_SHOWED);
-
- trans.write_to_socket (client_socket);
- break;
- }
- }
- }
-
void socket_helper_update_input_context (int client)
{
SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_helper_update_input_context (" << client << ")\n";
if (m_recv_trans.get_data (type) && m_recv_trans.get_data (value)) {
m_signal_update_input_context ((int)type, (int)value);
- ClientRepository::iterator iter = m_client_repository.begin ();
-
- for (; iter != m_client_repository.end (); iter++) {
- if (IMCONTROL_CLIENT == iter->second.type && iter->first == m_imcontrol_map[m_current_active_imcontrol_id]) {
- Socket client_socket (iter->first);
- Transaction trans;
- trans.clear ();
- trans.put_command (SCIM_TRANS_CMD_REQUEST);
- trans.put_command (ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT);
- trans.put_data (type);
- trans.put_data (value);
+ int focused_client;
+ uint32 focused_context;
+ get_focused_context (focused_client, focused_context);
- trans.write_to_socket (client_socket);
- break;
- }
+ ClientInfo client_info = socket_get_client_info (focused_client);
+ if (client_info.type == FRONTEND_CLIENT) {
+ Socket client_socket (focused_client);
+ m_send_trans.clear ();
+ m_send_trans.put_command (SCIM_TRANS_CMD_REPLY);
+ m_send_trans.put_data (focused_context);
+ m_send_trans.put_command (ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT);
+ m_send_trans.put_data (type);
+ m_send_trans.put_data (value);
+ m_send_trans.write_to_socket (client_socket);
+ } else {
+ std::cerr << "focused client is not existed!!!" << "\n";
}
}
}
m_impl->set_current_ise_style (style);
}
-void
-PanelAgent::update_ise_name (String &name)
-{
- m_impl->update_ise_name (name);
-}
-
-void
-PanelAgent::update_ise_style (uint32 &style)
-{
- m_impl->update_ise_style (style);
-}
-
void
PanelAgent::update_candidate_panel_event (uint32 nType, uint32 nValue)
{
return m_impl->filter_helper_manager_event ();
}
-void
-PanelAgent::update_isf_control_status (const bool showed)
-{
- m_impl->update_isf_control_status (showed);
-}
-
int
PanelAgent::send_display_name (String &name)
{
return m_impl->signal_connect_get_ise_language (slot);
}
-Connection
-PanelAgent::signal_connect_set_isf_language (PanelAgentSlotString *slot)
-{
- return m_impl->signal_connect_set_isf_language (slot);
-}
-
Connection
PanelAgent::signal_connect_get_ise_info_by_uuid (PanelAgentSlotStringISEINFO *slot)
{
}
Connection
-PanelAgent::signal_connect_candidate_will_hide_ack (PanelAgentSlotVoid *slot)
+PanelAgent::signal_connect_set_hardware_keyboard_mode (PanelAgentSlotVoid *slot)
+{
+ return m_impl->signal_connect_set_hardware_keyboard_mode (slot);
+}
+
+Connection
+PanelAgent::signal_connect_candidate_will_hide_ack (PanelAgentSlotVoid *slot)
{
return m_impl->signal_connect_candidate_will_hide_ack (slot);
}
*/
void get_current_ise_geometry (rectinfo &rect);
- /**
- * @brief Update ISE name to IM Control.
- *
- * @param name The ISE name.
- */
- void update_ise_name (String &name);
-
- /**
- * @brief Update ISE style to IM Control.
- *
- * @param style The ISE style.
- */
- void update_ise_style (uint32 &style);
-
/**
* @brief Send candidate panel event to IM Control.
*
*/
void update_input_panel_event (uint32 nType, uint32 nValue);
- /**
- * @brief Update ISE control panel status to IM Control.
- *
- * @param showed The control panel status.
- */
- void update_isf_control_status (const bool showed);
-
/**
* @brief Notice helper ISE to focus out.
*
*/
Connection signal_connect_get_ise_language (PanelAgentSlotStrStringVector *slot);
- /**
- * @brief Signal: Set the isf language.
- *
- * slot prototype: void get_ise_language (char *, std::vector<String> &);
- */
- Connection signal_connect_set_isf_language (PanelAgentSlotString *slot);
-
/**
* @brief Signal: Get the ise information by uuid.
*
*/
Connection signal_connect_will_hide_ack (PanelAgentSlotVoid *slot);
+ /**
+ * @brief Signal: Set hardware mode
+ *
+ * slot prototype: void set_hardware_keyboard_mode (void);
+ */
+ Connection signal_connect_set_hardware_keyboard_mode (PanelAgentSlotVoid *slot);
+
/**
* @brief Signal: Notifies the client finished handling WILL_HIDE event for candidate
*
* slot prototype: void candidate_will_hide_ack (void);
*/
Connection signal_connect_candidate_will_hide_ack (PanelAgentSlotVoid *slot);
+
};
/** @} */
*
* Modifications by Samsung Electronics Co., Ltd.
* 1. Add new signals
- * a. m_signal_select_aux, m_signal_reset_keyboard_ise and m_signal_update_client_id
+ * a. m_signal_select_aux, m_signal_reset_keyboard_ise
* b. m_signal_update_candidate_item_layout and m_signal_update_displayed_candidate_number
* c. m_signal_get_surrounding_text and m_signal_delete_surrounding_text
* d. m_signal_show_preedit_string, m_signal_hide_preedit_string, m_signal_update_preedit_string and m_signal_update_preedit_caret
* e. m_signal_candidate_more_window_show, m_signal_candidate_more_window_hide, m_signal_longpress_candidate
+ * f. m_signal_update_ise_input_context, m_signal_update_isf_candidate_panel
* 2. Add new interface APIs in PanelClient class
* a. update_cursor_position () and update_surrounding_text ()
* b. expand_candidate (), contract_candidate () and set_candidate_style ()
- * c. reset_input_context () and turn_on_log
+ * c. reset_input_context () and turn_on_log ()
+ * d. get_client_id () and register_client ()
*
* $Id: scim_panel_client.cpp,v 1.6 2005/06/26 16:35:33 suzhe Exp $
*
#include "scim.h"
#include <unistd.h>
+#include <string.h>
namespace scim {
class PanelClient::PanelClientImpl
{
SocketClient m_socket;
+ SocketClient m_socket_active;
int m_socket_timeout;
uint32 m_socket_magic_key;
+ uint32 m_socket_magic_key_active;
Transaction m_send_trans;
+ Transaction m_recv_trans;
int m_current_icid;
int m_send_refcount;
PanelClientSignalVoid m_signal_candidate_more_window_show;
PanelClientSignalVoid m_signal_candidate_more_window_hide;
PanelClientSignalInt m_signal_longpress_candidate;
- PanelClientSignalInt m_signal_update_client_id;
+ PanelClientSignalIntInt m_signal_update_ise_input_context;
+ PanelClientSignalIntInt m_signal_update_isf_candidate_panel;
public:
PanelClientImpl ()
: m_socket_timeout (scim_get_default_socket_timeout ()),
- m_socket_magic_key (0),
+ m_socket_magic_key (0), m_socket_magic_key_active (0),
m_current_icid (-1),
m_send_refcount (0)
{
if (ret && scim_socket_open_connection (m_socket_magic_key, String ("FrontEnd"), String ("Panel"), m_socket, m_socket_timeout)) {
ISF_LOG (" PID=%d connect to PanelAgent (%s), connected:%d.\n", getpid (), panel_address.c_str (), count);
+ if (!m_socket_active.connect (addr))
+ return -1;
+ if (!scim_socket_open_connection (m_socket_magic_key_active,
+ String ("FrontEnd_Active"), String ("Panel"),
+ m_socket_active, m_socket_timeout)) {
+ m_socket_active.close ();
+ m_socket_magic_key_active = 0;
+ return -1;
+ }
break;
} else {
std::cerr << " PID=" << getpid () << " cannot connect to PanelAgent (" << panel_address << "), connected:" << count << ".\n";
void close_connection ()
{
m_socket.close ();
- m_socket_magic_key = 0;
+ m_socket_active.close ();
+ m_socket_magic_key = 0;
+ m_socket_magic_key_active = 0;
}
int get_connection_number () const
m_signal_longpress_candidate ((int) context, (int)index);
}
break;
- case ISM_TRANS_CMD_PANEL_UPDATE_CLIENT_ID:
+ case ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT:
+ {
+ uint32 type, value;
+ if (recv.get_data (type) && recv.get_data (value))
+ m_signal_update_ise_input_context ((int) context, (int)type, (int)value);
+ }
+ break;
+ case ISM_TRANS_CMD_UPDATE_ISF_CANDIDATE_PANEL:
{
- uint32 client_id;
- if (recv.get_data (client_id))
- m_signal_update_client_id ((int) context, (int)client_id);
+ uint32 type, value;
+ if (recv.get_data (type) && recv.get_data (value))
+ m_signal_update_isf_candidate_panel ((int) context, (int)type, (int)value);
}
break;
default:
bool prepare (int icid)
{
- if (!m_socket.is_connected ()) return false;
+ if (!m_socket_active.is_connected ()) return false;
int cmd;
uint32 data;
m_current_icid = icid;
m_send_trans.clear ();
m_send_trans.put_command (SCIM_TRANS_CMD_REQUEST);
- m_send_trans.put_data (m_socket_magic_key);
+ m_send_trans.put_data (m_socket_magic_key_active);
m_send_trans.put_data ((uint32) icid);
if (m_send_trans.get_command (cmd) &&
bool send ()
{
- if (!m_socket.is_connected ()) return false;
+ if (!m_socket_active.is_connected ()) return false;
if (m_send_refcount <= 0) return false;
if (m_send_refcount > 0) return false;
if (m_send_trans.get_data_type () != SCIM_TRANS_DATA_UNKNOWN)
- return m_send_trans.write_to_socket (m_socket, 0x4d494353);
+ return m_send_trans.write_to_socket (m_socket_active, 0x4d494353);
return false;
}
}
}
+ bool post_prepare (void)
+ {
+ if (m_socket_active.is_connected () && m_send_refcount > 0) {
+ m_send_trans.clear ();
+ m_send_trans.put_command (SCIM_TRANS_CMD_REQUEST);
+ m_send_trans.put_data (m_socket_magic_key_active);
+ m_send_trans.put_data ((uint32) m_current_icid);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ bool instant_send (void)
+ {
+ if (m_socket_active.is_connected () && m_send_refcount > 0) {
+
+ m_send_refcount --;
+
+ if (m_send_trans.get_data_type () != SCIM_TRANS_DATA_UNKNOWN)
+ return m_send_trans.write_to_socket (m_socket_active, 0x4d494353);
+ }
+
+ return false;
+ }
+
+ void show_ise (int client_id, int icid, void *data, int length, int *input_panel_show) {
+ if (m_send_refcount > 0 && m_current_icid == icid) {
+ int cmd;
+ uint32 temp;
+ m_send_trans.put_command (ISM_TRANS_CMD_SHOW_ISE_PANEL);
+ m_send_trans.put_data ((uint32)client_id);
+ m_send_trans.put_data ((uint32)icid);
+ m_send_trans.put_data ((const char *)data, (size_t)length);
+ instant_send ();
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (temp)) {
+ if (input_panel_show)
+ *input_panel_show = temp;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ if (input_panel_show)
+ *input_panel_show = false;
+ }
+ post_prepare ();
+ }
+ }
+
+ void hide_ise (int client_id, int icid) {
+ if (m_send_refcount > 0 && m_current_icid == icid) {
+ m_send_trans.put_command (ISM_TRANS_CMD_HIDE_ISE_PANEL);
+ m_send_trans.put_data ((uint32)client_id);
+ m_send_trans.put_data ((uint32)icid);
+ }
+ }
+
+ void show_control_panel (void) {
+ if (m_send_refcount > 0)
+ m_send_trans.put_command (ISM_TRANS_CMD_SHOW_ISF_CONTROL);
+ }
+
+ void hide_control_panel (void) {
+ if (m_send_refcount > 0)
+ m_send_trans.put_command (ISM_TRANS_CMD_HIDE_ISF_CONTROL);
+ }
+
+ void set_imdata (const char* data, int len) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_ISE_IMDATA);
+ m_send_trans.put_data (data, len);
+ }
+ }
+
+ void get_imdata (char* data, int* len) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ size_t datalen = 0;
+ char* data_temp = NULL;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_ISE_IMDATA);
+ instant_send ();
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (&data_temp, datalen)) {
+ memcpy (data, data_temp, datalen);
+ *len = datalen;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ }
+ if (data_temp)
+ delete [] data_temp;
+ post_prepare ();
+ }
+ }
+
+ void get_ise_window_geometry (int* x, int* y, int* width, int* height) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ uint32 x_temp = 0;
+ uint32 y_temp = 0;
+ uint32 w_temp = 0;
+ uint32 h_temp = 0;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_ACTIVE_ISE_GEOMETRY);
+ instant_send ();
+
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (x_temp) &&
+ m_send_trans.get_data (y_temp) &&
+ m_send_trans.get_data (w_temp) &&
+ m_send_trans.get_data (h_temp)) {
+ *x = x_temp;
+ *y = y_temp;
+ *width = w_temp;
+ *height = h_temp;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ }
+ post_prepare ();
+ }
+ }
+
+ void get_candidate_window_geometry (int* x, int* y, int* width, int* height) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ uint32 x_temp = 0;
+ uint32 y_temp = 0;
+ uint32 w_temp = 0;
+ uint32 h_temp = 0;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_CANDIDATE_GEOMETRY);
+ instant_send ();
+
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket () may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (x_temp) &&
+ m_send_trans.get_data (y_temp) &&
+ m_send_trans.get_data (w_temp) &&
+ m_send_trans.get_data (h_temp)) {
+ *x = x_temp;
+ *y = y_temp;
+ *width = w_temp;
+ *height = h_temp;
+ } else {
+ std::cerr << __func__ << " get_command () or get_data () is failed!!!\n";
+ }
+ post_prepare ();
+ }
+ }
+
+ void get_ise_language_locale (char **locale) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ size_t datalen = 0;
+ char *data = NULL;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_ISE_LANGUAGE_LOCALE);
+ instant_send ();
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket () may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (&data, datalen)) {
+ if (locale)
+ *locale = strndup (data, datalen);
+ } else {
+ std::cerr << __func__ << " get_command () or get_data () is failed!!!\n";
+ if (locale)
+ *locale = strdup ("");
+ }
+ if (data)
+ delete [] data;
+ post_prepare ();
+ }
+ }
+
+ void set_return_key_type (int type) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_RETURN_KEY_TYPE);
+ m_send_trans.put_data (type);
+ }
+ }
+
+ void get_return_key_type (int &type) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ uint32 temp;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_RETURN_KEY_TYPE);
+ instant_send ();
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (temp)) {
+ type = temp;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ }
+ post_prepare ();
+ }
+ }
+
+ void set_return_key_disable (int disabled) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_RETURN_KEY_DISABLE);
+ m_send_trans.put_data (disabled);
+ }
+ }
+
+ void get_return_key_disable (int &disabled) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ uint32 temp;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE);
+ instant_send ();
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (temp)) {
+ disabled = temp;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ }
+ post_prepare ();
+ }
+ }
+
+ void set_layout (int layout) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_LAYOUT);
+ m_send_trans.put_data (layout);
+ }
+ }
+
+ void get_layout (int* layout) {
+ if (m_send_refcount > 0) {
+ int cmd;
+ uint32 layout_temp;
+
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_LAYOUT);
+ instant_send ();
+ if (!m_send_trans.read_from_socket (m_socket_active, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (layout_temp)) {
+ *layout = layout_temp;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ }
+ post_prepare ();
+ }
+ }
+
+ void set_ise_language (int language) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_ISE_LANGUAGE);
+ m_send_trans.put_data (language);
+ }
+ }
+
+ void set_caps_mode (int mode) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_CAPS_MODE);
+ m_send_trans.put_data (mode);
+ }
+ }
+
+ void send_will_show_ack (void) {
+ if (m_send_refcount > 0)
+ m_send_trans.put_command (ISM_TRANS_CMD_SEND_WILL_SHOW_ACK);
+ }
+
+ void send_will_hide_ack (void) {
+ if (m_send_refcount > 0)
+ m_send_trans.put_command (ISM_TRANS_CMD_SEND_WILL_HIDE_ACK);
+ }
+
+ void set_hardware_keyboard_mode (void) {
+ if (m_send_refcount > 0)
+ m_send_trans.put_command (ISM_TRANS_CMD_SET_HARDWARE_KEYBOARD_MODE);
+ }
+
+ void send_candidate_will_hide_ack (void) {
+ if (m_send_refcount > 0)
+ m_send_trans.put_command (ISM_TRANS_CMD_SEND_CANDIDATE_WILL_HIDE_ACK);
+ }
+
+ bool get_client_id (int &client_id) {
+ if (!m_socket.is_connected ()) return false;
+
+ int cmd;
+ uint32 data;
+ uint32 id;
+
+ m_send_trans.clear ();
+ m_send_trans.put_command (SCIM_TRANS_CMD_REQUEST);
+ m_send_trans.put_data (m_socket_magic_key);
+ m_send_trans.put_data (0);
+
+ if (m_send_trans.get_command (cmd) &&
+ m_send_trans.get_data (data) &&
+ m_send_trans.get_data (data)) {
+ m_send_trans.put_command (ISM_TRANS_CMD_GET_PANEL_CLIENT_ID);
+ m_send_trans.write_to_socket (m_socket);
+
+ if (!m_send_trans.read_from_socket (m_socket, m_socket_timeout))
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+ if (m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_send_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK &&
+ m_send_trans.get_data (id)) {
+ client_id = id;
+ return true;
+ } else {
+ std::cerr << __func__ << " get_command() or get_data() may fail!!!\n";
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+ void register_client (int client_id) {
+ if (m_send_refcount > 0) {
+ m_send_trans.put_command (ISM_TRANS_CMD_REGISTER_PANEL_CLIENT);
+ m_send_trans.put_data (client_id);
+ }
+ }
+
public:
void reset_signal_handler (void)
{
m_signal_candidate_more_window_show.reset();
m_signal_candidate_more_window_hide.reset();
m_signal_longpress_candidate.reset();
- m_signal_update_client_id.reset();
+ m_signal_update_ise_input_context.reset();
+ m_signal_update_isf_candidate_panel.reset();
}
Connection signal_connect_reload_config (PanelClientSlotVoid *slot)
return m_signal_longpress_candidate.connect (slot);
}
- Connection signal_connect_update_client_id (PanelClientSlotInt *slot)
+ Connection signal_connect_update_ise_input_context (PanelClientSlotIntInt *slot)
+ {
+ return m_signal_update_ise_input_context.connect (slot);
+ }
+
+ Connection signal_connect_update_isf_candidate_panel (PanelClientSlotIntInt *slot)
{
- return m_signal_update_client_id.connect (slot);
+ return m_signal_update_isf_candidate_panel.connect (slot);
}
private:
m_impl->set_candidate_style (icid, portrait_line, mode);
}
+void
+PanelClient::show_ise (int client_id, int icid, void *data, int length, int *input_panel_show)
+{
+ m_impl->show_ise (client_id, icid, data, length, input_panel_show);
+}
+
+void
+PanelClient::hide_ise (int client_id, int icid)
+{
+ m_impl->hide_ise (client_id, icid);
+}
+
+void
+PanelClient::show_control_panel (void)
+{
+ m_impl->show_control_panel ();
+}
+
+void
+PanelClient::hide_control_panel (void)
+{
+ m_impl->hide_control_panel ();
+}
+
+void
+PanelClient::set_imdata (const char* data, int len)
+{
+ m_impl->set_imdata (data, len);
+}
+
+void
+PanelClient::get_imdata (char* data, int* len)
+{
+ m_impl->get_imdata (data, len);
+}
+
+void
+PanelClient::get_ise_window_geometry (int* x, int* y, int* width, int* height)
+{
+ m_impl->get_ise_window_geometry (x, y, width, height);
+}
+
+void
+PanelClient::get_candidate_window_geometry (int* x, int* y, int* width, int* height)
+{
+ m_impl->get_candidate_window_geometry (x, y, width, height);
+}
+
+void
+PanelClient::get_ise_language_locale (char **locale)
+{
+ m_impl->get_ise_language_locale (locale);
+}
+
+void
+PanelClient::set_return_key_type (int type)
+{
+ m_impl->set_return_key_type (type);
+}
+
+void
+PanelClient::get_return_key_type (int &type)
+{
+ m_impl->get_return_key_type (type);
+}
+
+void
+PanelClient::set_return_key_disable (int disabled)
+{
+ m_impl->set_return_key_disable (disabled);
+}
+
+void
+PanelClient::get_return_key_disable (int &disabled)
+{
+ m_impl->get_return_key_disable (disabled);
+}
+
+void
+PanelClient::set_layout (int layout)
+{
+ m_impl->set_layout (layout);
+}
+
+void
+PanelClient::get_layout (int* layout)
+{
+ m_impl->get_layout (layout);
+}
+
+void
+PanelClient::set_ise_language (int language)
+{
+ m_impl->set_ise_language (language);
+}
+
+void
+PanelClient::set_caps_mode (int mode)
+{
+ m_impl->set_caps_mode (mode);
+}
+
+void
+PanelClient::send_will_show_ack (void)
+{
+ m_impl->send_will_show_ack ();
+}
+
+void
+PanelClient::send_will_hide_ack (void)
+{
+ m_impl->send_will_hide_ack ();
+}
+
+void
+PanelClient::set_hardware_keyboard_mode (void)
+{
+ m_impl->set_hardware_keyboard_mode ();
+}
+
+void
+PanelClient::send_candidate_will_hide_ack (void)
+{
+ m_impl->send_candidate_will_hide_ack ();
+}
+
+bool
+PanelClient::get_client_id (int &client_id)
+{
+ return m_impl->get_client_id (client_id);
+}
+
+void
+PanelClient::register_client (int client_id)
+{
+ m_impl->register_client (client_id);
+}
+
void
PanelClient::reset_signal_handler (void)
{
}
Connection
-PanelClient::signal_connect_update_client_id (PanelClientSlotInt *slot)
+PanelClient::signal_connect_update_ise_input_context (PanelClientSlotIntInt *slot)
+{
+ return m_impl->signal_connect_update_ise_input_context (slot);
+}
+
+Connection
+PanelClient::signal_connect_update_isf_candidate_panel (PanelClientSlotIntInt *slot)
{
- return m_impl->signal_connect_update_client_id (slot);
+ return m_impl->signal_connect_update_isf_candidate_panel (slot);
}
} /* namespace scim */
*
* Modifications by Samsung Electronics Co., Ltd.
* 1. Add new signals
- * a. m_signal_select_aux, m_signal_reset_keyboard_ise and m_signal_update_client_id
+ * a. m_signal_select_aux, m_signal_reset_keyboard_ise
* b. m_signal_update_candidate_item_layout and m_signal_update_displayed_candidate_number
* c. m_signal_get_surrounding_text and m_signal_delete_surrounding_text
* d. m_signal_show_preedit_string, m_signal_hide_preedit_string, m_signal_update_preedit_string and m_signal_update_preedit_caret
* e. m_signal_candidate_more_window_show, m_signal_candidate_more_window_hide, m_signal_longpress_candidate
+ * f. m_signal_update_ise_input_context, m_signal_update_isf_candidate_panel
* 2. Add new interface APIs in PanelClient class
* a. update_cursor_position () and update_surrounding_text ()
* b. expand_candidate (), contract_candidate () and set_candidate_style ()
- * c. reset_input_context () and turn_on_log
+ * c. reset_input_context () and turn_on_log ()
+ * d. get_client_id () and register_client ()
*
* $Id: scim_panel_client.h,v 1.4 2005/06/26 16:35:33 suzhe Exp $
*/
void expand_candidate (int icid);
void contract_candidate (int icid);
void set_candidate_style (int icid, ISF_CANDIDATE_PORTRAIT_LINE_T portrait_line, ISF_CANDIDATE_MODE_T mode);
+ void show_ise (int client_id, int icid, void *data, int length, int *input_panel_show);
+ void hide_ise (int client_id, int icid);
+ void show_control_panel (void);
+ void hide_control_panel (void);
+ void set_imdata (const char* data, int len);
+ void get_imdata (char* data, int* len);
+ void get_ise_window_geometry (int* x, int* y, int* width, int* height);
+ void get_candidate_window_geometry (int* x, int* y, int* width, int* height);
+ void get_ise_language_locale (char **locale);
+ void set_return_key_type (int type);
+ void get_return_key_type (int &type);
+ void set_return_key_disable (int disabled);
+ void get_return_key_disable (int &disabled);
+ void set_layout (int layout);
+ void get_layout (int* layout);
+ void set_ise_language (int language);
+ void set_caps_mode (int mode);
+ void send_will_show_ack (void);
+ void send_will_hide_ack (void);
+ void set_hardware_keyboard_mode (void);
+ void send_candidate_will_hide_ack (void);
+ bool get_client_id (int &client_id);
+ void register_client (int client_id);
+
/** @} */
public:
Connection signal_connect_longpress_candidate (PanelClientSlotInt *slot);
/**
- * @brief Signal: update client ID
+ * @brief Signal: update ise input context
+ *
+ * slot prototype: void update_ise_input_context (int context, int type, int value);
+ */
+ Connection signal_connect_update_ise_input_context (PanelClientSlotIntInt *slot);
+
+ /**
+ * @brief Signal: update isf candidate panel
*
- * slot prototype: void update_client_id (int context, int client_id);
+ * slot prototype: void update_isf_candidate_panel (int context, int type, int value);
*/
- Connection signal_connect_update_client_id (PanelClientSlotInt *slot);
+ Connection signal_connect_update_isf_candidate_panel (PanelClientSlotIntInt *slot);
/** @} */
};
const int SCIM_TRANS_CMD_PANEL_CHANGE_FACTORY = 522;
const int ISM_TRANS_CMD_PANEL_RESET_KEYBOARD_ISE = 523;
const int ISM_TRANS_CMD_PANEL_UPDATE_KEYBOARD_ISE = 524;
-const int ISM_TRANS_CMD_PANEL_UPDATE_CLIENT_ID = 525;
// Helper Client To Panel
const int SCIM_TRANS_CMD_PANEL_REGISTER_HELPER = 540;
const int ISM_TRANS_CMD_HIDE_ISE_PANEL = 1001;
const int ISM_TRANS_CMD_SHOW_ISF_CONTROL = 1002;
const int ISM_TRANS_CMD_HIDE_ISF_CONTROL = 1003;
-const int ISM_TRANS_CMD_GET_LANGUAGE_LIST = 1004;
-const int ISM_TRANS_CMD_GET_ISE_LANGUAGE = 1005;
-const int ISM_TRANS_CMD_SET_ISF_LANGUAGE = 1006;
-const int ISM_TRANS_CMD_GET_ALL_LANGUAGE_LIST = 1007;
-const int ISM_TRANS_CMD_RESET_ISE_OPTION = 1008;
-const int ISM_TRANS_CMD_SET_ACTIVE_ISE_BY_UUID = 1009;
-const int ISM_TRANS_CMD_GET_ACTIVE_ISE = 1010;
-const int ISM_TRANS_CMD_GET_ISE_LIST = 1011;
-const int ISM_TRANS_CMD_GET_ISE_INFORMATION = 1012;
-const int ISM_TRANS_CMD_SEND_WILL_SHOW_ACK = 1013;
-const int ISM_TRANS_CMD_SEND_WILL_HIDE_ACK = 1014;
-const int ISM_TRANS_CMD_RESET_DEFAULT_ISE = 1015;
-const int ISM_TRANS_CMD_SEND_CANDIDATE_WILL_HIDE_ACK = 1016;
+const int ISM_TRANS_CMD_RESET_ISE_OPTION = 1004;
+const int ISM_TRANS_CMD_SET_ACTIVE_ISE_BY_UUID = 1005;
+const int ISM_TRANS_CMD_GET_ACTIVE_ISE = 1006;
+const int ISM_TRANS_CMD_GET_ISE_LIST = 1007;
+const int ISM_TRANS_CMD_GET_ISE_INFORMATION = 1008;
+const int ISM_TRANS_CMD_SEND_WILL_SHOW_ACK = 1009;
+const int ISM_TRANS_CMD_SEND_WILL_HIDE_ACK = 1010;
+const int ISM_TRANS_CMD_RESET_DEFAULT_ISE = 1011;
+const int ISM_TRANS_CMD_SET_HARDWARE_KEYBOARD_MODE = 1012;
+const int ISM_TRANS_CMD_SEND_CANDIDATE_WILL_HIDE_ACK = 1013;
+const int ISM_TRANS_CMD_GET_PANEL_CLIENT_ID = 1014;
+const int ISM_TRANS_CMD_REGISTER_PANEL_CLIENT = 1015;
/* IMControl to ISE */
const int ISM_TRANS_CMD_SET_RETURN_KEY_DISABLE = 1120;
const int ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE = 1121;
-/* ISE to IMControl */
-const int ISM_TRANS_CMD_UPDATE_ISE_HIDED = 1127;
-const int ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT = 1128;
-
-/* Panel to IMControl */
-const int ISM_TRANS_CMD_ISE_PANEL_SHOWED = 1130;
-const int ISM_TRANS_CMD_ISE_PANEL_HIDED = 1131;
-const int ISM_TRANS_CMD_ISF_CONTROL_SHOWED = 1132;
-const int ISM_TRANS_CMD_ISF_CONTROL_HIDED = 1133;
-const int ISM_TRANS_CMD_UPDATE_ISF_CANDIDATE_PANEL = 1134;
-const int ISM_TRANS_CMD_UPDATE_ISE_STYLE = 1135;
-const int ISM_TRANS_CMD_ISE_CHANGED = 1136;
+/* ISE/Panel to IMControl */
+const int ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT = 1151;
+const int ISM_TRANS_CMD_UPDATE_ISF_CANDIDATE_PANEL = 1152;
/* ISE to Panel */