QStringList QInputContextPluginHangul::keys() const
{
    int n = hangul_ic_get_n_keyboards();

    QStringList keys;

    for (int i = 0; i < n; ++i) {
	const char* id = hangul_ic_get_keyboard_id(i);

	keys += QString("hangul").append(id);
    }

    return keys;
}
QHangulPlatformInputContext::QHangulPlatformInputContext(const QString &keyboardType) {
    int i, n;
    n = hangul_ic_get_n_keyboards();

    m_hic = NULL;
    for(i = 0; i < n; i++) {
        const char *s = hangul_ic_get_keyboard_id(i);
        if (keyboardType == s) {
            m_hic = hangul_ic_new(s);
            break;
        }
    }

    if (m_hic == NULL) {
        m_hic = hangul_ic_new("2");
    }
    hangul_ic_connect_callback(m_hic, "transition", (void*)onTransition, NULL);
    m_candidateList = NULL;
    m_focusObject = NULL;
}
QString QInputContextPluginHangul::displayName( const QString &key )
{
    int i;
    int n;
    const char* name;

    QString id = key.mid(sizeof("hangul") - 1, -1);

    n = hangul_ic_get_n_keyboards();
    for (i = 0; i < n; ++i) {
	const char* s = hangul_ic_get_keyboard_id(i);

	if (id == s) {
	    name = hangul_ic_get_keyboard_name(i);
	    return QString::fromUtf8(name);
	}
    }

    return "";
}