void* FcitxUnikeyCreate(FcitxInstance* instance) { FcitxUnikey* unikey = (FcitxUnikey*) fcitx_utils_malloc0(sizeof(FcitxUnikey)); if (!LoadUnikeyConfig(&unikey->config)) { free(unikey); return NULL; } unikey->owner = instance; unikey->preeditstr = new std::string; union { short s; unsigned char b[2]; } endian; endian.s = 0x1234; if (endian.b[0] == 0x12) unikey->conv = iconv_open("utf-8", "ucs-4be"); else unikey->conv = iconv_open("utf-8", "ucs-4le"); FcitxIMIFace iface; memset(&iface, 0, sizeof(FcitxIMIFace)); iface.Init = FcitxUnikeyInit; iface.ResetIM = FcitxUnikeyReset; iface.DoInput = FcitxUnikeyDoInput; iface.ReloadConfig = ReloadConfigFcitxUnikey; iface.Save = FcitxUnikeySave; FcitxInstanceRegisterIMv2( instance, unikey, "unikey", _("Unikey"), "unikey", iface, 1, "vi" ); UnikeySetup(); InitializeBar(unikey); InitializeMenu(unikey); ConfigUnikey(unikey); FcitxIMEventHook hk; hk.arg = unikey; hk.func = FcitxUnikeyResetUI; FcitxInstanceRegisterResetInputHook(instance, hk); return unikey; }
void ibus_unikey_init(IBusBus* bus) { UnikeySetup(); config = ibus_bus_get_config(bus); g_signal_connect(config, "value-changed", G_CALLBACK(ibus_unikey_config_value_changed), NULL); mcap_running = TRUE; pthread_mutex_init(&mutex_mcap, NULL); pthread_mutex_trylock(&mutex_mcap); // lock mutex after init so mouse capture not start pthread_create(&th_mcap, NULL, &thread_mouse_capture, NULL); pthread_detach(th_mcap); }
void* FcitxUnikeyCreate(FcitxInstance* instance) { FcitxUnikey* unikey = (FcitxUnikey*) fcitx_utils_malloc0(sizeof(FcitxUnikey)); if (!LoadUnikeyConfig(&unikey->config)) { free(unikey); return NULL; } unikey->owner = instance; unikey->preeditstr = new std::string; FcitxIMIFace iface; memset(&iface, 0, sizeof(FcitxIMIFace)); iface.Init = FcitxUnikeyInit; iface.ResetIM = FcitxUnikeyReset; iface.DoInput = FcitxUnikeyDoInput; iface.ReloadConfig = ReloadConfigFcitxUnikey; iface.Save = FcitxUnikeySave; FcitxInstanceRegisterIMv2( instance, unikey, "unikey", _("Unikey"), "unikey", iface, 1, "vi" ); UnikeySetup(); InitializeBar(unikey); InitializeMenu(unikey); ConfigUnikey(unikey); FcitxIMEventHook hk; hk.arg = unikey; hk.func = FcitxUnikeyResetUI; FcitxInstanceRegisterResetInputHook(instance, hk); return unikey; }
static void start_component (void) { GList* engines; GList* p; IBusComponent* component; ibus_init (); UnikeySetup (); bus = ibus_bus_new (); g_signal_connect (bus, "disconnected", G_CALLBACK(ibus_disconnected_cb), NULL); component = ibus_unikey_get_component (); factory = ibus_factory_new (ibus_bus_get_connection (bus)); engines = ibus_component_get_engines (component); for (p = engines; p != NULL; p = p->next) { IBusEngineDesc* engine = (IBusEngineDesc*)p->data; #if IBUS_CHECK_VERSION(1,3,99) ibus_factory_add_engine (factory, ibus_engine_desc_get_name(engine), IBUS_TYPE_UNIKEY_ENGINE); #else ibus_factory_add_engine (factory, engine->name, IBUS_TYPE_UNIKEY_ENGINE); #endif } if (ibus) ibus_bus_request_name (bus, "org.freedesktop.IBus.Unikey", 0); else ibus_bus_register_component (bus, component); g_object_unref (component); ibus_unikey_init (bus); ibus_main (); ibus_unikey_exit (); }
void ibus_unikey_init(IBusBus* bus) { UnikeySetup(); config = ibus_bus_get_config(bus); }