示例#1
0
文件: test-client.c 项目: hychen/ibus
static void
_bus_disconnected_cb (IBusBus   *ibusbus,
                      BusTestClient *client)
{
    g_assert (IBUS_IS_BUS (ibusbus));
    g_assert (BUS_IS_TEST_CLIENT (client));
    IDEBUG ("%s", __FUNCTION__);
    client->connected = FALSE;
    IDEBUG ("Disconnected ibus daemon");
}
示例#2
0
文件: test-client.c 项目: hychen/ibus
static void
_bus_disabled_cb (IBusInputContext  *ibuscontext,
                  BusTestClient         *client)
{
    g_assert (IBUS_IS_INPUT_CONTEXT (ibuscontext));
    g_assert (BUS_IS_TEST_CLIENT (client));
    IDEBUG ("%s", __FUNCTION__);
    client->enabled = FALSE;
    IDEBUG ("Disabled ibus engine");
}
示例#3
0
文件: test-client.c 项目: hychen/ibus
gboolean
bus_test_client_send_key (BusTestClient *client,
                     guint      keysym)
{
    gboolean is_modifier = _is_modifier_key (keysym);
    gint16 keycode;
    guint state;

    if (is_modifier) {
        IDEBUG ("key: %d is modifier.", keysym);
        gboolean is_modifier_set = _is_modifier_set (client, keysym);
        keycode = _get_keysym_to_keycode (keysym);
        state = _get_modifiers_to_mask (client);

        if (is_modifier_set) {
            state |= IBUS_RELEASE_MASK;
        }
        ibus_input_context_process_key_event (client->ibuscontext,
                                              keysym,
                                              keycode,
                                              state);
        _store_modifier_state (client, keysym);
    } else {
        IDEBUG ("key: %d is not modifier.", keysym);
        gboolean is_upper = !gdk_keyval_is_lower (keysym);
        gboolean is_shift_set = _is_shift_set (client);

        if (is_upper && !is_shift_set) {
            _store_modifier_state (client, IBUS_Shift_L);
        }
        keycode = _get_keysym_to_keycode (keysym);
        state = _get_modifiers_to_mask (client);
        ibus_input_context_process_key_event (client->ibuscontext,
                                              keysym,
                                              keycode,
                                              state);
        state |= IBUS_RELEASE_MASK;
        ibus_input_context_process_key_event (client->ibuscontext,
                                              keysym,
                                              keycode,
                                              state);
        if (is_upper && !is_shift_set) {
            _store_modifier_state (client, IBUS_Shift_L);
        }
    }
    return TRUE;
}
示例#4
0
文件: test-client.c 项目: hychen/ibus
static void
bus_test_client_destroy (IBusObject *object)
{
    IDEBUG ("%s", __FUNCTION__);
    BusTestClient *client = BUS_TEST_CLIENT (object);

    g_object_unref (client->ibuscontext);
}
示例#5
0
文件: dict.c 项目: hhktony/dict
void print_link(pnode_t p)
{
	int i = 0;
	while (p != NULL)
	{
		IDEBUG("%ld:%s", p->pos, p->word);
		p = p->pnext;
		if ((i++) % 1000 == 0)
			getchar();
	}
}
示例#6
0
文件: test-client.c 项目: hychen/ibus
BusTestClient *
bus_test_client_new (void)
{
    IDEBUG ("%s", __FUNCTION__);
    BusTestClient *client = BUS_TEST_CLIENT (g_object_new (BUS_TYPE_TEST_CLIENT, NULL));

    if (client->connected && client->enabled) {
        return client;
    } else {
        return NULL;
    }
}
示例#7
0
文件: test-client.c 项目: hychen/ibus
static void
bus_test_client_init (BusTestClient *client)
{
    IDEBUG ("%s", __FUNCTION__);
    gchar *active_engine_name;
    client->connected = FALSE;
    client->enabled = FALSE;

    g_return_if_fail (ibus_bus_is_connected (_bus));
    client->connected = TRUE;

    client->ibuscontext = ibus_bus_create_input_context (_bus, "test-client");

    g_return_if_fail (client->ibuscontext != NULL);
    g_object_ref_sink (client->ibuscontext);

    g_signal_connect (client->ibuscontext,
                      "disabled",
                      G_CALLBACK (_bus_disabled_cb),
                      client);

    bus_test_client_clear_modifier (client);

    client->caps = IBUS_CAP_FOCUS;
    ibus_input_context_set_capabilities (client->ibuscontext, client->caps);

    active_engine_name = _get_active_engine_name ();

    g_return_if_fail (active_engine_name != NULL);
    IDEBUG ("engine:%s", active_engine_name);
    ibus_input_context_focus_in (client->ibuscontext);
    ibus_input_context_set_engine (client->ibuscontext, active_engine_name);
    g_free (active_engine_name);

    ibus_input_context_enable (client->ibuscontext);
    client->enabled = TRUE;
}
示例#8
0
文件: test-client.c 项目: hychen/ibus
static void
bus_test_client_class_init (BusTestClientClass *klass)
{
    IDEBUG ("%s", __FUNCTION__);

    IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass);

    ibus_object_class->destroy = bus_test_client_destroy;

    /* init display object */
    if (_xdisplay == NULL) {
        _xdisplay = XOpenDisplay (gdk_display_get_name (gdk_display_get_default ()));
    }

    /* init bus object */
    if (_bus == NULL) {
        ibus_set_display (XDisplayString (_xdisplay));
        _bus = ibus_bus_new();
    }

    g_signal_connect (_bus, "disconnected", G_CALLBACK (_bus_disconnected_cb), NULL);
}
示例#9
0
文件: test-client.c 项目: hychen/ibus
gboolean
bus_test_client_is_connected (BusTestClient *client)
{
    IDEBUG ("%s", __FUNCTION__);
    return client->connected;
}
示例#10
0
文件: test-client.c 项目: hychen/ibus
gboolean
bus_test_client_is_enabled (BusTestClient *client)
{
    IDEBUG ("%s", __FUNCTION__);
    return client->enabled;
}