{
scim::KeyEvent key(keycode, keymask);
unsigned int ret;
+ char *dev_name = NULL;
+ Ecore_IMF_Device_Class dev_class;
+ Ecore_IMF_Device_Subclass dev_subclass;
+
+ if (ime_device_info_get_name(dev_info, &dev_name) == IME_ERROR_NONE) {
+ key.dev_name = dev_name;
+ }
+
+ if (ime_device_info_get_class(dev_info, &dev_class) == IME_ERROR_NONE) {
+ key.dev_class = dev_class;
+ }
+
+ if (ime_device_info_get_subclass(dev_info, &dev_subclass) == IME_ERROR_NONE) {
+ key.dev_subclass = dev_subclass;
+ }
+
if (g_keyboard_state.visible_state)
ise_process_key_event(key, ret);
else
ret = FALSE;
+ if (dev_name)
+ free(dev_name);
+
return ret;
}